Kiểu dữ liệu cơ sở, hằng, biến

Một phần của tài liệu Bài giảng lập trình java phần 1 đh sư phạm kỹ thuật nam định (Trang 31 - 38)

Java cung cấp các kiểu dữ liệu cơ sở. Các kiểu dữ liệu này được dùng để tạo các kiểu dữ liệu dẫn xuất

- Kiểu số nguyên, Java có bốn loại số nguyên: byte, short, int, long

Kiểu Kích thước Giá trị nhỏ nhất Giá trị lớn nhất

byte 7 bits -128 127

Short 16 bits -32768 32767

21 long 62 bits -9.223.372.036.854 9.223.372.036.854 Bảng 1.3. Các kiểu số nguyên Các phép tính trên biến số nguyên gồm: Toán tử Phép toán == Bằng nhau != Không bằng > Lớn hơn < Nhỏhơn >= Lớn hơn hoặc bằng <= Nhỏhơn hoặc bằng + Cộng - Trừ * Nhân / Chia % Lấy phần dư của phép chia ++ Tăng 1 -- Giảm 1

~ Phép toán phủđịnh trên bit & Phép toán AND trên bit

| Phép toán OR trên bit

^ Phép toán XOR trên bit

<< Dịch chuyển sang trái n bit >> Dịch chuyển sang phải n bit

>>> Dịch chuyển sang phải và điền 0 vào bit trống

Bảng 1.4. Các phép toán trên kiểu số nguyên

Nếu hai toán hạng đều dạng long thì kết quả sẽ là dạng long 64 bits. Nếu có một toán hạng không phải dạng long thì sẽđược chuyển sang dạng long trước khi thực hiện

22

phép toán. Nếu cả hai toán hạng không phải là long (byte, short) thì sẽđược đổi sang int trước khi thực hiện phép toán. Trong Java không thể chuyển biến boolean sang int như các ngôn ngữ khác.

-Kiểu số thực, Java có 2 loại số thực là: float và double

Kiểu Kích cỡ Giá trị nhỏ nhất Giá trị lớn nhất

float 32 bits -3.40292347E+38 3.40292347E+38

double 64 bits -1.79769313486231570E+308 1.79769313486231570E+308

Bảng 1.5. Các loại số thực Các phép toán trên kiểu số thực gồm: Toán tử Phép toán == Bằng nhau != Không bằng > Lớn hơn < Nhỏhơn >= Lớn hơn hoặc bằng <= Nhỏhơn hoặc bằng + Cộng - Trừ * Nhân / Chia % Lấy phần dư ++ Tăng 1 -- Giảm 1 Bảng 1.6. Các phép toán trên kiểu số thực

Biến kiểu float và double có thể được chuyển sang các kiểu dữ liệu số khác nhưng không thể chuyển sang kiểu dữ liệu boolean.Khi thực hiện phép tính java sẽ chuyển các toán hạng về kiểu dữ liệu cao nhất rồi mới tính toán. Java đưa ra một số thực NaN (Not a Number) dùng cho các giá trị không thể xác định được trong khoảng từ vô cực âm đến vô cực dương. Nó giải quyết lỗi phép chia cho 0.

23

Char là kiểu dữ liệu về ký tự, một biến char sẽ có giá trị là một ký tự Unicode, có kích thước 16 bits từ„\u0000‟ đến „\uFFFF‟.

-Kiểu dữ liệu boolean:

Boolean là kiểu dữ liệu chỉ có hai giá trị là True và False dùng để xác định kết quả một điều kiện và có kích thước là một bit. Do đó ta không thể chuyển kiểu giữa boolean sang int hay ngược lại .

Giá trị mặc định:

Một lỗi hay gặp phải khi lập trình là sử dụng những biến chưa khởi tạo. Điều này tạo ra những lỗi không thể đoán trước (như định dạng lại đĩa, chép đè lên CMOS), bởi vì chúng có thể nhận bất kỳ giá trị nào trong vùng nhớ khi chương trình bắt đầu chạy. Java đã tránh được lỗi trên bằng cách luôn khởi tạo giá trị mặc định cho các biến. Các giá trịđược xác định phụ thuộc vào kiểu của biến theo bảng sau:

Kiểu Giá trị mặc định Byte 0 Short 0 Int 0 Long 0L float 0.0f double 0.0d char null boolean false Các biến dẫn xuất null Bảng 1.7. Giá trị mặc định

-Chuyển kiểu (type casting):

Trong một biểu thức của chương trình không phải lúc nào các biến cũng thuộc về cùng một kiểu dữ liệu. Vì vậy để các biến thuộc về cùng một kiểu dữ liệu nào đó Java cho phép chuyển kiểu đối với một biến ở 2 hướng: chuyển kiểu hẹp (Narrowing conversion – từ kiểu lớn về kiểu nhỏ) và chuyển kiểu nới rộng (Widening conversion - từ kiểu nhỏ về kiểu lớn)

Ví dụ 1.4:

class TypeCast

{ public static void main (String args[]) {

24

System.out.println (“a = “+a); // a = 12.0

float b = 15.682f; int c = (int) b + 20;

System.out.println (“c = “+c); // c = 35

} }

chuyển kiểu mở rộng(Widening) – quá trình làm tròn số theo hướng mở rộng không làm mất thông tin về độ lớn của mỗi giá trị.Biến đổi theo hướng mở rộng chuyển một giá trị sang một dạng khác có độ rộng phù hợp hơn so với nguyên bản. Biến đổi theo hướng lại thu nhỏ lại (Narrowing) làm mất thông tin vềđộ lớn của giá trị được chuyển đổi. Chúng không được thực hiện khi thực hiện phép gán. Ở ví dụ trên giá trị thập phân sau dấu phảy sẽ bị mất.

b) Đặt tên (Identifier)

Một tên là một chuỗi các ký tự gồm các chữ, số, dấu gạch dưới (_), và dấu dollar ($).

Việc đặt tên cho một hằng và biến cần theo những quy tắc sau:

- Ký tựđầu phải là ký tự chữ, dấu _, hay dấu $.Không thể bắt đầu bởi một số - Sau ký tựđầu, có thể dùng các ký tự chữ, ký số, dấu _, dấu $

- Không được có khoảng trắng

- Không được trùng với các từ khóa

c) Hằng (literal):

Hằng là một giá trị thực được sử dụng trong chương trình, được biểu diễn như chính nó chứ không phải là một giá trị của một biến hay một kết quả của một biểu thức. Ví dụ hằng 3.14159 thay cho số Pi.

-Khai báo hằng:

Để khai báo hằng ta dùng từ khoá final đặt trước kiểu dữ liệu và tên hằng cú pháp như sau:

Cú pháp:

final datatype identifier =value [, identifier=value[,…] ]; Trong đó

- datatype là kiểu dữ liệu - identifier là tên hằng - value là giá trị của hằng

Ví dụ sau sẽ khai báo một hằng tên PI thuộc kiểu số thực (float) có giá trị là 3.14159

25 final float PI = 3.14159;

- Có các loại hằng sau: Hằng số nguyên:

Hằng số nguyên có thể được biểu diễn dưới dạng thập phân (decimal), bát phân (octal), thập lục phân (hexadecimal).

Integer Long Octal Hexadecimal

0 0L 0 0x0 1 1L 01 0x1 10 10L 012 0xA 15 15L 017 0xF 16 16L 020 0x10 100 100L 0144 0x64 Bảng 1.8. Hằng số nguyên Hằng số thực:

Các hằng thực có thể biểu diễn bằng dạng thập phân như 5.1693 hay dạng mũ như 6.2e23. Để chỉ rõ hằng kiểu float ta thêm “f” hay “F” phía sau hằng, hoặc hằng thực ta thêm “d” hay “D”.

Hằng ký tự:

Một hằng ký tự là một ký tựđơn hay một chuỗi ESCAPE, được đặt trong hai dấu nháy đơn. Chuỗi ESCAPE được dùng để biểu diễn các ký tựđặc biệt như tab („\t‟) hay một động tác đặc biệt như xuống dòng („\n‟). Ta có bảng liệt kê các chuỗi ESCAPE thường dùng: Chuỗi Ý nghĩa \b Xóa lùi \t Tab ngang \n Xuống hàng \f Đẩy trang \r Dấu enter \” Dấu nháy kép

26

\‟ Dấu nháy đơn

\\ Dấu sổngược

\uxxxx Ký tự Unicode

Bảng 1.9. Các hằng số thực

Hằng chuỗi ký tự:

Mặc dù Java không cung cấp kiểu dữ liệu cơ sở string, ta vẫn có thể khai báo một hằng chuỗi trong chương trình. Một hằng chuỗi được đặt giữa 2 dấu nháy kép, nó có thể là hằng chuỗi rỗng hay có nhiều ký tự.

Khi sử dụng một hằng chuỗi ký tự, ta xem như đã tạo ra một đối tượng của lớp String và không cần chú ý đến các thao tác về bộ nhớnhư tạo và xóa các vùng nhớ cho các hằng chuỗi ký tự. Java có một hệ thống quản lý vùng nhớ tựđộng làm việc này.

d. Biến

Các ứng dụng sử dụng các biến để lưu trữ các dữ liệu cần thiết hoặc các dữ liệu được tạo ra trong quá trình thực thi chương trình. Các biến được xác định bởi một tên biến và có một phạm vi tác động. Phạm vi tác động của biến được xác định một cách rõ ràng trong chương trình.

Việc khai báo một biến bao gồm 3 thành phần: kiểu biến, tên của nó và giá trị ban đầu được gán cho biến (không bắt buộc). Để khai báo nhiều biến ta sử dụng dấu phẩy để phân cách các biến. Khi khai báo biến, luôn nhớ rằng Java phân biệt chữ thường và chữ in hoa (case -sensitive).

Cú pháp:

Datatype identifier [=value] [, identifier[=value]… ];

Để khai báo một biến nguyên (int) có tên là counter dùng để lưu giá trịban đầu là 1, ta có thể thực hiện như sau:

int counter = 1;

Java có những yêu cầu hạn chế đặt tên biến mà bạn có thể gán giá trị vào. Những hạn chếnày cũng giống các hạn chếkhi đặt tên cho các định danh mà ta đã thảo luận ở các phần trước của chương này.

Java cho phép khai báo biến khá linh hoạt như sau: char ch; //khai báo một biến kiểu char

int count, num ; //khai báo hai biến trên cùng dòng int count =10; char ch =‟A‟; //khai báo và khởi tạo biến int num = 012; //gán giá trị bát phân

int num = 0x18; // gán giá trị thập lục phân

27

char ch=‟\u0020‟; //khai báo và khởi tạo một giá trị Unicode cho biến ch int a=5, b=10; //khai báo và khởi tạo nhiều biến cùng lúc

int c=a+b; //khởi tạo biến bằng biểu thức

e) Phạm vi hoạt động của hằng và biến

Tất cả các biến trong ứng dụng Java đều có một phạm vi (scope), hay là các đặc trưng xác định nơi có thể truy cập biến chỉ bằng tên của nó. Nếu biến nằm trong vùng phạm vi, thì có thể tương tác với nó bằng tên. Nếu biến nằm ngoài vùng phạm vi thì điều này là không thể.

Có nhiều mức phạm vi trong ngôn ngữ Java, được xác định bởi vị trí khai báo của biến ởđâu.Đoạn mã dưới đây chỉ ra vị trí khai báo các biến:

public class SomeClass { member variable scope

public void SomeMethod(parameters ) { method parameter scope local variable declaration(s) local scope someStatementWithACodeBlock { block scope } } }

Phạm vi của một biến trải rộng từ đầu đoạn (hoặc đầu khối) cho đến cuối đoạn (hoặc cuối khối) mã lệnh mà nó được khai báo trong đó.

Một phần của tài liệu Bài giảng lập trình java phần 1 đh sư phạm kỹ thuật nam định (Trang 31 - 38)

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

(146 trang)