[java] Long vs Integer, long vs int, 무엇을 언제 사용해야합니까?

때로는 API가 longor 또는 Longor int또는 Integer을 사용하고 있는데 어떻게 결정했는지 알 수 없습니까?

언제 무엇을 선택해야합니까?



답변

Long는 IS Object형태 longInteger의 물체 형태이다 int.

long사용 64 비트 . int사용하는 32 비트 등은 ± 2 억 번호를 저장할 수있는 (-2 31 +2 행 31 -1).

당신은 사용해야 long하고 int당신이에서 상속 방법을 이용해야하는 경우를 제외하고, Object등을, hashcode. Java.util.collections메소드는 일반적으로 boxed ( Object-wrapped) 버전을 사용합니다 . 왜냐하면 any Object에 대해 작동해야하고 intor 와 같은 기본 유형 longObject입니다.

또 다른 차이점이다 long하고 int있는 패스별로 값 반면 Long하고 Integer있는 패스 별 기준 값 이외의 모든 원시 자바 타입처럼. 따라서 또는를 수정할 수있는 Long경우 Integer(JNI 코드를 사용하지 않고 변경할 수없는 경우) 다른 것을 사용하는 또 다른 이유가 있습니다.

마지막으로 차이가 있다는 것입니다 Long또는이 Integer될 수있다 null.


답변

기본 유형으로 수행 할 수없는 몇 가지 작업이 있습니다.

  • null값을
  • 그들에 동기화
  • 그것들을 제네릭 클래스의 타입 매개 변수로 사용하십시오.
  • Objects 와 호환되는 API로 전달하십시오.

이들 중 하나가 필요하지 않으면 메모리가 덜 필요하므로 기본 유형을 선호해야합니다.


답변

  • int숫자를 보유 할 때는 기본적으로을 사용하십시오 .
  • 범위 int가 너무 작은 경우long
  • 범위 long가 너무 작은 경우BigInteger
  • 숫자를 객체로 처리 해야하는 경우 (예 : Collection, handling null, …에 넣을 때 ) Integer/ Long대신

답변

An int은 32 비트 정수입니다. a long는 64 비트 정수입니다. 어느 것을 사용할지는 숫자가 얼마나 큰지에 따라 다릅니다.

intlong기본 유형은, 동안 IntegerLong개체입니다. 기본 유형은 더 효율적이지만 때로는 객체를 사용해야합니다. 당신은 정수의 목록을 필요로하는 경우 예를 들어, 자바의 컬렉션 클래스 개체 수있는 유일한 작품은, 그래서 당신은 그것을해야합니다 List<Integer>(예를 들어, 당신이 사용할 수 없습니다, intA의 List직접).


답변

정수 는 부호있는 32 비트 정수 유형입니다.

  • 로 표시 Int
  • 크기 = 32 bits (4byte)
  • 범위의 정수를 보유 할 수 있습니다 -2,147,483,648 to 2,147,483,647
  • 기본값은 0입니다

Long 은 부호있는 64 비트 정수 유형입니다.

  • 로 표시 Long
  • 크기 = 64 bits (8byte)
  • 범위의 정수를 보유 할 수 있습니다 -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
  • 기본값은 0L입니다

변수 사용이 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

  • 바이트, 문자 .. 1B .. 8b
  • 짧은 정수 .. 2B .. 16b
  • int .. .. .. 4B .. 32b
  • long int .. 8B .. 64b

C .. 그냥 엉망 : https://en.wikipedia.org/wiki/C_data_types

  • 짧은 .. .. 16b
  • int .. .. .. 16b … wtf?!?!
  • 긴 .. .. 32b
  • 길고 .. 64b .. 엉망! :-/