자동 타입 변환

자동 타입 변환은 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 정장될 때 발생

큰 허용 범위 타입 = 작은 허용 범위 타입

 

허용범위 크기순 정렬

byte < short < int < long < float < double
	public static void main(String[] args) {
		byte byteval = 2;
		int intval = byteval;
		
		System.out.println(intval);
	}

위의 코드의 경우 정상적으로 2가 출력되지만, 아래의 경우

	public static void main(String[] args) {
		int intval = 2;
		byte byteval = intval;
		
		System.out.println(byteval);
	}

Type mismatch: cannot convert from int to byte

다음과 같은 type mismatch 오류가 발생한다. 강제 타입 변환을 통해 해당 오류를 해결할 수 있다.

 

* char 타입보다 byte 타입의 허용범위가 작지만, char 타입은 허용범위 중 음수를 포함하지 않기 때문에 변환이 되지 않는다.

 

강제 타입 변환

캐스팅 연산자를 사용해서 타입을 강제 변환할 수 있다.

작은 허용 범위 타입 = (작은 허용 범위 타입)큰 허용 범위 타입

	public static void main(String[] args) {
		int intval = 2;
		byte byteval = (byte)intval;
		
		System.out.println(byteval);
	}

다음과 같이

byte = byteval = (byte)intval;

를 입력하면 강제로 타입을 변환할 수 있다

 

연산에서의 자동 타입 변환

정수 타입 변수가 산술 연산식에서 피연산자로 사용되면 int 타입보다 작은 byte, short 타입의 변수는 int 타입으로 자동 타입 변환된다.

	public static void main(String[] args) {
		byte val1 = 1;
		byte val2 = 2;
		
		byte var3 = val1 + val2; //오류 : Type mismatch: cannot convert from int to byte
        int var3 = val1 + val2 ; 
		
		System.out.println(var3);
	}

오류 : Type mismatch: cannot convert from int to byte

오류가 발생하므로 계산된 값은 int 변수에 저장해야한다.

 

피연산자 중 허용 범위가 더 큰 피연산자로 계산되므로 피연산자 중 long, double  이 있을경우 연산 결과는 범위가 큰 연산자로 저장되어야한다.

 

+ 연산자에서의 문자열 자동 타입 변환

+ 연산자는 둘 다 숫자면 덧셈연산, 하나라도 문자열이면 결합연산을 수행한다.

 

문자열을 기본 타입으로 강제 타입 변환

메소드를 이용해 강제 형 변환한다

String -> byte Byte.parseByte(str)
String -> short Short.parseShort(str)
String -> int Integer.parseInt(str)
String -> long Long.parseLong(str)
String -> float Float.parseFloat(str)
String -> double Double.parseDouble(str)
String -> boolean Boolean.parseBoolean(str)
반응형

'study > JAVA' 카테고리의 다른 글

[JAVA] 메서드 호출  (0) 2023.03.01
[JAVA] 변수 타입과 값 할당  (2) 2023.02.26
[JAVA] 키워드와 식별자  (0) 2023.02.26

+ Recent posts