day02 - 형변환

JTH·2023년 1월 19일
0

gb_jth

목록 보기
4/56

5. 형변환(Casting)

5-1. 형변환이란?

  • 변수의 자료형이 변환되는 것을 의미한다.
  • 특정 자료형의 값을 다른 자료형의 변수에 대입할 수 있다.
  • 암묵적 형변환과 명시적 형변환의 두 종류가 있다.
package casting;

public class Main01 {

	public static void main(String[] args) {
		short s = 100;
		int i = s;
		long l = i;
		float f = l;
		double d = f;
		
		System.out.println("s  = " + s);
		System.out.println("i  = " + i);
		System.out.println("l  = " + l);
		System.out.println("f  = " + f);
		System.out.println("d  = " + d);
		
		System.out.println("----------------");
		
		int myage1 = 20;
		double myage2 = myage1;
		
		System.out.println("myage1 : " + myage2);
		System.out.println("myage2 : " + myage2);
		
	}

}

5-2. 암묵적 형변환

  • 암묵적 형변환은 서로 다른 자료형을 연산 혹은 대입하는 경우, java 컴파일러가 자료형을 통일한다.
    이 과정에서 발생하는 형변환을 암묵적 형변환이라고 한다.

    int a = 100; //정수형
    float b = a; //정수형을 실수형에 대입

  • 암묵적 형변환은 어떤 변수가 더 큰 범위의 변수로 대입 가능함을 의미한다.

package casting;

public class Main02 {

	public static void main(String[] args) {
		long l = 100L;
		int i = (int) l;
		short s = (short)i;
		
		System.out.println("l : " + l);
		System.out.println("i : " + i);
		System.out.println("s : " + s);
		
		System.out.println("------------------------");
		
		double pi = 3.14d;
		
		// 큰 범위의 변수를 작은 범위의 변수에 대입하는 것은 에러
		// int pi2 = pi;
		
		int pi2 = (int)pi;
		System.out.println("pi : " + pi);
		System.out.println("pi2 : " + pi2);
		
	}

}

5-3. 명시적 형변환

  • 데이터의 손실을 감수하더라도, 강제로 형변환 시키는 형태

    자료형 b = (변환할자료형)a;

  • 실수형을 정수형으로 변환하는 경우, 소수점 이하 자리는 버려진다.

    double a = 3.14d;
    int b = (int)a; // 3

package casting;

public class Main03 {

	public static void main(String[] args) {
		double a = 10.5d;
		float b = 20.5f;
		
		/*
		 * 큰 범위의 변수와 작은 범위의 변수가 연산을 수행하면,
		 * 작은 범위의 변수가 큰 범위의 데이터형으로 암묵적 형변환을 수행한다.
		 * 그러므로 a + b 의 결과는 double 형의 변수가 된다.
		 * 
		 */
		![](https://velog.velcdn.com/images/aldus107/post/ea4ee184-1ca7-48b8-9caa-4eaf469a6f4a/image.PNG)

		// float f = a + b;
		
		double d = a + b;
		System.out.println("d : " + d);
		
		float f = (float) (a + b);
		System.out.println("f : " + f);
		
	}

}

눈에라도 익혀놓으면 쓸일있을것이다

profile
//

0개의 댓글