Gói java.lang

Mặc định, mỗi chương trình java đều nhập gói java.lang. Vì thế, không cần lệnh nhập gói java.lang này trong chương trình.Lớp String

Chuỗi là một dãy các ký tự. Lớp String cung cấp các phương thức để thao tác với các chuỗi. Nó cung cấp các phương thức khởi tạo (constructor) khác nhau:

String str1 = new String( );

//str1 chứa một chuỗi rống.

String str2 = new String(“Hello World”);

//str2 chứa “Hello World”

char ch[] = {‘A’,’B’,’C’,’D’,’E’};String str3 = new String(ch);

//str3 chứa “ABCDE”

String str4 = new String(ch,0,2);

//str4 chứa “AB” vì 0- tính từ ký tự bắt đầu,  2- là số lượng ký tự kể từ ký tự bắt đầu.

Toán tử “+” được sử dụng để cộng chuỗi khác vào chuỗi đang tồn tại. Toán tử “+” này được gọi như là “nối chuỗi”. Ở đây, nối chuỗi được thực hiện thông qua lớp “StringBuffer”. Chúng ta sẽ thảo luận về lớp này trong phần sau. Phương thức “concat( )” của lớp String cũng có thể thực hiện việc nối chuỗi. Không giống như toán tử “+”, phương thức này không thường xuyên nối hai chuỗi tại vị trí cuối cùng của chuỗi đầu tiên. Thay vào đó, phương thức này trả về một chuỗi mới, chuỗi mới đó sẽ chứa giá trị của cả hai. Điều này có thể được gán cho chuỗi đang tồn tại.

Chuỗi mặc định:

Một chương trình Java có thể chứa nhiều chuỗi. “String Pool” đại diện cho tất cả các chữ được tạo trong chương trình. Mỗi khi một chuỗi được tạo, String Pool tìm kiếm trong nó, nếu tìm thấy nếu chuỗi đã tồn tại thì không tạo thể hiện mà chỉ gán thể  tìm thấy cho chuỗi mới. Việc này tiết kiệm rất nhiều không gian bộ nhớ. Ví dụ:

String day = “Monday”;String weekday = “Monday”;

Ở đây, một thể hiện cho biến “day”, biến đó có giá trị là “Monday”, được tạo trong String Pool. Khi chuỗi bằng chữ “weekday” được tạo, có giá trị giống như của biến “day”, một thể hiện đang tồn tại được gán đến biến “weekday”. Vì cả hai biến “day” và “weekday” cũng đều nhằm chỉ vào chuỗi giống hệt nhau trong String Pool.

Các phương thức lớp String:

Trong phần này, chúng ta sẽ xem xét các phương thức của lớp String.

charAt( )

Phương thức này trả về một ký tự tại một vị trí trong chuỗi.

Ví dụ:

String name = new String(“Java Language”);char ch = name.charAt(5);

Biến “ch” chứa giá trị “L”, từ đó vị trí các số bắt đầu từ 0.

startsWith( )

Phương thức này trả về giá trị kiểu logic (Boolean), phụ thuộc vào chuỗi có bắt đầu với một chuỗi con cụ thể nào đó không. Ví dụ:

String strname = “Java Language”;boolean flag = strname.startsWith(“Java”);

Biến “flag” chứa giá trị true.

endsWith( )

Phương thức này trả về một giá trị kiểu logic (boolean), phụ thuộc vào chuỗi kết thúc bằng một chuỗi con nào đó không, Ví dụ:

String strname = “Java Language”;boolean flag = strname.endsWith(“Java”);

Biến “flag” chứa giá trị false.

copyValueOf( )

Phương thức này trả về một chuỗi được rút ra từ một mảng ký tự được truyền như một đối số. Phương thức này cũng lấy hai tham số nguyên. Tham số đầu tiên chỉ định vị trí từ nơi các ký tự phải được rút ra, và tham số thứ hai chỉ định số ký tự được rút ra từ mảng. Ví dụ:

char name[] = {‘L’,’a’,’n’,’g’,’u’,’a’,’g’,’e’};String subname = String .copyValueOf(name,5,2);

Bây giờ biến “subname” chứa chuỗi “ag”.

toCharArray( )

Phương thức này chuyển chuỗi thành một mảng ký tự. Ví dụ:

String text = new String(“Hello World”);char textArray[] = text.toCharArray( );

indexOf( )

Phương thức này trả về thứ tự của một ký tự nào đó, hoặc một chuỗi trong phạm vi một chuỗi. Các câu lệnh sau biểu diễn các cách khác nhau của việc sử dụng hàm.

String day = new String(“Sunday”);int index1 = day.indexOf(‘n’);//chứa 2  int index2 = day.indexOf(‘z’,2);//chứa –1 nếu “z” không tìm thấy tại vị trí 2.  int index3 = day.indexOf(“Sun”); //chứa mục 0 Ø  toUpperCase( )

Phương thức này trả về chữ hoa của chuỗi.

String lower = new String(“good morning”);System.out.println(“Uppercase: ”+lower.toUpperCase( ));

toLowerCase( )

Phương thức này trả về chữ thường của chuỗi.

String upper = new String(“APTECH”);System.out.println(“Lowercase: “+upper.toLowerCase( ));

trim()


Phương thức này cắt bỏ khoảng trắng hai đầu chuỗi. Hãy thử đoạn mã sau để thấy sự khác nhau trước và sau khi cắt bỏ khoảng trắng.

String space = new String(“        Spaces      “);System.out.println(space);System.out.println(space.trim()); //Sau khi cắt bỏ khoảng trắng

equals()

Phương thức này so sánh nội dung của hai đối tượng chuỗi.

String name1 = “Aptech”, name2 = “APTECH”;boolean flag = name1.equals(name2);

Biến “flag” chứa giá trị false.

Lớp StringBuffer:

Lớp StringBuffer cung cấp các phương thức khác nhau để thao tác một đối tượng dạng chuỗi. Các đối tượng của lớp này rất mềm dẻo, đó là các ký tự và các chuỗi có thể được chèn vào giữa đối tượng StringBuffer, hoặc nối thêm dữ liệu vào tại vị trí cuối. Lớp này cung cấp nhiều phương thức khởi tạo. Ví dụ:

class StringBufferCons
{
public static void main(String args[])
{
StringBuffer s1 = new StringBuffer();
StringBuffer s2 = new StringBuffer(20);
StringBuffer s3 = new StringBuffer(“StringBuffer”);
System.out.println(“s3 = “+ s3);
System.out.println(s2.length()); //chMa 0
System.out.println(s3.length()); //chMa 12
System.out.println(s1.capacity()); //chMa 16
System.out.println(s2.capacity()); //chMa 20
System.out.println(s3.capacity()); //chMa 28
}
}

“length()” và “capacity()” của  StringBuffer là hai phương thức hoàn toàn khác nhau. Phương thức “length()” đề cập đến số các ký tự mà đối tượng thực chứa, trong khi “capacity()” trả về tổng dung lượng của một đối tượng   (mặc định là 16) và số  ký tự trong đối tượng StringBuffer.

Dung lượng của StringBuffer có thể thay đổi với phương thức    “ensureCapacity()”. Đối số int đã được truyền đến phương thức này, và  dung lượng mới được tính toán như sau:

NewCapacity = OldCapacity * 2 + 2

Trước khi dung lượng của StringBuffer được đặt lại, điều kiện sau sẽ được kiểm tra:

  • Nếu dung lượng(NewCapacity) mới lớn hơn đối số được truyền cho phương thức “ensureCapacity()”, thì dung lượng mới (NewCapacity) được đặt.
  • Nếu dung lượng mới nhỏ hơn đối số được truyền cho phương thức “ensureCapacity()”, thì dung lượng được đặt bằng giá trị tham số truyền vào.

Các phương thức lớp StringBuffer:

Trong phần này, chúng ta sẽ xem xét các phương thức của lớp StringBuffer với một chương trình.

append()

Phương thức này nối thêm một chuỗi hoặc một mảng ký tự vào cuối cùng của  đối tượng StringBuffer. Ví dụ:

StringBuffer s1 = new StringBuffer(“Good”);s1.append(“evening”);

Giá trị trong s1 bây giờ là “goodevening”.

insert()

Phương thức này có hai tham số. Tham số đầu tiên là vị trí chèn. Tham số thứ hai có thể là một chuỗi, một ký tự (char), một giá trị nguyên (int), hay một giá trị số thực (float) được chèn vào. Vị trí chèn sẽ lớn hơn hay bằng 0, và nhỏ hơn hay bằng chiều dài của đối tượng StringBuffer. Bất kỳ đối số nào, trừ ký tự hoặc chuỗi, được chuyển sang chuỗi và sau đó mới được chèn vào. Ví dụ:

StringBuffer str = new StringBuffer(“Java sion”);str.insert(1,’b’);

Biến “str” chứa chuỗi “Jbava sion”.

charAt()

Phương thức này trả về một giá trị ký tự trong đối tượng StringBuffer tại vị trí được chỉ định.Ví dụ:

StringBuffer str = new StringBuffer(“James Gosling”);char letter = str.charAt(6);    //chứa “G”

setCharAt()

Phương thức này được sử dụng để thay thế ký tự trong một StringBuffer bằng một ký tự khác tại một vị trí được chỉ định.

StringBuffer name = new StringBuffer(“Jawa”);name.setCharAt(2,’v’);

Biến “name” chứa “Java”.

setLength()

Phương thức này thiết lập chiều dài của đối tượng StringBuffer. Nếu chiều dài được chỉ định nhỏ hơn chiều dài dữ liệu hiện tại của nó, thì các ký tự thừa sẽ bị cắt bớt. Nếu chiểu dài chỉ định nhiều hơn chiều dài dữ liệu thì các ký tự null được thêm vào phần cuối của StringBuffer

StringBuffer str = new StringBuffer(10);str.setLength(str.length() +10);

getChars()

Phương thức này được sử dụng để trích ra các ký tự từ đối tượng StringBuffer, và sao chép chúng vào một mảng. Phương thức getChars() có  bốn tham số sau:

Chỉ số đầu: vị trí bắt đầu, từ nơi mà ký tự được lấy ra.

Chỉ số kết thúc: vị trí kết thúc

Mảng: Mảng đích, nơi mà các ký tự được sao chép.

Vị trí bắt đầu trong mảng đích: Các ký tự được sao chép vào mảng đích từ vị trí này.

Ví dụ:

StringBuffer str = new StringBuffer(“Leopard”);char ch[] = new char[10];str.getChars(3,6,ch,0);

Bây giờ biến “ch” chứa “par”

reverse()

Phương thức này đảo ngược nội dung của một đối tượng StringBuffer, và trả về một đối tượng StringBuffer khác. Ví dụ:

StringBuffer str = new StringBuffer(“devil”);StringBuffer strrev = str.reverse();

Biến “strrev” chứa “lived”.

Lớp Math:

Lớp này chứa các phương thức tĩnh (static) để thực hiện các thao tác toán học. Chúng được mô tả như sau:

Cú pháp là Math.<tên hàm>

abs()

Phương thức này trả về giá trị tuyệt đối của một số. Đối số được truyền đến nó có thể là kiểu int, float, double, hoặc long. Kiểu dữ kiệu byte và short được chuyển thành kiểu int nếu chúng được truyền tới như là một đối số. Ví dụ:

int num = -1;Math.abs(num)  //trả về 1.

ceil()

Phương thức này tìm thấy số nguyên nhỏ nhất lớn hơn hoặc bằng đối số được truyền vào.

floor()

Phương thức này trả về số nguyên lớn nhất nhỏ hơn hoặc bằng đối số được truyền vào.

System.out.println(Math.ceil(8.02));   //trả về 9.0System.out.println(Math.ceil(-1.3));  //trả về -1.0System.out.println(Math.ceil(100)); //trả về 100.0System.out.println(Math.floor(-5.6));  //trả về -6.0System.out.println(Math.floor(201.1));  //trả về 201System.out.println(Math.floor(100)); //trả về 100

max()

Phương thức này tìm giá trị lớn nhất trong hai giá trị được truyền vào. Các đối số được truyền vào có thể là kiểu int, long, double, và float.

min()

Phương thức này tìm giá trị nhỏ nhất trong hai giá trị được truyền vào. Các đối số được truyền vào có thể là kiểu int, long, double và float.

round()

Phương thức này làm tròn đối số có dấu phẩy động. Ví dụ, câu lệnh Math.round(34.5) trả về 35.

random()

Phương thức này trả về một số ngẫu nhiên  kiểu double giữa 0.0 và 1.0.

sqrt()

Phương thức này trả về căn bậc hai của một số. Ví dụ, câu lệnh Math.sqrt(144) trả về 12.0.

sin()

Phương thức này trả về sine của một số, nếu góc được truyền đến bằng radian. Ví dụ: Math.sin(Math.PI/2) trả về 1.0, giá trị của sin 450.

PI/2 radian = 90 độ. Giá trị của “PI” được định nghĩa trong lớp Math (Math.PI).

cos()

Phương thức này trả về cosine của một góc tính bằng radian.

tan()

Phương thức này trả về tan của một góc tính bằng radian.

Lớp Runtime:

Lớp Runtime chứa thông tin về môi trường thực thi. Lớp này được sử dụng cho việc quản lý bộ nhớ, và việc thực thi của các quá trình xử lý khác. Mỗi chương trình Java có một thể hiện của lớp này, để cho phép ứng dụng giao tiếp với môi trường. Nó không thể được khởi tạo, một ứng dụng không thể tạo ra một thể hiện của thuộc lớp này. Tuy nhiên, chúng ta có thể tham chiếu thể hiện trong lúc thực hiện chương trình từ việc dùng phương thức getRuntime().

Bây giờ, chúng ta biết rằng việc thu gom các dữ liệu không thích hợp trong Java là một tiến trình tự động, và chạy một cách định kỳ. Để kích hoạt một cách thủ công bộ thu thập dữ liệu không còn được sử dụng ta gọi phương thức gc() trên đối tượng Runtime hiện thời. Để xem chi tiết việc cấp phát bộ nhớ, sử dụng các phương thức totalMemory() và freeMemory().

Runtime r = Runtime.getRunTime();
…..
…..
long freemem = r.freeMemory();
long totalmem = r.totalMemory();
r.gc();

Bảng sau trình bày một vài phương thức  của lớp này:

Phương thức Ý nghĩa
exit(int) Dừng việc thực thi, và trả về giá trị của chương trình cho hệ điều hành. Nếu thoát bình thường thì trả về  0; giá trị khác 0 cho thoát không bình thường.
freeMemory() Trả về kích thước bộ nhớ chưa sử dụng tính bằng byte
getRuntime() Trả về thể hiện Runtime
gc() Gọi bộ phận thu thập rác.
totalMemory() Trả về kích thước bộ nhớ tính bằng byte.
exec(String) Chạy chương trình ở môi trường bên ngoài

Bạn có thể tham chiếu đến Runtime hiện hành thông qua phương thức Runtime.getRuntime().

Sau đó, bạn có thể chạy chương trình calc.exe và tham chiếu đến calc.exe trong  đối tượngProcess.

Lớp System:

Lớp System cung cấp các tiện íchi như là, dòng vào, dòng ra chuẩn và dòng  lỗi. Nó cũng cung cấp phương thức để truy cập các thuộc tính liên quan đến hệ thống Runtime của Java, và các thuộc tính môi trường khác nhau như là, phiên bản (version), đường dẫn, hay các dịch vụ, v.v..Các trường của lớp này là in, out, và err, các trường này tiêu biểu cho dòng vào, ra và lỗi chuẩn tương ứng.

Bảng sau mô tả các phương thức của lớp này:

Phương thức Mục đích
exit(int) Dừng việc thực thi, và trả về giá trị của đoạn mã. 0 cho biết có thể thoát ra một cách bình thường.
gc() Gọi bộ phận thu thập rác.
getProperties() Trả về thuộc tính của hệ thống thời gian chạy Java.
setProperties() Thiết lập các thuộc tính hệ thống hiện hành.
currentTimeMillis() Trả về thời gian hiện tại bằng mili giây (ms), được tính từ lúc 0 giờ ngày 01   tháng 01 năm 1970.
arrayCopy(Object, int, Object, int, int) Sao chép mảng.

Lớp System không thể tạo thể hiện (instance) được.

Lớp Class:

Các thể hiện của lớp này chứa trạng thái thời gian thực hiện của một đối tượng trong ứng dụng Java đang chạy. Điều này cho phép chúng ta truy cập thông tin về đối tượng trong thời gian chạy.

Chúng ta có thể lấy một đối tượng của lớp này, hoặc một thể hiện bằng một trong ba cách sau:

Sử dụng phương thức getClass() của đối tượng.

  • Sử dụng phương thức tĩnh forName() của lớp để lấy một thể hiện của lớp thông qua tên của lớp đó.
  • Sử dụng một đối tượng ClassLoader để nạp một lớp mới.


Lớp Class không có phương thức xây dựng (constructor).

Lớp Object:

Lớp Object là một lớp cha của tất cả các lớp. Dù là một lớp do người dùng định nghĩa không thừa kế lại bất kỳ một lớp nào khác, theo mặc định nó thừa kế lớp Object.

Một vài các phương thức của lớp Object được biểu diễn bên dưới:

Phương thức Mục đích
equals(Object) So sánh đối tượng hiện tại với đối tượng khác.
finalize() Phương thức cuối cùng. Thông thường bị định nghĩa đè ở  lớp con.
notify() Thông báo cho Thread (luồng) mà hiện thời trong trạng thái đang chờ.
notifyAll() Thông báo tất cả các Thread (luồng) hiện hành trong trạng thái chờ.
toString() Trả về một chuỗi đại diện cho đối tượng.
wait() Đưa Thread (luồng) vào trạng thái chờ.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s