ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 형변환 (type casting)
    Java 2020. 12. 4. 08:41
    반응형

    문자열 -> 숫자

    • String -> int, long, short
    String strNum = "255";
    
    int intNum1 = Integer.parseInt(strNum);
    int intNum2 = Integer.valueOf(strNum);
    long longNum = Long.parseLong(strNum);
    short shortNum = Short.parseShort(strNum);

     

    • String -> double, float
    String strNum = "255";
    
    double doubleNum = Double.valueOf(strNum);
    float floatNum = Float.valueOf(strNum);

     

     

    숫자 -> 문자열

    • int -> String
    int intNum = 10;
    String strNum;
    		
    strNum = String.valueOf(i_num); //String.valueOf()를 사용하여 변환
    strNum = Integer.toString(i_num); //Integer.toString()을 사용하여 변환
    strNum = ""+intNum; //빈 문자열과 + 연산하여 변환

     

     

    • double, float -> String
    float floatNum = 3.14;
    double doubleNum = 3.14;
    
    String strNum;
    
    strNum = String.valueOf(floatNum);
    strNum = Float.toString(floatNum);
    strNum = "" + floatNum;
    
    strNum = String.valueOf(doubleNum);
    strNum = Double.toString(doubleNum);
    strNum = "" + doubleNum;

     

    정수 -> 실수   /  실수 -> 정수

    • int -> double, float (주의: 실수형 데이터를 정수형으로 변환하면 소수점 이하는 버림 하여 표현한다.)
    //1. primitive type
    double doubleNum = 3.14;
    float floatNum = 3.14f;
    
    int intNum;
    intNum = (int)doubleNum;
    intNum = (int)floatNum;
    
    
    //2. referece type
    Double doubleNum_r = 3.14;
    Float floatNum_r = 3.14f;
    
    Integer intNum_r;
    intNum_r = doubleNum_r.intValue();
    intNum_r = floatNum_r.intValue();

     

    • double, float -> int
    //1. primitive type
    int intNum = 10;
    
    double doubleNum = (double)intNum;
    float floatNum = (float)intNum;
    
    
    //2. reference type
    Integer intNum_r = 10;
    
    Double doubleNum_r = intNum_r.doubleValue();
    Float floatNum_r = intNum_r.floatValue();

     

     

    문자열 -> 문자배열   /  문자배열 -> 문자열

    • String -> char[]
    String strObj = "hello";
    char[] charArr = strObj.toCharArray();

     

    • char[] -> String
    char[] charArr = new char[] {'h','e','l','l','o'};
    String strObj = String.valueOf(charArr);

     

     

     

    문자열을 구성하는 문자를 하나씩 가져오고자 할 때는 String.charAt() 메서드를 사용한다.

    String strObject = "Test String";
    
    for(int i = 0; i < strOjbect.length; i++) {
        char c = strObject.charAt(i);
        System.out.println(c);
    }

     

     

     

    문자 -> 정수

    • char -> int
    char c = '7';
    int i = 0;
    i = (int)c;	//문자 7에 대한 아스키코드 값 = 55
    i = Character.getNumericValue(c);	//문자 7을 정수 7로 변환한 값 = 7
    i = c - '0';	//문자 7이 정수 7이 되도록 연산한 값 = 7

    char type을 명시적으로 int type으로 변환하는 경우 char type 문자의 아스키 코드 값으로 변환된다.

    char type 데이터를 보이는 그대로 정수로 변환하기 위해 아래의 두 가지 방법을 사용할 수 있다.

        -Character.getNumericValue() 메서드를 사용

        -char type 데이터에서 '0' 만큼 - 연산한 값 사용.

    '0'만큼 - 연산하는 경우는 10진수 범위 안에서만 사용가능하다. 즉, 0 ~ 9 사이의 값만 정수로 변환이 가능하다.

    Character.getNumericValue() 메서드를 사용하면 A-Z, a-z 값을 10이상의 정수를 표현하는 형태로 정수 변환이 가능하다.

    (결론) 0-9 범위를 변환하는 경우 '0'만큼 - 연산을 사용하고 범위를 넘어서는 경우는 getNumericValue() 메서드를 사용하자.

    'Java' 카테고리의 다른 글

    진법 변환  (0) 2020.12.12
    문자열 뒤집기 예제  (0) 2020.12.10
    라이브러리를 사용한 배열 정렬  (0) 2020.11.30
    Map의 정렬  (0) 2020.11.28
    Collection Framework  (0) 2020.11.24

    댓글

Designed by Tistory.