Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 9의 JShell에서 정수 유형 변환을 구현하는 방법은 무엇입니까?


JShell main()을 선언하지 않고도 프로그래머가 간단한 명령문, 표현식, 변수, 메소드, 클래스, 인터페이스 등을 실행할 수 있도록 하는 Java 9 버전에 도입된 명령줄 대화형 도구입니다. 방법.

JShell에서 컴파일러는 프로그래머에게 타입 캐스팅 에 대해 경고합니다. 오류를 발생시켜 문제를 해결합니다. 그러나 프로그래머가 알고 있는 경우 명시적 캐스팅 필요합니다. 더 작은 데이터 값을 더 큰 유형에 저장해야 하는 경우 변환 후 암시적 캐스팅 필요합니다.

정수 에는 두 가지 종류가 있습니다. 타이프캐스팅 :

  • 리터럴 대 변수 할당: 예를 들어, 짧은 s1 =123456 , 데이터가 범위를 벗어났습니다. 컴파일 시간에 알려져 있습니다. , 그리고 컴파일러는 오류 플래그를 지정합니다.
  • 변수 대 변수 할당: 예를 들어, s1 =i1 . 해당 단계에서 int에 저장된 값:4567, 이는 short 유형의 범위 내에 있으며 컴파일러는 오류를 발생시키지 않습니다. 명시적 캐스팅 s1 =(short) i1으로 선점할 수 있습니다. .

아래 코드 스니펫에서 암시적 및 명시적 유형 변환을 모두 구현할 수 있습니다.

C:\Users\User>jshell
|   Welcome to JShell -- Version 9.0.4
|   For an introduction type: /help intro

jshell> byte b = 128;
|   Error:
|   incompatible types: possible lossy conversion from int to byte
|   byte b = 128;
|            ^-^

jshell> short s = 123456;
|   Error:
|   incompatible types: possible lossy conversion from int to short
|   short s = 123456;
|             ^----^

jshell> short s1 = 3456
s1 ==> 3456

jshell> int i1 = 4567;
i1 ==> 4567

jshell> s1 = i1;
|   Error:
|   incompatible types: possible lossy conversion from int to short
|   s1 = i1;
|        ^^

jshell> s1 = (short) i1;
s1 ==> 4567

jshell> int num = s1;
num ==> 4567