Type Casting
1. 기본 타입 간 형 변환
정수형 -> 실수형 변환
정수형을 실수형으로 변환:
java코드 복사int i = 10;
double d = (double) i; // 정수형(int)을 실수형(double)으로 변환
실수형 -> 정수형 변환
실수형을 정수형으로 변환 (소수점 이하 값 제거):
java코드 복사double d = 10.5;
int i = (int) d; // 실수형(double)을 정수형(int)으로 변환 (소수점 이하 값 제거)
2. 문자열 <-> 숫자 형 변환
문자열 -> 숫자형 변환
문자열을 정수형으로 변환 (
Integer.parseInt()
):
java코드 복사String str = "123";
int num = Integer.parseInt(str); // 문자열을 정수형(int)으로 변환
문자열을 실수형으로 변환 (
Double.parseDouble()
):
java코드 복사String str = "123.45";
double num = Double.parseDouble(str); // 문자열을 실수형(double)으로 변환
숫자형 -> 문자열 변환
숫자를 문자열로 변환 (
String.valueOf()
):
java코드 복사int num = 123;
String str = String.valueOf(num); // 정수형(int)을 문자열(String)로 변환
3. 문자 <-> 숫자 변환
문자 -> 정수형 변환 (아스키 값)
문자를 정수형(아스키 값)으로 변환:
java코드 복사char c = 'A';
int ascii = (int) c; // 'A'의 아스키 값을 정수형으로 변환
정수형 -> 문자 변환
정수형을 문자로 변환 (아스키 값 사용):
java코드 복사int ascii = 65;
char c = (char) ascii; // 정수형을 아스키 값에 대응하는 문자로 변환 ('A')
4. 객체 타입 간 형 변환 (캐스팅)
다운 캐스팅
상위 클래스 객체를 하위 클래스 객체로 변환:
java코드 복사class Animal {}
class Dog extends Animal {}
Animal animal = new Dog(); // 업캐스팅 (Animal 타입으로 Dog 저장)
Dog dog = (Dog) animal; // 다운캐스팅 (Animal을 Dog로 변환)
업 캐스팅
하위 클래스 객체를 상위 클래스 타입으로 변환:
java코드 복사Dog dog = new Dog();
Animal animal = dog; // 업캐스팅 (Dog를 Animal로 변환)
5. 배열 타입 변환
기본 타입 배열 -> 래퍼 클래스 배열 변환
기본 타입 배열을 래퍼 클래스 배열로 변환:
java코드 복사int[] intArray = {1, 2, 3};
Integer[] integerArray = Arrays.stream(intArray).boxed().toArray(Integer[]::new); // int[] -> Integer[]
래퍼 클래스 배열 -> 기본 타입 배열 변환
래퍼 클래스 배열을 기본 타입 배열로 변환:
java코드 복사Integer[] integerArray = {1, 2, 3};
int[] intArray = Arrays.stream(integerArray).mapToInt(Integer::intValue).toArray(); // Integer[] -> int[]
6. 컬렉션 타입 변환
리스트 -> 배열 변환
리스트를 배열로 변환 (
toArray()
):
java코드 복사List<String> list = Arrays.asList("apple", "banana", "cherry");
String[] array = list.toArray(new String[0]); // List -> 배열
배열 -> 리스트 변환
배열을 리스트로 변환 (
Arrays.asList()
):
java코드 복사String[] array = {"apple", "banana", "cherry"};
List<String> list = Arrays.asList(array); // 배열 -> List
7. 자동 박싱 및 언박싱
정수형 -> 래퍼 클래스 변환 (자동 박싱)
기본 타입을 래퍼 클래스로 자동 변환:
java코드 복사int num = 10;
Integer wrappedNum = num; // 자동 박싱 (int -> Integer)
래퍼 클래스 -> 정수형 변환 (자동 언박싱)
래퍼 클래스를 기본 타입으로 자동 변환:
java코드 복사Integer wrappedNum = 10;
int num = wrappedNum; // 자동 언박싱 (Integer -> int)
8. 비트 단위 형 변환
정수 -> 비트 문자열 변환
정수를 비트 문자열로 변환 (
Integer.toBinaryString()
):
java코드 복사int num = 10;
String binary = Integer.toBinaryString(num); // 10 -> "1010"
비트 문자열 -> 정수 변환
비트 문자열을 정수로 변환 (
Integer.parseInt()
):
java코드 복사String binary = "1010";
int num = Integer.parseInt(binary, 2); // "1010" -> 10
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main
{
public static void main(String[] args)
{
// Type Casting in Java
// 1. Implicit Type Casting
// 2. Explicit Type Casting
// Implicit Type Casting
// byte -> short -> int -> long -> float -> double
// char -> int
// boolean -> No implicit type casting
// byte -> short
byte byteValue = 10;
short shortValue = byteValue;
System.out.println("Short Value: " + shortValue);
// short -> int
short shortValue2 = 100;
int intValue = shortValue2;
System.out.println("Int Value: " + intValue);
// int -> long
int intValue2 = 1000;
long longValue = intValue2;
System.out.println("Long Value: " + longValue);
// long -> float
long longValue2 = 10000;
float floatValue = longValue2;
System.out.println("Float Value: " + floatValue);
// float -> double
float floatValue2 = 100000;
double doubleValue = floatValue2;
System.out.println("Double Value: " + doubleValue);
// char -> int
char charValue = 'A';
int intValue3 = charValue;
System.out.println("Int Value: " + intValue3); // ASCII Value of 'A' is 65
// Explicit Type Casting
// double -> float -> long -> int -> short -> byte
// int -> char
// boolean -> No explicit type casting
// double -> float
double doubleValue2 = 100.04;
float floatValue3 = (float) doubleValue2;
System.out.println("Float Value: " + floatValue3);
// float -> long
float floatValue4 = 100.04f;
long longValue3 = (long) floatValue4;
System.out.println("Long Value: " + longValue3);
// long -> int
long longValue4 = 1000;
int intValue4 = (int) longValue4;
System.out.println("Int Value: " + intValue4);
// int -> short
int intValue5 = 100;
short shortValue3 = (short) intValue5;
System.out.println("Short Value: " + shortValue3);
// short -> byte
short shortValue4 = 10;
byte byteValue2 = (byte) shortValue4;
System.out.println("Byte Value: " + byteValue2);
// int -> char
int intValue6 = 65;
char charValue2 = (char) intValue6;
System.out.println("Char Value: " + charValue2); // ASCII Value of 65 is 'A'
// boolean -> int
boolean booleanValue = true;
// int intValue7 = (int) booleanValue; // Compile Time Error
// int -> boolean
int intValue8 = 1;
boolean booleanValue2 = intValue8 > 0;
System.out.println("Boolean Value: " + booleanValue2);
// int -> boolean
int intValue9 = 0;
boolean booleanValue3 = intValue9 > 0;
System.out.println("Boolean Value: " + booleanValue3);
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Main
{
public static void main(String[] args)
{
// Type Casting in Java
// List to Array
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Integer[] array = list.toArray(new Integer[0]);
for (Integer i : array)
{
System.out.println(i);
}
// Array to List
List<Integer> list2 = new ArrayList<>();
Collections.addAll(list2, array);
for (Integer i : list2)
{
System.out.println(i);
}
// Integer to String
Integer integer = 123;
String string = integer.toString();
System.out.println(string);
// String to Integer
String string2 = "123";
Integer integer2 = Integer.parseInt(string2);
System.out.println(integer2);
// Integer to Double
Integer integer3 = 123;
Double double1 = integer3.doubleValue();
System.out.println(double1);
// Double to Integer
Double double2 = 123.0;
Integer integer4 = double2.intValue();
System.out.println(integer4);
// Integer to int
Integer integer5 = 123;
int int1 = integer5;
System.out.println(int1);
// int to Integer
int int2 = 123;
Integer integer6 = int2;
System.out.println(integer6);
// String to char
String string3 = "abc";
char char1 = string3.charAt(0);
System.out.println(char1);
// char to String
char char2 = 'a';
String string4 = String.valueOf(char2);
System.out.println(string4);
// String to int
String string5 = "123";
int int3 = Integer.parseInt(string5);
System.out.println(int3);
// int to String
int int4 = 123;
String string6 = String.valueOf(int4);
System.out.println(string6);
// String to CharArr
String str = "Soobin";
char[] c = new char[str.length()];
for (int i = 0; i < str.length(); i++)
{
c[i] = str.charAt(i);
System.out.println(c[i]);
}
String str2 = "soobin";
char[] arr = str2.toCharArray();
for (char value : arr) {
System.out.println(value);
}
}
}
Integer -> int
Integer a = new Integer(10);
int i = a.intValue();
// 혹은
Integer a = new Integer(10);
int k = Integer.parseInt(a.toString());
String Array -> char Array
1. charAt() + for() {}
String s = "sk kinghts";
char[] arr = new char[s.length()];
for (int i = 0; i < s.length(); i++) {
arr[i] = s.charAt(i);
}
공백도 포함된다.
2. toCharArray()
String s = "sk kinghts";
char[] arr = s.toCharArray();
for (char c : arr) {
System.out.println(c);
}
char Array -> String Array
1. valueOf()
char[] arrCh = {'s', 'k', 'k', 'i'};
String[] arrStr = new String[arr.length];
for (int i = 0; i < arrCh.length; i++) {
arrStr[i] = String.valueOf(arrCh.charAt(i));
}
char[] arrCh = {'s', 'k', 'k', 'i'};
String str = String.valueOf(arrCh);
2. toString()
char[] arrCh = {'s', 'k', 'k', 'i'};
String[] arrStr = new String[arr.length];
for (int i = 0; i < arrCh.length; i++) {
arrStr[i] = Character.toString(arrCh.charAt(i));
}
Character.toString() 사용 시 char[] 배열은 반환이 불가능하다.
char[] arrCh = {'s', 'k', 'k', 'i'};
Character.toString(arrCh); // xxx
3. "" 이용하기
내가 좋아하는 방법
근데 속도는 valueOf()이 더 빠르다.
char c = 's';
String str = ch + "";
Array는 arr[idx]로 접근하고, String은 str.charAt(idx)로 접근한다.
String array -> Int array
import java.util.Arrays;
import java.util.stream.Stream;
public class Main
{
public static void main(String[] args) {
String[] strings = { "1", "2", "3", "4", "5"};
int[] values = Stream.of(strings)
.mapToInt(Integer::parseInt)
.toArray();
System.out.println(Arrays.toString(values));
}
}
import java.util.Arrays;
public class Main
{
public static void main(String[] args) {
String[] strings = { "1", "2", "3", "4", "5"};
Integer[] values = Arrays.stream(strings)
.map(Integer::parseInt)
.toArray(Integer[]::new);
System.out.println(Arrays.toString(values));
}
}
문자형 -> 숫자형
Integer.valueOf(str);
Double.valueOf(str);
Float.valueOf(str);
Integer.parseInt(str);
Long.parseLong(str);
Short.parseShort(str);
숫자형 -> 문자형
String.valueOf(num);
Integer.toString(num);
Float.toString(num);
Double.toString(num);
정수형 <-> 실수형
(int)number
(double)number
(float)number
Array -> List
(Reference Type) Array -> List
// 1
Arrays.asList(arr);
// 2
new ArrayList<>(Arrays.asList(arr));
// 3
Stream.of(arr).collect(Coolectors.toList());
(Primitive Type) Array -> List
// 1
int[] arr = new int[10];
List<Integer> intList = new ArrayList<>();
for (int e : arr) {
intList.add(e);
}
// 2
List<Integer> intList = Arrays.stream(arr)
.boxed()
.collect(Collectors.toList());
List -> Array
arrList.toArray(new String[arrList.size()]);
Last updated