카테고리 없음

9.27 10-6 WrapperClass2(문자<->숫자)

도원결의 2022. 9. 27. 23:55

[Integer Wrapper클래스의 주요 메소드]
1] 숫자형식의 문자열을  숫자로 변경   

      Integer.parseInt(String s)  ;
      Integer.valueOf(String s)  ;    요렇게 두가지 방법!

String strNumber ="1000";  --->문자열임
System.out.println("10+strNumber:"+(10+strNumber));   --->문자라서 연산이 안 됨
System.out.println("strNumber를 숫자로 변경(parseInt):"+(10+Integer.parseInt(strNumber)));
System.out.println("strNumber를 숫자로 변경(valueOf):"+(10+Integer.valueOf(strNumber)));

 

Scanner sc = new Scanner(System.in);
System.out.println("나이를 입력하세요?");
    첫번째 nextInt()받는 경우
 int age = sc.nextInt();                       => nextInt()는 숫자만 입력 받을 수 있음
System.out.println("당신의 10년후 나이:"+(age+10));

=> 출력

나이를 입력하세요?
10
당신의 10년후 나이:20

 


   두번째 nextLine()받는 경우
String strAge=sc.nextLine();       ===>문자로 받아도
System.out.println("당신의 10년후 나이:"+(Integer.parseInt(strAge)+10));  ==> 숫자로 바꾸면 됨

System.out.println("당신의 10년후 나이:"+(Integer.valueOf(strAge)+10));  ===>요렇게도 가능!
==>출력 

나이를 입력하세요?
10
당신의 10년후 나이:20

당신의 10년후 나이:20

 


Integer numObj = Integer.parseInt(strNumber);    오토박싱
   System.out.println("문자열 1000을 byte형 값으로 변경(parseInt):"+numObj.byteValue());
   System.out.println("문자열 1000을 byte형 값으로 변경(valueOf):"+Integer.valueOf(numObj).byteValue());

 System.out.println("문자열 1000을 byte형 값으로 변경(valueOf):"+Integer.valueOf(strNumber).byteValue());  =>가능!


String money="1억원";        꼭 숫자형식의 문자열이여야 가능함 숫자 이외의 것이 들어가면 불가함
   Integer.parseInt(money);    실행시 NumberFormatException예외 발생
   Integer.valueOf(money);    실행시 NumberFormatException예외 발생

 

 

String floatString="3.14";
Integer.parseInt(floatString);   실행시 NumberFormatException예외 발생

실수형태(소수점이 포함된)의 문자열을 실수로 변경시:Float이나 Double 타입 사용 
System.out.println(Double.parseDouble(floatString));       실수 3.14
System.out.println(Float.parseFloat(floatString));             실수 3.14

 


2]숫자를 문자열로 변경:

static String    Integer.toString(int i);
String        인스턴스변수명.toString()          => 두가지 방법!

 

int num2=1000;

num2에 저장된 숫자를 문자열로 변경
              2-1]정적 메소드 사용
System.out.println(Integer.toString(num2)+10);    => num2를 String형으로!


              2-2]인스턴스형 메소드 사용
Integer intObj=num2;// 인스턴스형은 멤버를 가지고 있지 않으니까 오토박싱 먼저!
System.out.println(intObj.toString()+10);       

 


3]2진수 나 8진수나 16진수형식의 문자열을 십진수로 바꿀때 사용하는 메소드
static int parseInt(String s, int radix)  
static Integer valueOf(String s, int radix)


System.out.println("이진수 형태의 문자열 1000을 십진수로:"+Integer.parseInt(strNumber,2));
System.out.println("8진수 형태의 문자열 1000을 십진수로:"+Integer.parseInt(strNumber,8));
System.out.println("16진수 형태의 문자열 1000을 십진수로:"+Integer.parseInt(strNumber,16));

 

4]십진수를 각 진수로 변환
    static String toBinaryString(int i)  :2진수형태의 문자열
    static String toOctalString(int i)  :8진수형태의 문자열
    static String toHexString(int i)  :16진수형태의 문자열
    System.out.println(Integer.toHexString(15));

 


[결론]
[1]숫자형식의 문자열을 숫자로 : parse계열  메소드 ***얌기
           Integer.parseInt(문자형식의숫자변수명);
[2]valueOf()계열
        static Integer valueOf(int i) :
        int->Integer
  위는 JDK5.0이후 부터는 의미없음. 오토박싱을 사용하면 되니까
 
//[3]숫자를 문자열로: toString()계열 ***암기
정적형:   Integer.toString(int);
인스턴스형 : 

Integer intObj=num2;        오토박싱 먼저하고
             intObj.
toString()