본문 바로가기
✏️Java 공부/기타 등등

[Java 공부/기타] Java 형 변환 정리

by 코코의 주인 2022. 7. 31.

변수나 리터럴의 타입을 다른 타입으로 변환하는 것을 형 변환 (casting)이라고 한다.

자바를 쓰다 보면 자료형 간에 형 변환을 해야 하는 경우가 생긴다. 이번 글에서는 형 변환하는 방법을 정리해 보겠다.


1. 정수형 ↔️ 실수형

정수형 변수(byte, short, int, long)와 실수형 변수(float, double)는 기본형 변수에 속하기 때문에 자유롭게 형 변환이 가능하다. 기본형 변수 간에 형 변환은 형 변환하고자 하는 변수나 리터럴의 앞에 변환하고자 하는 타입을 괄호와 함께 붙여주기만 하면 된다.

Integer ➡ Double, Float

        int i = 3;
        float f = (float) i;	//Integer to Float
        double d = (double) i;	//Integer to Double
        
        System.out.println("Integer to Float : " + f);	//Integer to Float : 3.0
        System.out.println("Integer to Double : " + d);	//Integer to Double : 3.0

 


Double, Float ➡ Integer 

        float f = 3.54f;
        int i1 = (int) f;	//Float to Integer

        double d = 4.75d;
        int i2 = (int) d;	//Double to Integer

        System.out.println("Float to Integer : " + i1);	//Float to Integer : 3
        System.out.println("Double to Integer : " + i2);//Double to Integer : 4

 이 때, 소수점 뒷 부분은 반올림되는 것이 아니라 아예 삭제가 되기 때문에 유의해야 한다.

 

 

 

 


2. 정수형 ↔️ 문자

	int i = 65;
        char ch = (char) i;

        System.out.println("Integer to Character : " + ch);	//Integer to Character : A

 65라는 숫자를 Character형으로 변환했는데 A가 출력되었다. 이는 65가 A의 아스키 코드 값이기 때문이다.

 이 방법으로는 정수를 그대로 Character형으로 담을 수 없다.

 

 

Integer ➡ Character

        int i = 5;
        char ch1 = (char) (i + '0');	//Integer to Character1
        char ch2 = Character.forDigit(i,10);	//Integer to Character2

        System.out.println("Integer to Character1 : " + ch1);	//Integer to Character1 : 5
        System.out.println("Integer to Character2 : " + ch2);	//Integer to Character2 : 5

 

 첫번째 방법

 아스키 코드를 활용한 방법이다. 

문자 0 1 2 3 4 5 6 7 8 9
10진수 값 48 49 50 51 52 53 54 55 56 57

 문자 '0'에 해당하는 아스키 코드 값은 48이다. 여기에 5를 더하면 53이 된다. 문자 5에 해당하는 아스키 코드 값이 되는 것이다. 이 방식으로 정수를 문자로 바꿀 수 있다.

 

 두번째 방법

 Character.forDigit()메서드를 활용하는 것이다.

 Character.forDigit(바꾸려는 수, 진법)

위의 형태로 활용한다. 위 예제에서는 변수 i(5)를 10진법 수로 변환하기 위해  Character.forDigit(i, 10)이라고 작성했다.

 

 

 


Character Integer  

        int ch = '4';
        int i1 = (int) (ch - '0');	//Character to Integer1
        int i2 = Character.getNumericValue(ch);	//Character to Integer2

        System.out.println("Character to Integer1 : " + i1);	//Character to Integer1 : 4
        System.out.println("Character to Integer2 : " + i2);	//Character to Integer2 : 4

 첫번째 방법

 아스키 코드를 활용한 방법이다. 정수를 문자로 바꾸는 방법과 동일한 방법이니 설명은 생략하겠다.

 

 두번째 방법

 Character.getNumericValue() 메서드를 활용하는 방법이다.

Character.getNumericValue(변수)

 이 메서드를 이용해서 Character형을 Integer형으로 변환할 수 있다.

 

 

 

 


3. 정수형 ↔️ 문자열

Integer ➡ String

        int i = 3450;
        String s1 = Integer.toString(i);	//Integer to String(10진수)
        String s2 = Integer.toBinaryString(i);	//Integer to String(2진수)
        String s3 = Integer.toOctalString(i);	//Integer to String(8진수)
        String s4 = Integer.toHexString(i);	//Integer to String(16진수)

        System.out.println("Integer to String : " + s1);//Integer to String : 3450
        System.out.println("Integer to String : " + s2);//Integer to String : 110101111010
        System.out.println("Integer to String : " + s3);//Integer to String : 6572
        System.out.println("Integer to String : " + s4);//Integer to String : d7a

 Integer 클래스의 메서드를 잘 활용하면 Integer형을 String으로 변함함과 동시에 진수 변환까지 할 수 있다.

 

 

 


String ➡ Integer

        String s = "1234";
        int i = Integer.parseInt(s);	//String to Integer

        System.out.println("String to Integer : " + i);	//String to Integer : 1234

 Integer 클래스의 parseInt() 메서드를 활용하여 변환한다.

 

 

 


4. 실수형 ↔️ 문자열

Float, Double ➡ String

        float f = 3.14f;
        double d = 3.141592;
        String s1 = Float.toString(f);	//Float to String
        String s2 = Double.toString(d);	//Double to String

        System.out.println("Float to String : " + s1);	//Float to String 3.14
        System.out.println("Double to String : " + s2);	//Double to String 3.141592

 

자료형의 wapper 클래스에 맞게 toString() 메서드를 활용하여 변환할 수 있다.

 

 


String  Float, Double 

        String s = " 3.141592";
        float f = Float.parseFloat(s);	//String to Float
        double d = Double.parseDouble(s);	//String to Double


        System.out.println("String to Float : " + f);	//String to Float : 3.141592
        System.out.println("String to Double : " + d);	//String to Double : 3.141592

 String을 Float으로 변환할 시 Float.parseFloat() 메서드를, Double로 변환할 시에는 Double.parseDouble()메서드를 활용한다.

 

 

 


 

5. 문자 배열 ↔️ 문자열

Character String

        char[] ch = {'h', 'e', 'l', 'l', 'o'};
        String s1 = new String(ch);	//Character to String1
        String s2 = String.valueOf(ch);	//Character to String2

        System.out.println("Character to String1 : " + s1);//Character to String1 : hello
        System.out.println("Character to String2 : " + s2);//Character to String2 : hello

 Character형 배열을 String으로 변환하고 싶다면 위와 같은 방법으로 변환할 수 있다.

 

첫번째 방법

 String 클래스의 생성자를 사용하여 변환하는 방법이다. String 변수를 생성할 때 생성자의 매개변수아 문자 배열을 넣어준다.

 

두번째 방법

 String 클래스의 valueOf() 메서드를 활용한다.

 

 

 


String  Character 

        String s = "hello coco";
        char[] ch1 = s.toCharArray();	//String to Character
        char ch2 = s.charAt(8);	//s[8] to Character


        System.out.println("String to Character : " + Arrays.toString(ch1));
        //String to Character : [h, e, l, l, o,  , c, o, c, o]
        System.out.println("s[8] to Character : " + ch2);	//s[8] to Character : c

String을 Character형 배열로 변환하고 싶다면 String.toCharArray()메서드를 활용하면 된다.

 

만약 원하는 인덱스의 한 글자만 Character형으로 변환하고 싶다면 charAt(index)메서드를 활용하자.

 


총평

 자꾸 찾아보게 되길래 한번 정리를 해봤다.

 플로팅 목차를 적용한 것이 이 글을 쓸 때만큼 뿌듯한 적은 없었다.

댓글