타입변환

hellok99·2023년 2월 20일
0

📌 타입 변환


byte(1) ➡️ short(2)/char(2) ➡️ int(4) ➡️ long(8) ➡️ float(4) ➡️ double(8)

<자동변환 되는 경우>

❗바이트 크기가 작은 타입에서 큰 타입으로 변환(ex) byte ➡️ int)
❗덜 정밀한 타입에서 더 정밀한 타입으로 변환 (ex) 정수 ➡️ 실수)

<수동 변환 되는 경우>

차지하는 메모리 용량이 더 큰 타입에서 작은 타입으로는 자동으로 타입이 변환되지 않음. 이때 우리는 수동으로 타입을 변환해주어야 함. 이를 캐스팅(casting)이라고 함.

수동으로 타입을 변환할 때는 캐스팅 연산자 ( )를 사용한다. 캐스팅 연산자의 괄호 안에는 변환하고자 하는 타입을 적어준다.

ex)

int a = 12;
byte b = (byte)a;

System.out.println(b); //12

정수형의 오버플로우/언더플로우

오버플로우

  • 타입이 표현 할 수 있는 값의 범위를 넘어서는 것을 오버 플로우(overflow)라고 한다.

  • 최대값을 넘어가면 해당 데이터 타입의 최소값으로 값이 변합니다.

    ex)

    		int a = 128;
    	byte b = (byte)a;
    	System.out.println(b); //-128
           

byte형의 표현 범위는 -128~127이기 때문에 byte형으로 변환하면 표현 범위를 벗어나게 되어 오버 플로어가 발생. 따라서 -128이 됩니다.

언더플로우

  • 자료형이 표현할 수 있는 범위 중 최소값 이하의 값을 표현한 경우 발생 합니다.
  • 최소값을 넘어가면 해당 데이터 타입의 최대값으로 값이 변합니다.

실수형의 오버플로우/언더플로우

오버플로우

  • 값이 음의 최소 범위 또는 양의 최대 범위를 넘어갔을 때 발생하며, 이 때 값은 무한대가 됩니다.

언더플로우

  • 값이 음의 최대 범위 또는 양의 최소 범위를 넘어 갔을 때 발생하며, 이때 값은 0이 됩니다.

String에서 int로 변환

Integer.parseInt()

Integer.valueOf()

ex)

 		String str1 ="100";
        String str2 ="101";

        int a = Integer.parseInt(str1);
        int b = Integer.valueOf(str2);

        System.out.println(a); //100
        System.out.println(b); //101

int에서 String로 변환

Integer.toString()

String.valueOf()

ex)

		int a =100;
        int b =101;

        String str1 = Integer.toString(a);
        String str2 = String.valueOf(b);

        System.out.println(str1); //100
        System.out.println(str2); //101

char에서 int로 변환

Character.getNumericValue();

'0' 을 빼기 (아스키 코드 이용)

ex)

 		char ca ='2';
        char cb ='5';

        int ia = Character.getNumericValue(ca);
        int ib = cb - '0';

        System.out.println(ia); //2
        System.out.println(ib);//5
profile
안녕하세요

0개의 댓글