Java에서 long을 초기화하십시오.


213

기본 데이터 유형-Oracle Doc에 따르면 longJava 의 범위 는 다음 -9,223,372,036,854,775,808과 같습니다 9,223,372,036,854,775,807. 근데 이클립스에서 이런 일을하면

long i = 12345678910;

" The literal 12345678910 of type int is out of range"오류가 표시됩니다.

두 가지 질문이 있습니다.

1) long값으로 12345678910어떻게 초기화 합니까?

2) 모든 숫자 리터럴은 기본적으로 int?


그리고 Long을 초기화하는 것은 어떻습니까?
Wolfgang Fahl

1
@WolfgangFahl Long자동 복싱 때문에 동일한 규칙을 사용 Long i = 12345678910L하거나 Long i = Long.valueOf(12345678910L)자동 복싱을 사용할 수없는 경우에 사용할 수 있습니다.
Dorian Grey

답변:


422
  1. 당신은 추가해야합니다 L: long i = 12345678910L;.
  2. 예.

BTW : 대문자 L 일 필요는 없지만 소문자는 1여러 번 혼동됩니다 :).


3
누군가가 궁금해하는 경우를 대비하여 : 16 진수도 마찬가지입니다.0x200000000L
user149408

@Victor Long.valueOf (long)은 기본 long이 아닌 Long을 반환합니다. MByD의 솔루션은 자동 권투에 의존하지 않습니다.
gouessej

@ user149408 아마도 당신은 의미 0x20000000L하는가?
명왕성

2
@Pluto 0x20000000L는 작동하지만 여전히 int(32 비트 정수) 로 나타낼 수 있으므로 0x20000000마찬가지로 작동합니다. 0x200000000L그 경계를 깨서 후행이 L필요합니다.
user149408

58
  1. LJava 가 문자를 길게 인식하도록하려면 숫자 끝에 문자 를 추가해야합니다 .

    long i = 12345678910L;
  2. 예.

"정수 리터럴은 문자 L 또는 l로 끝나는 경우 길이가 길고, 그렇지 않으면 int 유형입니다."라는 기본 데이터 유형 을 참조하십시오 .


39

L마지막 에 대문자를 추가해야합니다.

long i = 12345678910L;

플로트에 대해서도 마찬가지입니다. 3.0f

어느 질문에 답해야합니까?


15

오래 초기화하려면 끝에 "L"을 추가해야합니다.
대문자 또는 소문자 일 수 있습니다.

모든 숫자 값은 기본적으로 int입니다. byte정수 를 사용 하여 작업을 수행하더라도 byte먼저 승격 된 int후 모든 작업이 수행됩니다.

이 시도

byte a = 1; // declare a byte
a = a*2; //  you will get error here

2기본적으로 이므로 오류가 발생 int합니다.
따라서 byte와 곱하려고합니다 int. 따라서 결과는 int에 다시 할당 할 수없는 형식으로 변환 됩니다 byte.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.