1. Integer
lớp học
Integer
cũ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 Integer
có hai trường chứa các giá trị tối đa và tối thiểu có thể có của int
loại:
Cánh đồng | Sự miêu tả |
---|---|
|
Giá trị tối đa có thể của int loại |
|
Giá trị tối thiểu có thể của int loại |
Đôi khi bạn muốn gán int
giá 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 Integer
họ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 int trong 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. Double
lớp học
Nói chung, Double
lớp tương tự như Integer
lớp, chỉ khác là nó bao bọc một double
chứ 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 Double
họ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 double loại |
|
Giá trị tối đa có thể của double loại |
vô cực
Nếu bạn chia -1.0
cho 0.0
, bạn sẽ nhận được âm vô cùng. Nếu bạn chia 1.0
cho 0.0
, bạn sẽ nhận được dương vô cùng. Bạn không chỉ có thể chia a double
cho 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.10x
2x
1
MIN_EXPONENT == -1024
, có nghĩa là , xấp xỉ bằng2-1024
10-308
Và tất nhiên, Double
lớ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 double trong 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ề true
nế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. Character
lớp học
Lớp này Character
thú 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. Boolean
lớp học
Loại này Boolean
hầu như giống với boolean
loạ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 Boolean
lớ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 . Boolean true TRUE false FALSE |
Loại Boolean
có 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 boolean
loại:
Mã số | Ghi chú |
---|---|
|
Lớp Boolean là 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 equals và == Đ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 boolean
khá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 boolean
và Boolean
cá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 Boolean
phầ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 int
và 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 int
s:
Mã số | Đầu ra bảng điều khiển |
---|---|
|
|
a == c
and , 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 == c
a != b
a
b
Sự ngạc nhiên
Nhưng nếu chúng ta thay thế 500
bằ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ị -128
thông qua 127
tính bao gồm.
Lớp Integer
có 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 Boolean
loại, giá trị TRUE
và FALSE
giá 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