자동 타입 변환 (promotion)

  • 자동으로 타입이 변환되는 것을 말한다. 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생한다.
  • byte < short < int < long < float < double
    byte byteValue = 10;
    int intValue = byteValue;	// 자동 타입 변환됨

[자동 타입 변환에서의 예외]
char 타입보다 허용 범위가 작은 byte 타입은 char 타입으로 자동 타입 변환 될 수 없다.
char 타입의 허용 범위는 음수를 포함하지 않는데 (0~65535(유니코드))
byte 타입은 음수를 포함하기 때문이다. (-128~ 127)

    byte byteValue = 65;
    char charValue = byteValue;	// 컴파일 에러 발생

정수/ 실수 연산에서의 자동 타입 변환

  • 더 큰 타입으로 자동 타입 변환 되어서 연산을 수행.
        String str = "1" + (2 + 3);
    --> String str = "1" + 5;
    --> String str = "15" ;

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

  • 피연산자 중 하나가 문자열일 경우에는 나머지 피연산자도 문자열로 자동 변환되어 문자열 결합 연산을 수행한다.

강제 타입 변환 (casting)

  • 강제로 타입을 변환하는 것을 말한다. 값의 허용 범위가 큰 타입을 허용 범위가 작은 타입으로 쪼개어서 저장하는 것을 말한다.
    int intValue = 10;
    byte byteValue = (byte)intValue;	// 강제 타입 변환됨
    int intValue = 65;
    char charValue = (char) intValue;
    System.out.println(charValue); 		// "A"가 출력
	double doubleValue = 3.14;
	int intValue = (int) doubleValue;	// intValue는 정수 부분인 3만 저장

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

  • 피연산자 중 하나가 문자열일 경우에는 나머지 피연산자도 문자열로 자동 변환되어 문자열 결합 연산을 수행한다.
		String str1 = "10";
		byte v1 = Byte.parseByte(str);				// String --> byte 
			
		String str2 = "200";
		short v2 = Short.parseShort(str);			// String --> short
		
		String str3 = "3000";
		int v3 = Integer.parseInt(str);				// String --> int
		
		String str4 = "40000";
		long v4 = Long.parseLong(str);				// String --> long 
		
		String str5 = "1.23";
		float v5 = Float.parseFloat(str);			// String --> float
		
		String str6 = "12.34";
		double v6 = Double.parseDouble(str);			// String --> double 
		
		String str7 = "true";
		boolean v7 = Boolean.parseBoolean(str);		// String --> boolean 
  • 반대로 기본타입을 문자열로 변경하는 경우라면 아래 메소드를 이용한다.
		String str = String.valueOf(기본타입값) =
profile
블루라이트로 광합성 하는 새럼

0개의 댓글