1. Integerlớp học
Integercũng tốt ở chỗ nó là một lớp, có nghĩa là nó có thể có các trường và phương thức. Và, tất nhiên, nó có chúng. Rất nhiều trong số họ - hàng chục người trong số họ. Ở đây chúng tôi sẽ xem xét những cái cơ bản nhất.
Lớp này Integercó hai trường chứa các giá trị tối đa và tối thiểu có thể có của intloại:
| Cánh đồng | Sự miêu tả |
|---|---|
|
Giá trị tối đa có thể của intloại |
|
Giá trị tối thiểu có thể của intloại |
Đôi khi bạn muốn gán intgiá trị nhỏ nhất hoặc lớn nhất có thể cho một biến. Để tránh làm lộn xộn mã của bạn với các hằng số khó hiểu, bạn có thể viết điều này thật rõ ràng như sau:
| Mã số | Sự miêu tả |
|---|---|
|
|
Lớp Integerhọc cũng có một số phương pháp thú vị. Họ đây rồi:
| phương pháp | Sự miêu tả |
|---|---|
|
Trả về một chuỗi là đại diện thập lục phân của số |
|
Trả về một chuỗi là biểu diễn nhị phân của số |
|
Trả về một chuỗi là biểu diễn bát phân của số |
|
Kết thúc thông qua inttrong một Integerđối tượng |
|
Trả về số thu được từ chuỗi đã truyền |
Trước đây bạn đã gặp phải phương thức tĩnh Integer.parseInt(). Hãy nhớ lại cách nó hoạt động:
int name = Integer.parseInt(string);
Nếu một chuỗi chứa một số (chỉ các chữ số) được truyền cho parseInt()phương thức, nó sẽ phân tích cú pháp chuỗi và trả về số mà nó chứa.
Phần còn lại của các phương pháp cũng hữu ích. Ví dụ: một số trong số chúng có thể chuyển đổi một số đã truyền thành một chuỗi chứa biểu diễn nhị phân, bát phân hoặc thập lục phân của số đó.
2. Doublelớp học
Nói chung, Doublelớp tương tự như Integerlớp, chỉ khác là nó bao bọc một doublechứ không phải một int. Nó cũng có các trường và phương thức mà chúng ta sẽ quan tâm. Hãy xem xét một vài trong số họ:
Lớp Doublehọc có sáu lĩnh vực thú vị:
| Cánh đồng | Sự miêu tả |
|---|---|
|
vô cực âm |
|
dương vô cùng |
|
Số mũ tối thiểu có thể (2 x ) |
|
Số mũ tối đa có thể (2 x ) |
|
Giá trị tối thiểu có thể của doubleloại |
|
Giá trị tối đa có thể của doubleloại |
vô cực
Nếu bạn chia -1.0cho 0.0, bạn sẽ nhận được âm vô cùng. Nếu bạn chia 1.0cho 0.0, bạn sẽ nhận được dương vô cùng. Bạn không chỉ có thể chia a doublecho 0 mà còn có thể sử dụng nó để lưu trữ kết quả của các phép toán này.
số mũ của mộtdouble
Hiểu số mũ là dễ dàng. Bên trong, một số kép bao gồm một phần định trị và một số mũ. Nhưng ở đây giá trị của số mũ không phải là , mà là . Như vậy, nếu số mũ tăng thêm , tổng giá trị của số sẽ tăng gấp đôi.10x2x1
MIN_EXPONENT == -1024, có nghĩa là , xấp xỉ bằng2-102410-308
Và tất nhiên, Doublelớp có các phương thức thú vị:
| phương pháp | Sự miêu tả |
|---|---|
|
Trả về một chuỗi là đại diện thập lục phân của số |
|
Kiểm tra xem số đã truyền có phải là số vô hạn hay không. |
|
Kiểm tra xem số đã qua có phải làNaN |
|
Kết thúc thông qua doubletrong một Doubleđối tượng |
|
Trả về số thu được từ chuỗi đã truyền |
Thật thú vị, có một isInfinite()phương thức trả về truenếu số đã truyền là vô cực dương hoặc âm.
Phương pháp này isNaN()tương tự — nó kiểm tra xem số đã truyền có phải là NaN( Not-a-Number , một hằng số đặc biệt cho biết giá trị không xác định hay không).
3. Characterlớp học
Lớp này Characterthú vị chủ yếu vì số lượng lớn các phương thức tiện ích tĩnh cho phép bạn kiểm tra xem các ký tự có thuộc các danh mục khác nhau hay không.
ví dụ
| phương pháp | Sự miêu tả |
|---|---|
|
Kiểm tra xem một ký tự có phải là ký tự chữ cái hay không |
|
Kiểm tra xem ký tự có phải là chữ cái không |
|
Kiểm tra xem ký tự có phải là chữ số không |
|
Kiểm tra xem ký tự là khoảng trắng, ngắt dòng hay ngắt trang (mã: 12, 13, 14) |
|
Kiểm tra xem ký tự có phải là khoảng trắng hay không: dấu cách, tab, v.v. |
|
Kiểm tra xem ký tự có phải là chữ thường không |
|
Kiểm tra xem ký tự có phải là chữ hoa không |
|
Chuyển ký tự thành chữ thường |
|
Chuyển đổi ký tự thành chữ hoa |
Một tính năng của các phương pháp này là chúng hoạt động với tất cả các bảng chữ cái đã biết: chữ số Ả Rập được phân loại thành chữ số, v.v.
4. Booleanlớp học
Loại này Booleanhầu như giống với booleanloại. Sự khác biệt là tối thiểu.
Dưới đây chúng tôi hiển thị một phiên bản đơn giản hóa của Booleanlớp:
| Mã số | Sự miêu tả |
|---|---|
|
Hằng số: TRUEи Hàm tạo của lớp FALSE biến Phương thức trả về giá trị của biến nội bộ Phương thức tĩnh này chuyển đổi thành và thành . BooleantrueTRUEfalseFALSE |
Loại Booleancó hai hằng số (hai trường):
| Hằng số của lớp | Đối tác cho loại boolean | Sự miêu tả |
|---|---|---|
|
|
ĐÚNG VẬY |
|
|
SAI |
Bạn có thể làm việc với chúng giống như cách bạn làm việc với booleanloại:
| Mã số | Ghi chú |
|---|---|
|
Lớp Booleanlà lớp duy nhất có thể được viết bên trong một điều kiện |
|
Cả ba biến đều bằng true/TRUE |
|
Các hằng số có thể được so sánh bằng cả hai equalsvà == Điều này cũng sẽ hoạt động. |
Autoboxing hoạt động tuyệt vời ở đây. Điều đó có nghĩa là bạn có thể sử dụng loại này giống như loại booleankhác — không có cạm bẫy nào cần đề phòng.
| Nó được viết như thế nào | Làm thế nào nó hoạt động |
|---|---|
|
|
Và đây là một so sánh của booleanvà Booleancác loại:
boolean a = true;
Boolean b = true; // b will be equal to Boolean.TRUE
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // true (compared by reference, but they point to the same object)
Nếu bạn thực sự cần một Booleanđối tượng độc lập, thì bạn cần tạo nó một cách rõ ràng:
boolean a = true;
Boolean b = new Boolean(true); // New Boolean object
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // false (compared by reference, and they point to different objects)
Thêm một ví dụ nữa, nơi chúng ta sẽ sử dụng Booleanphần bên trong của một if:
| Mã số | Ghi chú |
|---|---|
|
Điều này sẽ biên dịch và làm việc |
Điều này sẽ biên dịch, nhưng nó sẽ không hoạt động!
| Mã số | Ghi chú |
|---|---|
|
lỗi . Dòng này sẽ ném một ngoại lệ |
5. Lưu trữ các giá trị trong quá trình tự động hộp thư
Có một số cạm bẫy liên quan đến các loại trình bao bọc số nguyên.
Như bạn đã biết, nếu chúng ta so sánh an intvà an Integer, thì the Integerđược chuyển đổi thành an int:
| Nó được viết như thế nào | Làm thế nào nó hoạt động |
|---|---|
|
|
Nếu bạn so sánh hai Integerđối tượng với nhau, chúng không được chuyển thành ints:
| Mã số | Đầu ra bảng điều khiển |
|---|---|
|
|
a == cand , but , bởi vì khi chúng ta so sánh và chúng ta đang so sánh các tham chiếu. Đó thực chất là những gì chúng ta mong đợi.b == ca != bab
Sự ngạc nhiên
Nhưng nếu chúng ta thay thế 500bằng 100, thì chúng ta sẽ nhận được một kết quả hoàn toàn khác:
| Mã số | Đầu ra bảng điều khiển |
|---|---|
|
|
Vấn đề ở đây là một đối tượng mới không phải lúc nào cũng thực sự được tạo ra trong quá trình autoboxingInteger . Các đối tượng được lưu trữ cho các giá trị -128thông qua 127tính bao gồm.
Lớp Integercó một mảng ẩn lưu trữ các đối tượng: Integer(-128), Integer(-127), ... Integer(126),Integer(127)
Nếu bạn viết Integer x = 128, thì quá trình hộp thư tự động sẽ tạo một đối tượng mới, nhưng nếu bạn viết Integer x = 127, thì quá trình hộp thư tự động sẽ truy xuất đối tượng hiện có từ bộ đệm (từ mảng).
Nếu bạn không muốn Integerđối tượng đến từ bộ đệm, bạn sẽ phải tạo nó một cách rõ ràng bằng cách viết:Integer x = new Integer(127);
Tất cả các loại trình bao bọc đều có bộ đệm như vậy: Integer, Long, Byte, Short, Boolean. Đối với Booleanloại, giá trị TRUEvà FALSEgiá trị của nó đều là hằng số, vì vậy về cơ bản chúng cũng được lưu vào bộ đệm.
GO TO FULL VERSION