You are on page 1of 17

Introduction to

Java [2]
1
Kiểu dữ liệu

Java phân hai loại kiểu dữ liệu


● Kiểu nguyên thủy lưu giá trị biến, mô tả giá trị số, ký tự
và logic
● Kiểu đối tượng lưu địa chỉ của đối tượng

2
Lớp và đối tượng [1]

class Dog {
int size;
String name;
void bark() {
System.out
.println("Ruff! Ruff!");
}
}

3
Lớp và đối tượng [2]

// tạo đối tượng mới


d
Dog d = new Dog(); Heap

// sử dụng toán tử dot (.)


// cho biến d để gọi bark() Dog
d.bark(); size: 40

// thiết lập size dùng toán tử dot (.)


d.size = 40;

4
dog1

Dog
size=100

person1

Person
Phương thức trong Java

● Một phương thức = một nhóm các câu lệnh thực hiện
một hoạt động cụ thể
● static chỉ ra một phương thức tĩnh (static method)
● Một phương thức không phải là phương thức tĩnh là một
phương thức thể hiện (instance method)
● Các đối số đều là lệnh gọi theo giá trị (call-by-value)

6
Luyện tập

7
Lớp String trong java

● Lớp String được sử dụng để lưu trữ một chuỗi ký tự


● Bạn không thể sửa đổi một đối tượng String

String
name
String name = “Lam”; “Lam”
name = “Nguyen Tung Lam”
String
“Nguyen Tung Lam”

8
So sánh các đối tượng

Không thể sử dụng toán tử == để so sánh các đối tượng


=> So sánh con trỏ, không so sánh đối tượng
=> Sử dụng hàm equals

9
So sánh String?

Nên sử dụng equals để so sánh hai chuỗi


Tại sao == vẫn đúng trong một số trường hợp
String hello = "Hello", lo = "lo";
System.out.println(hello == "Hello");
System.out.println(hello == ("Hel" + "lo"));
System.out.println(hello == ("Hel" + lo));

10
Chuỗi ký tự trực nghĩa (String literal)

● Chuỗi ký tự trực nghĩa bao gồm không, một hoặc nhiều


ký tự được đặt trong dấu ngoặc kép.
"" // chuỗi rỗng
"\"" // chuỗi chỉ chứa ký tự "
"This is a string" // chuỗi độ dài 16 ký tự
"This is a " + // chuỗi hình thành
"two-line string" // từ 2 chuỗi trực nghĩa

11
Chuỗi ký tự trực nghĩa (String literal)

● Một chuỗi ký tự trực nghĩa là một tham chiếu (reference)


đến một thể hiện (instance) của lớp String
● Một chuỗi ký tự trực nghĩa luôn tham chiếu đến cùng
một thể hiện
● Chuỗi ký tự trực nghĩa, hoặc chuỗi hằng nói chung,
được chia sẻ các thể hiện duy nhất

12
Chuỗi ký tự trực nghĩa (String literal)

String hello = "Hello", lo = "lo";


System.out.println(hello == "Hello");
System.out.println(hello == ("Hel" + "lo"));
System.out.println(hello == ("Hel" + lo));
System.out.println(hello == ("Hel" + lo).intern());

13
Mảng trong Java

Mảng cũng là một đối tượng


● Khai báo mảng: <type>[] arrayVarName;
● Các cách định nghĩa mảng
● Truy cập phần tử mảng: arrayVarName[index]
● Cách thay đổi mảng

14
Lớp tự định nghĩa

● Cấu trúc của một lớp trong Java


● Từ khóa this
● Phương thức khởi tạo: phân loại, chuỗi khởi tạo
● Quá trình một đối tượng được khởi tạo
● …

15
Enum trong Java

● Enum (enumeration) là kiểu có một tập hợp các giá trị


không đổi cố định. Ví dụ:
enum CellStatus { EMPTY, X, O }
● Các thao tác với enum: khai báo, gán, so sánh,...
● Một số phương thức của enum: ordinal(),
compareTo(), toString(), valueOf(), values()

16
Bài tập: TicTacToe Game

Làm game TicTacToe 2 người chơi bằng Java. Game chơi


theo lượt, yêu cầu tạo:
● enum CellStatus: mô tả trạng thái ô
là trống, hoặc đã điền X/O
● class Cell: mô tả một ô trong bảng
● class Board: mô tả bảng 3x3 ô
● class Game: xây dựng luồng game

17

You might also like