LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có...

30
LẬP TRÌNH JAVA Bài 5: Enumeration, Autoboxing, Static Import và Annotations.

Transcript of LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có...

Page 1: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

LẬP TRÌNH JAVA

Bài 5: Enumeration, Autoboxing, Static Import và Annotations.

Page 2: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Điểm danh

Page 3: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Khái niệm multitasking và multithreading

Khái niệm ‘thread’ – luồng

Thread hiện thời

Các trạng thái của thread

Khởi tạo thread

Quản lý thread

Nhắc lại bài trước

Page 4: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Enumerations

Autoboxing

Static Import

Annotations

Nội dung bài học

Page 5: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Các giá trị của

enumeration được

mặc định là static và

final.

Enumeration là kiểu

dữ liệu chứa một tập

các hằng số.

Enumeration

Page 6: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Enumeration

Để tạo enumeration, sử dụng từ khóa enum

enum Transport{

CAR, TRUCK, AIRPLANE, TRAIN, BOAT

}

CAR, TRUCK, … được gọi là các hằng số liệt kê.

Page 7: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Enumeration Khai báo: Transport tp; Trong phép gán tp = Transport.CAR; Trong phép so sánh if (tp==Transport.TRAIN) Trong câu lệnh switch switch(t){ case CAR: // case TRUCK: //

Page 8: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Enumeration

Phương thức values() Lấy ra một mảng các hằng số Transport tps[] = Transport.values();

Phương thức valueOf(const)

Lấy ra hằng số có giá trị là const tp = Transport.valueOf("TRAIN");

Page 9: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Enumeration

Thuộc tính

Phương thức khởi tạo

Phương thức get

Page 10: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Enumeration

Phương thức ordinal()

Cho biết vị trí của hằng số trong enum.

Vị trí đầu tiên được bắt đầu là 0.

Phương thức compareTo(contst)

Cho biết hằng số hiện tại là đứng trước hay đứng

sau hay đúng là vị trí của một hằng số cho trước.

Page 11: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Autoboxing

Autoboxing: Tự động chuyển đổi các kiểu dữ liệu nguyên thủy thành kiểu đối tượng.

Các kiểu dữ liệu nguyên thủy không phải là đối tượng (object) nên có một số hạn chế trong khi thao tác và làm giảm hiệu suất làm việc.

Chỉ có object thì mới được truyền theo kiểu tham chiếu vào method.

Page 12: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Autoboxing

Tất cả các class bao bọc (class wrapper) đều được

kế thừa từ class abstract Number.

Number

Byte Short Integer Long Float Double

Page 13: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Autoboxing

Mỗi một kiểu dữ liệu nguyên thủy đều có một class wrapper tương ứng.

Primitive Types Type Wrappers

byte Byte short Short

int Int long Long float Float

double Double

Page 14: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Autoboxing

byte byteValue( ) double doubleValue() float floatValue( ) int intValue( ) long longValue( ) short shortValue( )

Các phương thức trả về kiểu dữ liệu nguyên

thủy của các class wrapper là:

Page 15: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Autoboxing

Integer Integer.valueOf(int) Byte Byte.valueOf(byte) Short Short.valueOf(short) Float Float.valueOf(float) Double Double.valueOf(double) Long Long.valueOf(long)

Các phương thức trả về một đối tượng là

instance của class wrapper:

Page 16: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Autoboxing

Tạo đối tượng Integer với giá trị là 100:

Integer iobj = new Integer(100);

Tạo một biến int với giá trị lấy ra từ đối

tượng Integer ở trên:

int i = iobj.intValue();

Page 17: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Autoboxing

Tự động chuyển kiểu trong phép gán:

Integer iobj = 100;

int i = iobj;

Tự động chuyển kiểu trong biểu thức

iobj++;

iobj += 10;

Page 18: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Autoboxing Ưu điểm của việc sử dụng class Number:

Có nhiều phương thức chuyển đổi giá trị kiểu nguyên thủy kiểu đối tượng và chuyển đổi từ dạng string sang các dạng số (decimal, octal, hexadecimal, binary).

Làm tham số cho các phương thức mà phương thức đó bắt buộc tham số truyền vào phải là kiểu đối tượng.

Page 19: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Autoboxing List<Integer> li = new ArrayList<>();

for (int i = 1; i < 50; i += 2)

li.add(i); Autoboxing

public static int sumEven(List<Integer> li) { int sum = 0; for (Integer n: li) if (n % 2 == 0) Unboxing sum = sum + n; return sum; }

sum = sum + n.intValue();

li.add( Integer.valueOf(i));

Page 20: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Static Import

Java sử dụng từ khóa import khi muốn sử dụng các class ở package khác.

Java 5 cũng đã bổ sung từ khóa ‘static’ cùng với từ khóa import để thuận tiện cho việc sử dụng các phương thức static có trong các class mà không cần phải viết tên class.

Page 21: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Static Import

Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính e mũ …

Các phương thức trên đều là static

Thông thường, muốn tính căn bậc 2 một số ta viết:

x = Math.sqrt(1000)

Page 22: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Static Import

Sử dụng import static java.lang.Math.sqrt;

thì, khi dùng chỉ cần viết: x = sqrt(1000);

Hoặc import static java.lang.Math.*;

import static java.lang.System.out;

thì: y = pow(10,2); out.println(“Hello there !”);

Page 23: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Annotation

Annotation là một dạng metadata –

siêu dữ liệu được dùng để mô tả một

đối tượng nào đó (như class, method).

Mô tả dữ liệu là một tập giá trị chứa

những thông tin gắn gọn, cơ bản mô tả

về đối tượng đó.

Page 24: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Annotation

@interface ClassTest {

String value();

String owner();

}

@ClassTest(value = "Class scope", owner = “Anna")

public class AnnocationForClass {

public static void main(String[] args) {

System.out.println("Test annotation !");

}

}

Annotation mô tả một class

Page 25: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Annotation

@interface MethodTest {

String value();

String owner();

}

...

@MethodTest(value = "Method scope", owner =“Anna”)

public void display() {

System.out.println(“Annotation method testing");

}

Annotation mô tả một phương thức

Page 26: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Annotation

Ann

otat

ion

tả m

ột c

lass

fiel

d

Page 27: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Annotation

Annotation Ý nghĩa

@Deprecated Method được đánh dấu không còn được sử dụng nữa, nó tồn tại bởi vì tính tương thích.

@Override Thông báo cho trình biên dịch biết phương thức bên dưới là phương thức được viết lại khi kế thừa từ lớp cha.

@SuppressWarnings Thông báo cho trình biên dịch tắt các cảnh báo.

Page 28: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Annotation public class example {

@Deprecated public void showSomething() { System.out.println("Method has been depricated'");

}

public static void main(String[] args) {

example obj = new example ();

obj.showSomething(); }

}

Page 29: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Annotation

class Child extends Parent{

@Override

public void hi(){

System.out.println("Hello !");

}

}

Page 30: LẬP TRÌNH JAVA - WordPress.com€¦ · Gói java.lang chứa class Math, trong class này có các phương thức tính toán số học như: căn bậc 2, tính số mũ, tính

Enumerations

Autoboxing

Static Import

Annotations

Tổng kết bài học