Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 콘솔출력문
- dowhile문
- array
- 다차원배열
- 문자열
- 변수유효범위
- 비트논리연산자
- while문
- for문
- 사용자입력Switch문
- 안드로이드스튜디오
- 다중if
- 명명규칙
- 순환문
- 삼항 연산자
- 기본형호출
- 자바
- println()
- 증감연산자
- 참조형호출
- 타입변환
- 대입 연산자
- Java
- print()
- 비정방행렬
- 비교연산자
- 배열
- 단순if
- 논리 쉬프트 연산자
- 산술 쉬프트 연산자
Archives
- Today
- Total
신입개발자
타입변환 본문
- 리터럴 literal 값 : 숫자만 있는 우변의 값
- 리터럴 값의 기본 : 정수는 int, 실수는 double
- 좌변과 우변이 다를 때 대 <- 소는 컴파일러가 자동변환(프로모션, 업캐스팅, 자동캐스팅)해주고
소 <- 대는 컴파일러가 해주지 못하고 개발자가 값손실을 감수하고 강제변환(강제캐스팅, 다운캐스팅)해야 에러가 없음 예)int i = (int)3.14;
package pk06;
public class 타입변환 {
public static void main(String[] args) {
byte b = 10;
// OK, int보다 작은 타입(byte/short)은 우변의 리터럴 값이 byte/short의 허용범위내라면 자동캐스팅해줌
// byte b = (byte)10; // byte<-(byte)int 강제캐스팅이 원칙, 잘안씀
System.out.println("b = "+b); // 10
// b = 128;
//에러, 우변 리터럴에 byte허용값 초과(단, b=127일 떄 b+=1 문장은 컴파일 에러 없음)
b = (byte)128; // 억지
System.out.println("b = "+b); // -128, 컴파일은 된다 하더라도 오버플로우를 피할 순 없음
System.out.println();
short s = 10; // OK, 이유는 byte와 동일
// short s = (short)10; // short <- (short)int 강제 캐스팅이 원칙, 잘안씀
System.out.println("s = "+s); //10
System.out.println();
// int i = 3.9; // 오류, int <- double
int i = (int)3.9; // 오류, int <- double
System.out.println("i = "+ i); //3, 버림
long l = 10; // OK, long <- int
System.out.println("l = "+l); //10
l = 2000000000;
System.out.println("l = "+l); // 20억
// l = 3000000000; // 오류, 우변에서 int 범위를 초과하는 리터럴값을 기재하면서 에러발생
l = 3000000000L;
// OK, l/L = long형을 캐스팅하는 방법(대문자 추천) ------> long형의 우변 리터럴이 20억 이상이면 L접미사
System.out.println("l = "+l); // 30억
System.out.println();
float f = 10; // OK, float <-- int
System.out.println("f = "+f); // 10.0
// f = 3.9; // 오류, float <- double
f = 3.9F;
// OK, f/F(대문자 추천) ------> float형의 우변 리터럴에 항상 F접미사 (차라리 double 추천)
System.out.println("f = "+f); // 3.9
System.out.println();
double d =10; // OK, double <-- int
System.out.println("d = "+d); // 10.0
d = 3.9; // OK, double <-- double
System.out.println("d = "+d); // 3.9
}
}
Comments