1. Integer
클래스
Integer
필드와 메서드를 가질 수 있는 클래스라는 점에서도 좋습니다. 물론 그것들이 있습니다. 그들 중 많은 - 수십. 여기서 우리는 가장 기본적인 것들을 고려할 것입니다.
이 Integer
클래스에는 유형의 가능한 최대값과 최소값을 포함하는 두 개의 필드가 있습니다 int
.
필드 | 설명 |
---|---|
|
int 유형 의 가능한 최대 값 |
|
int 유형 의 가능한 최소값 |
int
변수에 가능한 가장 작은 값 또는 가장 큰 값을 할당하려는 경우가 있습니다 . 이해할 수 없는 상수로 코드가 복잡해지는 것을 방지하기 위해 다음과 같이 매우 명확하게 작성할 수 있습니다.
암호 | 설명 |
---|---|
|
|
클래스 Integer
에는 몇 가지 흥미로운 방법도 있습니다. 여기 있습니다:
행동 양식 | 설명 |
---|---|
|
숫자의 16진수 표현인 문자열을 반환합니다. |
|
숫자의 이진 표현인 문자열을 반환합니다. |
|
숫자의 8진수 표현인 문자열을 반환합니다. |
|
전달된 개체를 개체 int 로 래핑합니다.Integer |
|
전달된 문자열에서 얻은 숫자를 반환합니다. |
이전에 정적 메서드를 만났습니다 Integer.parseInt()
. 작동 방식을 기억해 봅시다.
int name = Integer.parseInt(string);
숫자(숫자만)를 포함하는 문자열이 메서드에 전달되면 parseInt()
문자열을 구문 분석하고 포함된 숫자를 반환합니다.
나머지 방법도 유용합니다. 예를 들어, 그들 중 일부는 전달된 숫자를 숫자의 2진수, 8진수 또는 16진수 표현을 포함하는 문자열로 변환할 수 있습니다.
2. Double
클래스
일반적으로 클래스는 클래스 와 Double
비슷하지만 . 또한 우리가 관심을 가질 필드와 메서드도 있습니다. 그들 중 몇 가지를 고려하십시오.Integer
double
int
클래스 Double
에는 6개의 흥미로운 필드가 있습니다.
필드 | 설명 |
---|---|
|
음의 무한대 |
|
양의 무한대 |
|
가능한 최소 지수(2 x ) |
|
가능한 최대 지수(2 x ) |
|
double 유형 의 가능한 최소값 |
|
double 유형 의 가능한 최대 값 |
무한대
-1.0
로 나누면 0.0
음의 무한대가 됩니다. 1.0
로 나누면 0.0
양의 무한대가 됩니다. a를 0으로 나눌 수 있을 뿐만 double
아니라 이러한 작업의 결과를 저장하는 데에도 사용할 수 있습니다.
a의 지수double
지수를 이해하는 것은 쉽습니다. 내부적으로 double은 가수와 지수로 구성됩니다. 그러나 여기서 지수의 값은 가 아니라 입니다 . 따라서 지수가 0만큼 증가하면 숫자의 총 값은 두 배가 됩니다.10x
2x
1
MIN_EXPONENT == -1024
, 즉 , 대략 같다2-1024
10-308
물론 이 Double
클래스에는 흥미로운 방법이 있습니다.
행동 양식 | 설명 |
---|---|
|
숫자의 16진수 표현인 문자열을 반환합니다. |
|
전달된 숫자가 무한대인지 확인합니다. |
|
전달된 번호가 맞는지 확인NaN |
|
double 전달된 객체 Double 를 래핑합니다. |
|
전달된 문자열에서 얻은 숫자를 반환합니다. |
흥미롭게도 전달된 숫자가 양의 무한대인지 음의 무한대인지 isInfinite()
반환하는 메서드가 있습니다 .true
메서드 isNaN()
는 비슷합니다 — 전달된 숫자가 NaN
( Not-a-Number , 정의되지 않은 값을 나타내는 특수 상수)인지 확인합니다.
3. Character
클래스
이 Character
클래스는 주로 문자가 다양한 범주에 속하는지 여부를 확인할 수 있는 정적 유틸리티 메서드가 많다는 점에서 흥미롭습니다.
예
행동 양식 | 설명 |
---|---|
|
문자가 알파벳인지 확인 |
|
문자가 문자인지 확인 |
|
문자가 숫자인지 확인 |
|
문자가 공백, 줄 바꿈 또는 페이지 나누기인지 확인합니다(코드: 12, 13, 14). |
|
공백, 탭 등 문자가 공백인지 확인합니다. |
|
문자가 소문자인지 확인 |
|
문자가 대문자인지 확인 |
|
문자를 소문자로 변환 |
|
문자를 대문자로 변환 |
이러한 방법의 특징은 알려진 모든 알파벳과 함께 작동한다는 것입니다. 아라비아 숫자는 숫자 등으로 분류됩니다.
4. Boolean
클래스
유형 은 유형 Boolean
과 거의 동일합니다 boolean
. 차이점은 미미합니다.
아래에서 클래스의 단순화된 버전을 보여줍니다 Boolean
.
암호 | 설명 |
---|---|
|
상수: TRUE è FALSE 변수 Boolean 클래스 생성자 이 메서드는 내부 변수의 값을 반환합니다. 이 정적 메서드는 및 true 로 변환됩니다 . TRUE false FALSE |
유형 Boolean
에는 두 개의 상수(두 개의 필드)가 있습니다.
클래스의 상수 | 부울 유형에 대응 | 설명 |
---|---|---|
|
|
진실 |
|
|
거짓 |
유형 으로 작업하는 것과 동일한 방식으로 작업할 수 있습니다 boolean
.
암호 | 메모 |
---|---|
|
클래스는 Boolean 조건 안에 쓸 수 있는 유일한 클래스입니다. |
|
true 세 변수는 모두 /와 같습니다.TRUE |
|
상수는 둘 다 사용하여 비교할 수 equals 있으며 == 이것도 작동합니다. |
Autoboxing은 여기에서 훌륭하게 작동합니다. 즉, 이 유형을 boolean
유형과 동일한 방식으로 사용할 수 있습니다. 주의해야 할 함정이 없습니다.
작성 방법 | 작동 방식 |
---|---|
|
|
다음은 boolean
및 Boolean
유형을 비교한 것입니다.
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)
독립적인 개체가 정말로 필요한 경우 Boolean
명시적으로 만들어야 합니다.
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)
Boolean
an 내부를 사용하는 또 다른 예 if
:
암호 | 메모 |
---|---|
|
이것은 컴파일되고 작동합니다 |
이렇게 하면 컴파일되지만 작동하지 않습니다!
암호 | 메모 |
---|---|
|
오류 . 이 줄은 예외를 throw합니다. |
5. 오토박싱 중 값 캐싱
정수 래퍼 유형과 관련된 몇 가지 함정이 있습니다.
int
이미 알고 있듯이 an 과 an을 비교하면 Integer
the는 Integer
다음으로 변환됩니다 int
.
작성 방법 | 작동 방식 |
---|---|
|
|
Integer
두 개체를 서로 비교하면 int
s로 변환되지 않습니다.
암호 | 콘솔 출력 |
---|---|
|
|
a == c
and , but , 왜냐하면 우리가 비교할 때 참조 를 비교하기 때문입니다. 본질적으로 우리가 기대하는 것입니다.b == c
a != b
a
b
놀라다
500
그러나 로 바꾸면 100
완전히 다른 결과를 얻습니다.
암호 | 콘솔 출력 |
---|---|
|
|
여기서 문제는 autoboxing 중에 새 Integer
객체가 항상 실제로 생성되는 것은 아니라는 것입니다 . -128
객체는 inclusive를 통해 값에 대해 캐시됩니다 127
.
이 Integer
클래스에는 객체를 저장하는 숨겨진 배열이 있습니다: Integer(-128)
, Integer(-127)
, ... Integer(126)
,Integer(127)
를 쓰면 Integer x = 128
오토박싱 프로세스가 새 개체를 생성하지만 를 쓰면 Integer x = 127
오토박싱 프로세스가 캐시에서(배열에서) 기존 개체를 검색합니다.
개체를 캐시에서 가져오지 않으려면 Integer
다음을 작성하여 명시적으로 만들어야 합니다.Integer x = new Integer(127);
Integer
모든 래퍼 유형에는 , Long
, Byte
, Short
, 와 같은 캐시가 있습니다 Boolean
. Boolean
유형 의 경우 TRUE
및 FALSE
값은 모두 상수이므로 기본적으로 캐시됩니다.
GO TO FULL VERSION