때로는 API가 long
or 또는 Long
or int
또는 Integer
을 사용하고 있는데 어떻게 결정했는지 알 수 없습니까?
언제 무엇을 선택해야합니까?
때로는 API가 long
or 또는 Long
or int
또는 Integer
을 사용하고 있는데 어떻게 결정했는지 알 수 없습니까?
언제 무엇을 선택해야합니까?
답변:
Long
는 IS Object
형태 long
와 Integer
의 물체 형태이다 int
.
은 long
사용 64 비트 . int
사용하는 32 비트 등은 ± 2 억 번호를 저장할 수있는 (-2 31 +2 행 31 -1).
당신은 사용해야 long
하고 int
당신이에서 상속 방법을 이용해야하는 경우를 제외하고, Object
등을, hashcode
. Java.util.collections
메소드는 일반적으로 boxed ( Object
-wrapped) 버전을 사용합니다 . 왜냐하면 any Object
에 대해 작동해야하고 int
or 와 같은 기본 유형 long
은 Object
입니다.
또 다른 차이점이다 long
하고 int
있는 패스별로 값 반면 Long
하고 Integer
있는 패스 별 기준 값 이외의 모든 원시 자바 타입처럼. 따라서 또는를 수정할 수있는 Long
경우 Integer
(JNI 코드를 사용하지 않고 변경할 수없는 경우) 다른 것을 사용하는 또 다른 이유가 있습니다.
마지막으로 차이가 있다는 것입니다 Long
또는이 Integer
될 수있다 null
.
Int
32 bits (4byte)
-2,147,483,648 to 2,147,483,647
Long
64 bits (8byte)
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
변수 사용이 32 비트 범위 Int
에 있으면를 사용하고 그렇지 않으면를 사용하십시오 long
. 일반적으로 long은 과학적 계산에 사용되며 그와 같은 정확도가 필요합니다. (예 : pi의 가치).
다른 하나를 선택하는 예는 YouTube의 경우입니다. 그들은 처음에 비디오 조회 카운터를
int
인기 동영상으로 수신 된 조회수가 2,147,483,647 회 이상일 때 오버플 로 된 것으로 정의했습니다 . 때문에Int
카운터가 그 범위보다 더 이상의 임의의 값을 저장할 수없고, 무비는 9,223,372,036,854,775,807 뷰 카운트 이제 64 비트 변수 카운터를 바꾸고. 데이터를 이해하고 64 비트 변수에 맞는 유형을 선택하면 32 비트 변수보다 메모리가 두 배가됩니다.
32 비트를 초과하여 표시 할 수있는 매우 긴 숫자를 사용하는 경우 이상한 동작이 없도록 long을 사용할 수 있습니다.
Java 5에서 in-boxing 및 out-boxing 기능을 사용하여 int 및 Integer를 완전히 동일하게 사용할 수 있습니다. 그것은 당신이 할 수 있음을 의미합니다 :
int myInt = new Integer(11);
Integer myInt2 = myInt;
와 복싱 밖으로는 (에 대한 같은 당신이 추가 변환없이 INT와 정수 사이를 전환 할 수 있도록 Long
, Double
, Short
너무)
당신은 사용할 수 있습니다 int
모든 시간을,하지만 Integer
당신은 정수와 일부 복잡한 작업을 수행하는 데 도움이되는 몇 가지 헬퍼 메소드를 포함 (예 Integer.parseInt(String)
)
a) 객체 클래스 "Long"대 기본 유형 "long" (적어도 Java에서는)
b) 프리미티브 유형의 메모리 크기가 다르거 나 불분명합니다.
자바-모두 명확 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
C .. 그냥 엉망 : https://en.wikipedia.org/wiki/C_data_types