9.27 10-6 WrapperClass2(문자<->숫자)
[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()