Cỏc kiểu dữ liệu trong Java

Một phần của tài liệu giáo trình về java 2008 (Trang 29)

II.1 Cỏc kiểu dữ liệu số nguyờn

int 4 bytes Từ –2,147,483,648 đến 2,147,483, 647 short 2 bytes Từ –32,768 đến 32,767 long 8 bytes Từ –9,223,372,036,854,775,808 đến9,223,372,036,854,775,807 byte 1 byte Từ –128 đến 127 II.2 Cỏc kiểu số thực

Java cú 2 kiểu số thực dấu chấm động:

float 4 bytes Xấp xỉ ±3.40282347E+38F

double 8 bytes Xấp xỉ ±1.79769313486231570E+308

Số dấu chấm động cú thể nhận cỏc giỏ trị:  Vụ cực õm/dương.

 Số õm/dương.  Số 0.

 NaN (khụng là một số = 0.0/0.0f).

II.3 Kiểu ký tự (character)

Là kiểu dữ liệu về ký tự.

Một biến char sẽ cú một giỏ trị là một ký tự Unicode.

II.4 Kiểu logic (boolean)

Là kiểu dữ liệu chỉ cú hai giỏ trị true và false dựng để xỏc định kết quả một điều kiện. Chỳ ý: kiểu boolean khụng được thể hiện là 0 và 1.

II.5 Kiểu chuỗi

Java xem chuỗi là một đối tượng.

Biến đối tượng chuỗi thường được khai bỏo từ lớp String nằm trong gúi java.lang.String.

II.6 Chuyển đổi giữa cỏc kiểu số

byte short int

long

double

float char

III. Khai bỏo biến và hằng trong Java III.1 Quy tắc đặt tờn biến III.1 Quy tắc đặt tờn biến

Khi khai bỏo cỏc biến trong chương trỡnh Java, ta cần chỳ ý tuõn thủ cỏc điểm sau:  Chỉ bắt đầu bằng một ký tự (chữ), một dấu gạch dưới (_) hay một dấu dollard ($).  Khụng cú khoảng trống giữa tờn.

 Sau ký tự đầu, cú thể dựng cỏc ký tự (chữ), ký tự số, dấu dollard, dấu gạch dưới.  Khụng trựng với cỏc từ khoỏ.

III.2 Khai bỏo biến

Cỏc biến trong Java rơi vào hai trường hợp:

 Toỏn học: Cỏc biến cú kiểu nguyờn thủy của Java đều thuộc dạng này. Sau khi khai bỏo, biến được cấp phỏt một vựng nhớ cố định tựy theo kớch thước của kiểu dữ liệu của biến đú.

 Địa chỉ: Cỏc biến đối tượng được lưu ở dạng này. Biến chỉ lưu giỏ trị địa chỉ đầu của một vựng nhớ được cấp phỏt cho đối tượng.

Vớ dụ khai bỏo cho từng kiểu biến toỏn học: byte i; short j; int k; long x; float y; double z; char ch; boolean bQuit;

Cỏc biến địa chỉ thường sử dụng để lưu trữ cỏc địa chỉ mảng, con trỏ, đối tượng. Vớ dụ về khai bỏo biến kiểu địa chỉ:

String strHello; //khai bỏo một chuỗi

AudioClip music; // vớ dụ lớp của AudioClip Khởi động giỏ trị cho biến

Vớ dụ về khởi động biến ngay lỳc khai bỏo: byte i = 3; short j = 10; int k = 1; long x = 1234567L; float y = 1.25f; double z = 23.45d; char ch = „T‟; boolean bQuit = true;

String strHello = “Hello everybody”;

Ở đõy cần chỳ ý rằng khi khởi tạo giỏ trị cho cỏc kiểu số nờn xỏc định rừ kiểu dữ liệu của giỏ trị.

Cỏc giỏ trị mặc định

byte 0

short 0

long 0L; float 0.0f; double 0.0d;

char null;

boolean false; Cỏc biến dẫn suất null

III.3 Biến kiểu mảng

Khi cần làm việc với một tập cỏc giỏ trị cú cựng kiểu dữ liệu, ta cú thể sử dụng một biến mảng để lưu trữ chỳng.

Khai bỏo:

Một biến mảng được khai bỏo theo hai cỏch:  Sử dụng cặp ngoặc vuụng đặt sau tờn biến.  Sử dụng cặp ngoặc vuụng đặt sau kiểu dữ liệu. Vớ dụ:

int [] intArray; hoặc int intArray[]; đều cho ta một mảng số nguyờn cú tờn la intArray. Thụng thường ta dựng kiểu khai bỏo thứ nhất để cú thể khai bỏo nhiều biến mảng cựng kiểu dữ liệu:

int [] intArray1, intArray2, intArray3;

Định vị mảng

Sau khi khai bỏo, bản thõn mảng chưa xỏc định hay chưa được định vị vỡ chưa được cấp phỏt vựng nhớ . Do đú, mảng cần được cấp phỏt vựng nhớ trước khi sử dụng.

Dựng từ khoỏ new để định vị cho một mảng trong vựng nhớ, vớ dụ: int IntArray[] = new int[100];//tạo mảng 100pt

float floatArray[];

floatArray = new float[10]; //tạo mảng 10 pt Khởi tạo giỏ trị cho mảng

Ta cũng cú thể khởi tạo một mảng bằng cỏch liệt kờ cỏc phần tử của nú, vớ dụ: int IntArray[] = {1, 2, 3, 4, 5};

char [] charArray = {„a‟, „b‟, „c‟}; IntArray[] = new int[] {1, 2, 3, 4, 5}; Truy cập cỏc phần tử của mảng

Cỏc phần tử trong một mảng luụn được đỏnh số bắt đầu từ số 0. Kiểu dữ liệu của chỉ số là kiểu int. Tuy nhiờn nếu dựng kiểu char thỡ Java sẽ tự động chuyển sang mó ASCII tương ứng. Vớ dụ b[„a‟] tương ứng với b[97].

Phần tử đầu tiờn là phần tử thứ 0, và phần tử cuối cựng của một mảng cú n phần tử là n-1. Cỏc phần tử của mảng được truy cập một cỏch trực tiếp bằng chỉ số của nú.

Vớ dụ:

int IntArray[] = {1, 2, 3, 4, 5}; int a = IntArray[2];//a=3 int b = IntArray[0];//b=1

Ta cú thể gỏn cỏc giỏ trị của mảng thụng qua truy nhập vào từng phần tử của mảng. Vớ dụ:

int intList[] = new int[10]; //tạo mảng 10pt

intList[0] = 99; //Phần tử thứ 0 (đầu tiờn) cú giỏ trị là 99. for (sort i=1; i<10; i++)

intList[i] = 1; //cỏc phần tử cũn lại bằng 1 Vớ dụ: int x, y, k; x = intList[0]; //x=99 y = intList[5]; //y=1 k = intList[y+1]; //k=intList[6]=1 Mảng nhiều chiều:

Khai bỏo mảng 2 chiều:

<kiểu phần tử>[][] <tờn mảng> = {<danh sỏch phần tử>}; Vớ dụ: int[][] b = {{1,2},{3,4}};

Đõy là khai bỏo và khởi tạo giỏ trị cho một mạng 2 chiều kớch thước 2 x 2. {1,2} là cỏc phần tử của hàng 1; {3,4} là cỏc phần tử trờn hàng thứ 2.

Hoặc ta cú thể khai bỏo rừ số hàng và số cột của mảng: int b[][] = new int[ 3 ][ 4 ];

Thậm chớ ta cú thể khai bỏo một mảng 3 chiều hoặc hơn. int b[][][] = {{{1,2},{3,4}},{{5,6},{7,8}}};

Ta được b[0][0][0] =1; b[0][0][1]=2;b[1][1][1]=8;b[0][1][0]=3;

III.4 Hằng số (literal)

Là một giỏ trị khụng đổi được sử dụng trong chương trỡnh. Hằng số được biểu diễn như chớnh nú chứ khụng là một giỏ trị của biến hay một kết quả của biểu thức. Giỏ trị của hằng số khụng thể bị thay đổi.

Vớ dụ: Pi = 3.1415.

Tờn của hằng số được đặt tờn như tờn biến. Cỏch khai bỏo hằng cũng tương tự như biến nhưng cú dựng thờm từ khúa final:

<phạm vi> final <kiểu dữ liệu của hằng> <tờn hằng> = <giỏ trị> Vớ dụ: public final String mauda ="vang";

Hằng số cú thể là:

Hằng số nguyờn:

Hằng cú thể được biểu diễn dưới dạng thập phõn, bỏt phõn, thập lục phõn. Vớ dụ: biểu diễn số 15 dạng int: 15. dạng long: 15L. dạng bỏt phõn: 017. dạng thập lục phõn: 0xF. Hằng số thực:

Tương tự như hằng số nguyờn, để chỉ rừ hằng là float ta thờm vĩ ngữ “ f ” hay “F”, hằng là double ta thờm “d” hay “D”.

Hằng Boolean:

Một hằng số kiểu boolean cú giỏ trị là true hoặc false. Trong Java, cỏc giỏ trị 0 và 1

khụng được dựng thay thế cho false và true như trong C hoặc C++.

Hằng ký tự:

Là một ký tự đơn giản hay một chuỗi ESCAPE, hằng ký tự được đặt trong hai dấu ngoặc đơn „‟. Cỏc chuỗi ESCAPE:

„\b‟ : Xoỏ lựi. „\n‟ : Xuống dũng. „\t‟ : Tab ngang.

„\f‟ : đẩy trang. „\r‟ : dấu enter. „\”‟ : nhỏy kộp. „\’‟ : nhỏy đơn. „\\‟ : sổ ngược. „uxxxx‟: ký tự unicode. Vớ dụ:

System.out.println(“Xin chào bạn \n Nguyễn Văn A”); Sẽ in ra màn hỡnh kết quả:

Xin chào bạn Nguyễn Văn A

Hằng chuỗi ký tự:

Một hằng chuỗi ký tự cú thể cú 0 ký tự (hằng chuỗi rỗng) hay nhiều ký tự. Vớ dụ: “A String”, “” //chuỗi rỗng, “dong 1 \t\n dong 2”.

III.5 Phạm vi hoạt động của hằng và biến:

Khối lệnh Block 1 chứa 2 khối lệnh con Block 2, Block 3.

Biến hay hằng sẽ chỉ cú ý nghĩa trong phạm vi khối lệnh mà nú được khai bỏo.

IV. Cỏc toỏn tử và biểu thức

IV.1 Cỏc toỏn tử và thứ tự ưu tiờn

Cỏc toỏn tử thường sử dụng: Toỏn tử í nghĩa Vớ dụ = Gỏn x=10 != so sỏnh khỏc x!=5 > so sỏnh lớn hơn x>5 < so sỏnh nhỏ hơn x<20 >= lớn hơn hoặc bằng x>=10 <= nhỏ hơn hoặc bằng x<=10 + cộng y=x+1 - trừ y=x-1 * Nhõn y=x*3 / Chia y=x/3 { Block 1 } { Block 2 } { Block 3 }

% Lấy phần dư 10%3 = 1

++ tăng giỏ trị lờn 1 x++

-- giảm giỏ trị đi 1 x--

+= cộng kết hợp phộp gỏn x+=y tương đương x=x+y

-= trừ kết hợp phộp gỏn x-=y tương đương x=x-y

*= nhõn kết hợp phộp gỏn x*=y tương đương x=x*y

/= chia kết hợp phộp gỏn x/=y tương đương x=x/y

^ phộp XOR trờn bit x ^ y

| phộp OR trờn bit x | y

& phộp và trờn bit

! Toỏn tử logic NOT

&& Toỏn tử logic AND

|| Toỏn tử logic OR

= = So sỏnh bằng nhau

Thứ tự ưu tiờn:

( ), *, /, %, +, -,= =, !=, &, ^, |, &&, ||, =, %=, /=, *=, -=, +=

IV.2 Biểu thức

Biểu thức là sự kết hợp cỏc biến số, cỏc giỏ trị bởi cỏc toỏn tử hoặc cú thể là một phộp gỏn giỏ trị một biểu thức cho một biến số.

Vớ dụ: (x+3)/(y-2);

Cú 3 loại biểu thức chớnh là:

 Biểu thức số liờn kết cỏc biến số, cỏc hằng bằng cỏc phộp toỏn số, kết quả là một giỏ trị số.

 Biểu thức gỏn dựng để gỏn giỏ trị cho một biến, một hằng.  Biểu thức logic chỉ cho ra kết quả là cỏc giỏ trị true hay false.

Khi sử dụng cõu lệnh gỏn kết quả của một biểu thức cho một biến, ta cần chỳ ý tới vấn đề đồng nhất kiểu dữ liệu giữa hai vế để trỏnh mất thụng tin. Vớ dụ:

Double delta = 0.0d; //khai bỏo một biến số thực cú tờn delta delta = 1/ 100; // Gỏn cho delta kết quả của phộp chia 1 cho 100.

Trong tỡnh huống này, ta khụng thu được delta = 0.01 như mong đợi mà là delta =0. Lý do là cỏc số 1 và 100 đều được hiểu là cỏc số nguyờn và kết quả của phộp chia được tự động làm trũn thành một giỏ trị nguyờn trước khi gỏn cho delta. Để khắc phục tỡnh trạng này, ta cần xỏc định rừ cỏc số 1 và 100 là cỏc số double.

delta = 1d/100d;

V. Cỏc lệnh điều khiển rẽ nhỏnh V.1 Lệnh if

Lệnh if...{...}: là một phộp kiểm tra giỏ trị của một biểu thức boolean, nếu cho giỏ trị là

true thỡ khối lệnh sẽ được thực hiện. Cấu trỳc:

if <biểu thức boolean> {

}

Nếu biểu thức boolean đỳng, khối lệnh sẽ được thực hiện, cũn nếu biểu thức đú sai thỡ khối lệnh sẽ bị bỏ qua.

Vớ dụ:

public class dkIfThen {

public static void main(String[] args) { int x=1;

int y=x+1; if (x<y) {

System.out.println("x>y"); } }}

Dạng 2 của cõu lệnh if:

if <biểu thức boolean> { <khối lệnh 1>; } else { <khối lệnh 2>; }

Nếu biểu thức boolean đỳng thỡ <khối lệnh 1> được thực hiện, cũn nếu biểu thức boolean sai thỡ <khối lệnh 2> được thực hiện.

Vớ dụ:

public class dkIfThen {

public static void main(String[] args) { int x=1; int y=x-1; if (x<y) { System.out.println("x>y"); } else { System.out.println("x<y"); }}} V.2. Lệnh switch …case

Lệnh switch ... case ...: Cho phộp chọn nhiều trường hợp xảy ra của giỏ trị so sỏnh. Cấu trỳc:

switch <biểu thức>{

case <giỏ trị 1>: <khối lệnh 1>; break; case <giỏ trị 2>: <khối lệnh 2>; break; ...

case <giỏ trị n>: <khối lệnh n>; break; default: <khối lệnh default>; break; }

Một số chỳ ý khi sử dụng lệnh switch-case:

Nếu khụng sử dụng lệnh break mỗi khi kết thỳc cỏc khối lệnh thỡ sau khi thực hiện xong khối lệnh, cỏc lệnh tiếp theo sẽ được thực hiện.

VI. Cỏc lệnh lặp VI.1. Vũng lặp for

Khi muốn một khối lệnh được thực hiện với một số lần biết trước, ta cú thể sử dụng một vũng lặp for.

Cấu trỳc lệnh:

for([<khởi tạo>]; [<biểu thức kiểm tra>]; [<bước nhảy>]) {

<Khối lệnh>; }

Bắt đầu với giỏ trị <khởi tạo> của biến đếm, <khối lệnh> được thực hiện. Sau mỗi lần thực hiện xong <khối lệnh>, biến đếm thay đổi giỏ trị một lượng bằng <bước nhảy> và <biểu thức kiểm tra> được tớnh lại. Nếu biểu thức kiểm tra là true thỡ lại thực hiện khối lệnh, cũn nếu là false, vũng lặp chấm dứt.

Lưu đồ hoạt động của vũng lặp for như sau:

Vớ dụ: tớnh tổng 1 dóy số thực public class vdFor {

public static void main(String[] args) { double accounts[]={1.2,1.4,1.6}; double sum=0;

for (int i=0;i<accounts.length;i++){ sum+=accounts[i]; } System.out.println(sum); } Biểu thức kiểm tra Thực hiện khối lệnh Kết thỳc vũng for Biểu thức điều chỉnh

theo bước nhảy

Biểu thức biến điều khiển

false

}//kết quả là: 4.2

Cỏc vũng for cú thể được đặt lồng nhau nếu cần Vớ dụ:

for(int i=0; i<10; i++) { [cỏc cõu lệnh; ] for(int j=0; j<5; j++) { [cỏc cõu lệnh; ] ... } [cỏc cõu lệnh; ] } VI.2. Vũng lặp while

Khi một khối lệnh cần được thực hiện, thường là với một số lần khụng được biết trước, ta cú thể sử dụng vũng lặp while.

Cấu trỳc lệnh:

while <bt boolean> { <Khối lệnh>; }

Khối lệnh được thực hiện khi <bt boolean> cũn cú giỏ trị true.

Chỳ ý: trong khối lệnh phải cú cõu lệnh cú tỏc dụng ảnh hưởng tới kết quả <bt boolean>

để vũng lặp cú thể dừng.

Lưu đồ thực hiện:

VI.3. Vũng lặp do... while

Vũng lặp này cú ý nghĩa tương tự như vũng lặp while nhưng <khối lệnh> được thực hiện ngay ở vũng đầu tiờn mà chưa cần kiểm tra kết quả <biểu thức boolean>.

Bt boolean Cỏc cõu lệnh Cõu lệnh tiếp theo false true

Cấu trỳc lệnh: do {

<khối lệnh>;

} while <biểu thức boolean>;

Vũng lặp này cho thực hiện <khối lệnh> rồi mới kiểm tra <biểu thức boolean>. Nếu <biểu thức boolean> cú giỏ trị true thỡ tiếp tục thực hiện <khối lệnh>, nếu khụng sẽ dừng vũng lặp.

Vớ dụ tớnh tổng 10 số đầu tiờn: public class vdDoWhile {

public static void main(String[] args) { int x=1, sum=0; do{ sum+=x; x++; } while (x<11); System.out.println(sum); } } //kết quả là: 55 VI.4. Phộp nhảy

Trong một số trường hợp, việc thực hiện cỏc vũng lặp đụi khi khụng theo hết vũng mà cú thể dừng hoặc thoỏt khỏi vũng lặp.

Vớ dụ: Tỡm một giỏ trị nào đú trong một dóy 1000 phần tử. Khi thực hiện vũng lặp duyệt dóy, so sỏnh cỏc phần tử của dóy với giỏ trị cần tỡm từ phần tử đầu tiờn cho đến phần tử cuối cựng, nếu tỡm thấy phải thụi duyệt dóy ngay.

Việc nhảy ra khỏi vũng lặp được thực hiện với từ khoỏ break hoặc kết thỳc vũng hiện tại với lệnh continue.

Lệnh break

Lệnh này kết thỳc ngay vũng lặp trong cựng (nếu cú nhiều vũng lồng nhau) chứa nú. Vớ dụ: while <bt boolean 1>{ lệnh 1; lệnh 2; if <bt boolean 2> break; lệnh 3; } lệnh 4; Lệnh continue

Cho phộp chương trỡnh bỏ qua vũng hiện tại và nhảy đến vũng tiếp theo. Vớ dụ:

while <bt boolean 1>{ lệnh 1;

lệnh 2;

{ …….. continue; } lệnh 3; } lệnh 4;

Khi <bt boolean 2> cú giỏ trị true, lệnh continue được thực hiện, chương trỡnh sẽ khụng thực hiện tiếp <lệnh 3> mà quay lại kiểm tra <bt boolean 1>.

VII. Vào dữ liệu từ bàn phớm và xuất dữ liệu ra màn hỡnh VII.1. Lấy giỏ trị nhập vào từ bàn phớm VII.1. Lấy giỏ trị nhập vào từ bàn phớm

Để lấy giỏ trị mà người sử dụng nhập từ bàn phớm, ta làm theo cỏc bước sau:

1. Khai bỏo biến thuộc lớp Scanner”. Lớp Scanner chỉ được hỗ trợ từ phiờn bản Java 1.5 và nằm trong gúi java.util.

// Khai bỏo một biến Scanner cú tờn là “nhap”.

Java.util.Scanner nhap = new java.util.Scanner(System.in); 2. Lấy giỏ trị nhập vào:

System.out.print("What is your name? "); // In ra màn hỡnh một cõu hỏi tờn /* Khai bỏo và gỏn giỏ trị nhập từ bàn phớm cho một biến kiểu String cú tờn name.*/ String name = nhap.nextLine();

Để đọc 1 từ trong chuỗi nhập vào: String firstName = nhap.next(); Nếu đọc vào một số nguyờn: int Tuoi = nhap.nextInt();

Tương tự cho cỏc kiểu dữ liệu khỏc. Vớ dụ:

import java.util.*; public class InputTest {

public static void main(String[] args) {

Scanner nhap = new Scanner(System.in); // Lay gia trị nhap ho ten

System.out.print("What is your name? "); String name = nhap.nextLine();

// Lay gia tri nhap tiep theo

System.out.print("How old are you? "); int age = nhap.nextInt();

// Hien thi ket qua nhap tren man hinh

System.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1)); }

VII.2 Kết xuất dữ liệu ra màn hỡnh

Trong cỏc chương trỡnh vớ dụ trờn, ta đó biết dựng hàm System.out.print để in dữ liệu ra màn hỡnh. Tuy nhiờn, trong một số trường hợp ta cần định dạng dữ liệu xuất ra chẳng hạn như

Một phần của tài liệu giáo trình về java 2008 (Trang 29)

Tải bản đầy đủ (PDF)

(146 trang)