Chương 2

Toán tử & Kiểu dữ liệu

Chương 2: Toán tử & Kiểu dữ liệu

o Các từ khóa thường gặp. o Định danh. o Biến và phạm vi của biến. o Các kiểu dữ liệu cơ sở. o Các toán tử và biểu thức. o Ép kiểu dữ liệu.

Từ khóa

Từ khóa

o Từ khóa là những từ mà ý nghĩa của nó đã được Java

định nghĩa sẵn.

o Từ khóa cho các kiểu dữ liệu cơ bản: byte, short,

int, long, float, double, char, boolean.

o Từ khóa cho phát biểu lặp: do, while, for, break,

continue.

o Từ khóa cho phát biểu rẽ nhánh: if, else, switch,

case, default, break.

Từ khóa

o Từ khóa đặc tả đặc tính một method: private, public, protected, final, static, abstract, synchronized.

o Hằng (literal): true, false, null. o Từ khóa liên quan đến method: return, void. o Từ khoá liên quan đến package: package, import. o Từ khóa cho việc quản lý lỗi: try, catch, finally,

throw, throws.

o Từ khóa liên quan đến đối tượng: new, extends, implements, class, instanceof, this, super.

Quy ước đặt tên

o Phương thức:

Ví dụ: ComputerArea

- Bắt đầu bằng ký tự thường. - Từ đầu tiên viết thường, viết hoa ký tự đầu tiên của các từ còn lại. - VD: timMax, area(), readFile(),… o Tên lớp: Viết hoa ký tự đầu của mỗi từ o Tên hằng: Viết hoa tất cả các ký tự Ví dụ: PI

Biến

o Biến là vùng nhớ dùng để lưu trữ các giá trị của

chương trình.

o Mỗi biến gắn liền với một kiểu dữ liệu và một định

danh duy nhất gọi là tên biến.

o Tên biến thông thường là một chuỗi các ký tự, ký số. - Tên biến phải bắt đầu bằng một chữ cái, một dấu gạch dưới (_) hay dấu $. - Tên biến không được trùng với các từ khóa . - Tên biến không có khoảng trắng ở giữa tên. o Biến phân biệt chữ hoa và chữ thường

Biến

; = ;

= ;

o Cách khai báo: o Ví dụ: int radius; int area = 5; o Gán giá trị cho biến: o Biến toàn cục (công cộng - public): là biến có thể truy xuất ở khắp nơi trong chương trình, thường được khai báo dùng từ khóa public, hoặc đặt chúng trong một class.

o Biến cục bộ: là biến chỉ có thể truy xuất trong khối lệnh

nó khai báo.

Biến

myVariable

Tên biến

Giá trị

100

101

102

103

104

105

106

Địa chỉ

• Ví dụ: int x; x = 20; int y = 10; int z = x+y; char c; float p, q;

Biến

int j = 1; // biến cục bộ // i, j có thể truy cập từ đây return j;

int j = 2; // biến cục bộ // i, j có thể truy cập từ đây return j;

int i; // biến thành viên (toàn cục) int first(){ } int second(){ }

public class MyClass{ }

Chú thích

int i; // biến thành viên (toàn cục) int first(){ int j = 1; /* biến cục bộ i, j có thể truy cập từ đây */ return j; }

public class MyClass{ }

o Có 2 cách chú thích: // Chú thích trên 1 dòng /* Chú thích trên nhiều dòng */

Các kiểu dữ liệu

o Kiểu dữ liệu cơ sở

 Số nguyên: byte, short, int, long  Số thực: float, double  Boolean  Kí tự: Char

o Kiểu dữ liệu tham chiếu

 Mảng (Array), Chuỗi (String)  Lớp (Class)  Kiểu giao tiếp (interface).

Các kiểu dữ liệu cơ sở

Kiểu luận lý

boolean

Kiểu ký tự

char

byte

Kiểu cơ sở

short

Kiểu nguyên

int

Kiểu số

long

float

Kiểu thực

double

Các kiểu dữ liệu cơ sở

Kiểu số nguyên

o Bốn kiểu số nguyên khác nhau là: byte, short, int,

o Kiểu mặc định của các số nguyên là kiểu int. o Không có kiểu số nguyên không dấu. o VD:

int x = 0; long y=100; int a=1, b, c;

long.

Kiểu số nguyên

o Không thể chuyển biến kiểu int và kiểu boolean

như trong ngôn ngữ C/C++ boolean b = false; if (b == 0){ System.out.println("Xin chao"); }

o Lúc biên dịch, đoạn chương trình trên sẽ báo lỗi vì chúng ta không được so sánh biến kiểu boolean với biến kiểu int.

Kiểu số nguyên

Một số lưu ý đối với các phép toán trên số nguyên: o Nếu hai toán hạng kiểu long thì kết quả là kiểu long. Một trong hai toán hạng không phải kiểu long sẽ được chuyển thành kiểu long trước khi thực hiện phép toán.

o Nếu hai toán hạng đầu không phải kiểu long thì

phép tính sẽ thực hiện với kiểu int.

o Các toán hạng kiểu byte hay short sẽ được chuyển

sang kiểu int trước khi thực hiện phép toán.

Kiểu dấu chấm động (kiểu thực)

o Gồm kiểu float và double o Kiểu float có kích thước 4 byte và giá trị mặc định

là 0.0f

o Kiểu double có kích thước 8 byte và giá trị mặc

định là 0.0d

o Khai báo và khởi tạo giá trị cho các biến kiểu dấu

chấm động: float x = 100.0/7; double y = 1.56E6;

Kiểu dấu chấm động (kiểu thực)

Một số lưu ý với các phép toán trên số dấu chấm động: o Nếu mỗi toán hạng đều có kiểu dấu chấm động thì phép toán chuyển thành phép toán dấu chấm động. o Nếu có một toán hạng là double thì các toán hạng còn lại sẽ được chuyển thành kiểu double trước khi thực hiện phép toán.

o Biến kiểu float và double có thể ép chuyển sang

kiểu dữ liệu khác (trừ kiểu boolean).

Kiểu ký tự (Char)

Unicode

o Kiểu char có thể tất cả: 216 = 65536 ký tự

khác nhau, từ '\u0000' đến '\uFFFF‘.

o Giá trị mặc định là null.

o Có kích thước là 2 bytes. o Chỉ dùng để biểu diễn các ký tự trong bộ mã

Kiểu luận lý (boolean)

ngược lại.

o Chỉ nhận hai giá trị: true hoặc false o Giá trị mặc định: false o Không thể chuyển thành kiểu nguyên và

Hằng

o Hằng là một giá trị bất biến trong chương trình. o Tên hằng được đặt theo qui ước giống như tên biến. o Cấu trúc: final = o Ví dụ final int i=100; final char a='a';

Hằng

o Với các kiểu như long, float, double chúng ta cần phải

thêm hậu tố tương ứng vào sau giá trị biến.

o Hằng số nguyên: Long thêm l hoặc L o Hằng số thực: Float thêm f hoặc F, Double thêm d

hoặc D. o Ví dụ: final long l=100l; final float f=34.123F; final double d=12.1213d;

Hằng

o Hằng Booean: có 2 hằng boolean là true, false o Hằng chuỗi: là tập hợp các ký tự đặt giữa hai dấu

nháy “”.

o Một chuỗi không có ký tự nào là một hằng chuỗi

rỗng.

o VD: “Hello World” o Hằng chuỗi không phải là kiểu dữ liệu cơ sở nhưng vẫn được khai báo và sử dụng trong chương trình.

Hằng

o Hằng ký tự: là 1 ký tự đơn nằm giữa 2 dấu ngoặc

đơn.

o VD: final char a='a'; o Một số hằng ký tự đặc biệt

Lệnh và khối lệnh

o Mỗi câu lệnh kết thúc bằng dấu (;)

o Các câu lệnh có thể nối lại với nhau tạo thành một

khối lệnh. Khối lệnh đặt trong cặp dấu {}

o Khối lệnh có thể lồng nhau.

o Bên trong một khối lệnh có thể chứa một hay nhiều

lệnh hoặc chứa các khối lệnh khác.

Lệnh và khối lệnh

• Ví dụ 1:

int max = a; if ( b > max)

max = b;

private int timGiaTriMax(int a, int b){ { } return max; }

• Ví dụ 2:

System.out.print("Hello World!!!");

public class HelloWorld{

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

Toán tử số học

Toán tử trên bit

Toán tử

Ý nghĩa

& | ^ << >> >>> ~

AND OR XOR Dịch trái Dịch phải Dịch phải và điền 0 vào bit trống Bù bit

Toán tử quan hệ và logic

Toán tử

Ý nghĩa

== != > < >= <= || && !

So sánh bằng So sánh khác So sánh lớn hơn So sánh nhỏ hơn So sánh lớn hơn hay bằng So sánh nhỏ hơn hay bằng OR (biểu thức logic) AND (biểu thức logic) NOT (biểu thức logic)

Toán tử gán

Giải thích

Toán tử Ví dụ = int c=3, d=5, c=4;

+= -= *= /= %= c+=7 d-=4 e*=5 f/=3 g%=9 c=c+7 d=d-4 e=e*5 f=f/3 g=g%9

Toán tử ép kiểu

o Khi gặp phải sự không tương thích kiểu dữ liệu chúng ta phải tiến hành chuyển đổi kiểu dữ liệu cho biến hoặc biểu thức.

o Chuyển kiểu dữ liệu này sang kiểu dữ liệu khác.

Toán tử ép kiểu

o Cú pháp:

= (kiểu_dữ_liệu) ;

o Ép kiểu rộng (ngầm định) - Từ kiểu nhỏ sang kiểu lớn. - Không mất mát thông tin - VD: int a = 10; float b = a; o Ép kiểu hẹp (tường minh) - Từ kiểu lớn sang kiểu nhỏ. - Có khả năng mất mát thông tin. - VD: float fNum = 2.2;

int iCount = (int) fNum

Toán tử điều kiện

o Cú pháp <điều kiện> ? : < biểu thức 2> o VD1: Tìm số lớn nhất: int a, b, max; a = 8; b = 10; max = a >b ? A: b;

Thứ tự ưu tiên

o Thứ tự ưu tiên từ trái qua phải và từ trên xuống dưới

như bảng sau:

Thứ tự ưu tiên

Biểu thức gán

= ;

o Cú pháp: o Tính giá trị , sau đó đưa giá trị vào cho ô

nhớ của

o Kiểu của phải tương thích với kiểu của

o Ví dụ: i = j = 10;

Ví dụ về phép toán

x = 10; y = 20; int z = x+y; System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("z = x + y =" + z); System.out.println("So nho hon la so:" + Math.min(x, y)); char c = 80; System.out.println("ky tu c la: " + c);

import java.lang.*; import java.io.*; class VariableDemo{

static int x, y; public static void main(String[] args){ }

}