toString 메소드는 Object 객체에 있는 메소드로, 객체를 문자열로 반환해주는 메소드입니다.
Integer도 toString 메소드가 존재합니다.
toString(int i, int radix)
int int1 = 123;
System.out.println("toString class : " + Integer.toString(int1).getClass());
System.out.println("radix 2 : " + Integer.toString(int1, 2));
인수로 받은 정수를 문자열로 변환해주는 메서드입니다.
radix는 parseInt와 마찬가지로 생략이 가능합니다.
radix를 주면 해당하는 진수로 변환해줍니다.
위의 결과처럼 radix를 2로 주면 인수로 받은 정수 i를 2진수 문자열로 변환합니다.
인수가 없는 toString 메소드가 존재합니다.
Object 클래스에 있는 toString 메서드를 오버라이딩한 메서드입니다.
이 메서드는 위의 메서드와 다르게 static 메서드가 아니기 때문에 인스턴스에서 사용이 가능합니다.
Integer num = 10;
System.out.println(num.toString());
위와 같이, Integer 클래스의 인스턴스에서만 사용가능합니다.
int에서는 사용할 수 없습니다.
toBinaryString, toHexString, toOctalString(int i)
int int1 = 123;
System.out.println("123 toBinaryString : " + Integer.toBinaryString(int1));
System.out.println("123 toOctalString : " + Integer.toOctalString(int1));
System.out.println("123 toHexString : " + Integer.toHexString(int1));
Binary는 2진수, Octal은 8진수, Hex는 16진수를 의미합니다.
인자로 받은 정수를 해당하는 진수에 맞게 문자열로 변환합니다.
내부에서 toString(int i, int radix)를 사용할 줄 알았는데 binary는 1, octal은 3, hex는 4만큼 <<으로 밀어버립니다.
밀어버린다라고 표현하기에는 내부 구조가 단순하지는 않습니다.
toUnsignedString(int i, int radix)
int int2 = -111;
System.out.println("-111 toUnsignedString : " + Integer.toUnsignedString(int2));
System.out.println("-111 toUnsignedString : " + Integer.toUnsignedString(int2, 2));
parseUnsignedInt와 비슷하지만 결과는 반대입니다.
parseUnsignedInt는 21억이 넘는 숫자 문자열을 받으면 음수를 반환하고, toUnsignedString은 음수를 받으면 부호 없는 정수의 최대값인 4,294,967,295에서 해당 수를 뺀 다음 +1을 더한 값을 반환합니다.
-1은 4,294,967,295, -2는 4,294,967,294가 반환됩니다.
결과는 최대값에 인수를 뺀 값이긴 한데, 내부 로직은 shift 연산자를 사용하여 밀어버린 후 그 값을 문자열로 변환합니다.