[Java] 다양한 형 변환(Type Conversion) 방법 이해하기 : 캐스팅(Casting)
해당 글에서는 Java에서 사용되는 다양한 형 변환(Type Conversion) 방법에 대해서 이해합니다.
1) 형 변환(Type Conversion) : 캐스팅(Casting)
💡 변환(Type Conversion) : 캐스팅(Casting)
- 변수의 자료형을 다른 자료형으로 변환하는 것을 의미합니다. 이때 변환되는 자료형은 변수가 담고 있는 값에 따라 결정됩니다.
- 형 변환은 암시적 형 변환과 명시적 형변환으로 나뉩니다.
[ 더 알아보기 ]
💡 암시적 형변환
- 자동으로 처리되는 형변환을 의미합니다.
💡 명시적 형 변환
- 개발자가 직접 코드를 작성하여 수행하는 형변환을 의미합니다.
2) [기초] 문자열 ↔ 래퍼 클래스
1. 문자열을 래퍼 클래스로 변환
번호 | 분류-1 | 분류-2 | 주요 메서드 |
1 | 문자열 ↔ 래퍼클래스(정수) | String ↔ int | Integer.parseInt(String) |
2 | 문자열 ↔ 래퍼클래스(실수) | String ↔ Double | Double.parseDouble(String) |
3 | 문자열 ↔ 래퍼클래스(진위형) | String ↔ Boolean | Boolean.parseBoolean(String) |
4 | 문자열 ↔ 래퍼클래스(부동소수점) | String ↔ Float | Float.parseFloat(String) |
5 | 문자열 ↔ 래퍼클래스(긴 정수) | String ↔ Long | Long.parseLong(String) |
6 | 문자열 ↔ 래퍼클래스(짧은 정수) | String ↔ Short | Short.parseShort(String) |
7 | 문자열 ↔ 래퍼클래스(바이트) | String ↔ Byte | Byte.parseByte(String) |
8 | 문자열 ↔ 래퍼클래스(문자) | String ↔ Character | Character.valueOf(String.charAt(0)) |
2. 래퍼 클래스를 문자열로 변환
💡 래퍼 클래스를 문자열로 변환하는 방법은 아래의 두 가지를 통해서 변환을 합니다.
1. 래퍼클래스.toString()을 이용하는 방법
2. String.valueOf()를 이용하는 방법
번호 | 분류 -1 | 분류 -2 | 주요 메서드 |
1 | 래퍼클래스(정수) ↔ 문자열 | int ↔ String | String.valueOf(int) |
2 | 래퍼클래스(실수) ↔ 문자열 | Double ↔ String | String.valueOf(double) |
3 | 래퍼클래스(진위형) ↔ 문자열 | Boolean ↔ String | String.valueOf(boolean) |
4 | 래퍼클래스(부동소수점) ↔ 문자열 | Float ↔ String | String.valueOf(float) |
5 | 래퍼클래스(긴 정수) ↔ 문자열 | Long ↔ String | String.valueOf(long) |
6 | 래퍼클래스(짧은 정수) ↔ 문자열 | Short ↔ String | String.valueOf(short) |
7 | 래퍼클래스(바이트) ↔ 문자열 | Byte ↔ String | String.valueOf(byte) |
8 | 래퍼클래스(문자) ↔ 문자열 | Character ↔ String | String.valueOf(char) |
[Java/Short] 기본 자료형과 래퍼 클래스의 박싱(Boxing)과 언박싱(Unboxing) 방법
해당 페이지에서는 자주 사용하는 개발 패턴으로 "기본 자료형을 래퍼 클래스로 변환(Boxing)하거나 래퍼 클래스를 기본 자료형으로 변환(Unboxing)”하는 방법에 대해서 공유합니다. 1) 기본 자료형
adjh54.tistory.com
3) 형 변환 요약
번호 | 분류-1 | 분류-2 | 주요 메서드 |
1 | 기본 자료형 ↔ 래퍼클래스 | int ↔ Integer | Arrays.stream().boxed().collect() / Arrays.stream().mapToInt() |
2 | 배열 ↔ 리스트 | Array ↔ List | Arrays.asList() / List.toArray() |
3 | 문자열 ↔ 문자열, 문자 배열 | String ↔ String[]/char[] | String.split(), String.toCharArray() |
4 | 배열/리스트 → 문자열 | Array/List → String | String.join() |
5 | 문자열 ↔ 정수 | String ↔ int | Integer.parseInt() / Math.abs() / String.valueOf() |
6 | 문자열 ↔ Date | String ↔ Date | SimpleDateFormat.format(), SimpleDateFormat.parse(), Calendar |
7 | 문자열 ↔ 아스키코드 | 문자열 ↔ ASCII Code | String.charAt() / (char) |
8 | 정수(10진법) ↔ N진법 | int ↔ N진법 | Integer.toString(num, n) / Integer.parseInt(str, n) |
9 | 문자열 배열 ↔ 정수 배열 | String[] ↔ int[] | Arrays.stream().mapToInt(Integer::parseInt).toArray() Arrays.stream().mapToInt(String::valueOf).toArray() |
4) 기본자료형 ↔ 래퍼클래스 간의 변환 : Boxing / Unboxing
1. 기본 자료형 ↔ 래퍼 클래스 변환
분류 | 기본 자료형 (Primitive Type) | 래퍼 클래스(Wrapper Class) | 오토 언박싱 |
진위형 | boolean | Boolean | a.booleanValue() |
문자형 | char | Character | a.charValue() |
정수형 | byte | Byte | a.byteValue() |
정수형 | short | Short | a.shortValue() |
정수형 | int | Integer | a.intValue() |
정수형 | long | Long | a.longValue() |
실수형 | float | Float | a.floatValue() |
실수형 | double | Double | a.doubleValue() |
💡 Java 1.5 이상부터는 별도의 형 변환 없이 ‘암시적 형변환’이 수행이 됩니다.
Integer integer = 1;
int intItem = integer;
int intItem = 1;
Integer integer = intItem;
💡 Java 1.5 미만 버전부터는 형변환을 수행하는 ‘명시적 형변환’으로 데이터 타입을 변형합니다.(래퍼클래스 → 기본자료형에 해당)
Integer integer = 1;
int intItem = integer.intValue();
[Java] 자료형(Data Type) 이해하기 : 기본 / 참조 자료형, 래퍼 클래스
해당 글에서는 자료형 중 기본 자료형, 참조 자료형, 래퍼 클래스에 대해 이해하고 각각을 비교하여 이해를 돕기 위한 목적으로 작성을 하였습니다. 1) 기본 자료형(Primitive Data Type) 💡 데이터를
adjh54.tistory.com
2. 기본자료형 배열을 래퍼 클래스 배열로 변환(기본자료형 to 래퍼클래스) : Arrays.stream().boxed().collect()
// 1. Array Initialize
int[] boxedNumArr = {0, 1, 2, 3, 4};
// 2. Array to Stream<Integer>
List<Integer> boxedNumArrList = Arrays.stream(boxedNumArr).boxed().collect(Collectors.toList());
3. 래퍼 클래스 배열을 기본 자료형 배열로 변환(래퍼클래스 to 기본자료형) : Arrays.stream().mapToInt()
Integer[] unBoxedNumArr = {0, 1, 2, 3, 4};
int[] unBoxedNumArrList = Arrays.stream(unBoxedNumArr).mapToInt(i -> i).toArray();
[Java/Short] 기본 자료형과 래퍼 클래스의 박싱(Boxing)과 언박싱(Unboxing) 방법
해당 페이지에서는 자주 사용하는 개발 패턴으로 "기본 자료형을 래퍼 클래스로 변환(Boxing)하거나 래퍼 클래스를 기본 자료형으로 변환(Unboxing)”하는 방법에 대해서 공유합니다. 1) 기본 자료형
adjh54.tistory.com
5) 배열 ↔ 리스트 간의 변환 : Array ↔ List
1. 배열을 리스트로 변환(Array to List) : Arrays.asList()
import java.util.*;
// 1. Array Initialize
String[] strArr = {"one", "two", "three"};
// 1.1. [배열 -> 컬렉션 함수] 배열 리스트(ArrayList) 선언 및 초기화합니다.
List<String> strArrList = Arrays.asList(strArr); // ArrayList : ["one", "two", "three"]
// 1.2. [배열 -> 컬렉션 함수] 배열 리스트(ArrayList) 선언 및 초기화합니다.
List<String> strArrList = new ArrayList<>(Arrays.asList(strArr)); // ArrayList : ["one", "two", "three"]
2. 리스트를 배열로 변환(List to Array) : List.toArray()
List<String> strArrList = Arrays.asList("one", "two", "three");
String[] resultArr = new String[strArrList.size()];
resultArr = strArrList.toArray(new String[resultArr.length]);
[Java/Short] Array <-> ArrayList 변환 방법
해당 페이지에서는 자주 사용하는 개발 패턴으로 배열을 리스트로 변환하거나 리스트를 배열로 변환하는 방법에 대해서 공유합니다. 1) 배열(Array)를 리스트(ArrayList)로 변환 : Array to ArrayList 💡
adjh54.tistory.com
6) 문자열 ↔ 문자열 배열, 문자 배열 : String ↔ String[]/char[]
1. 문자열을 문자열 배열로 변환 : String.split()
💡 split() 메서드를 이용하여서 ‘구분자(delimiter)’에 따라서 배열로 변환합니다.
String alphabet = "abcdefg";
String[] alphabetArr = alphabet.split("");
System.out.println("Array :: " + Arrays.toString(alphabetArr));// Array :: [a, b, c, d, e, f, g]
2. 문자열을 문자 배열로 변환: String.toCharArray()
💡 toCharArray()를 이용하여 문자열을 문자 배열로 변환합니다.
String alphabet = "abcdefg";
char[] alphabetCharArr = alphabet.toCharArray();
System.out.println("Char Array ::" + Arrays.toString(alphabetCharArr));// Char Array ::[a, b, c, d, e, f, g]
[Java/Short] 문자열을 배열로 변환 방법 : String to String[], char[]
해당 글에서는 문자열을 문자열 배열 혹은 문자 배열로 변환 방법에 대해서 확인해봅니다. 1) 구분자(delimiter) 💡 구분자(delimiter) 란? - 문자열을 나누는 기준이 되는 문자를 말합니다. - 예를 들
adjh54.tistory.com
7) 배열/리스트 ↔ 문자열 변환 : Array/List ↔ String
💡 String.join 함수를 이용하여서 Array, List를 문자열로 변환하는 예시입니다.
// List to String
List<String> list = new ArrayList<>();
list.add("Java");
list.add("List");
list.add("String");
String resultList = String.join("", list);
System.out.println(resultList);// "JavaListString"// Array to String
String[] arr = {"java", "List", "String"};
String resultArr = String.join("", arr);
System.out.println(resultArr);
[Java/Short] 배열, 리스트를 문자열로 변환 방법 : Array, List to String
해당 글에서는 값이 존재하는 배열이나 리스트 내용을 하나의 문자열로 변환하는 방법에 대해서 확인해봅니다. 1) String.join()를 이용한 방법 💡 String.join 함수를 이용하여서 Array, List를 문자열로
adjh54.tistory.com
8) 문자열(String) ↔ 정수(int) 간의 변환
1. 문자열을 부호가 포함된 문자열을 정수로 변환(String to int) : Integer.parseInt()
/*
* String to Integer : 오토 언박싱으로 즉시 int 타입으로 반환 받습니다.
* 부호가 존재하는 문자열을 Integer.parseInt()로 변환하였을 시 "부호"는 유지가 됩니다
*/
String s1 = "-1234";
String s2 = "+1234";
int minusInt = Integer.parseInt(s1); // -1234
int plusInt = Integer.parseInt(s2); // +1234
2. 문자열을 부호가 포함되지 않은 정수로 변환(String to int) : Math.abs()
/*
* int to int : 부호가 존재하는 int 타입을 Math.abs() 함수를 사용하면 "부호"는 유지되지 않습니다.
*/
int i1 = +12000;
int i2 = -12000;
int absPlusInt = Math.abs(i1); // 12000
int absMinusInt = Math.abs(i2); // 12000
/*
* String to Integer : 오토 언박싱으로 즉시 int 타입으로 반환 받습니다.
* 부호가 존재하는 문자열을 Math.abs()로 변환하였을 시 "부호"는 유지되지 않습니다.
*/
String s3 = "+12000";
String s4 = "-12000";
int absPlusInt2 = Math.abs(Integer.parseInt(s3)); // 12000
int absMinusInt2 = Math.abs(Integer.parseInt(s4)); // 12000
3. 정수를 문자열로 변환(int to String) : String.valueOf()
int i1 = 12000;
String s1 = "+" + String.valueOf(i1);
String s2 = "-" + String.valueOf(i1);
[Java/Short] 문자열을 배열로 변환 방법 : String to String[], char[]
해당 글에서는 문자열을 문자열 배열 혹은 문자 배열로 변환 방법에 대해서 확인해봅니다. 1) 구분자(delimiter) 💡 구분자(delimiter) 란? - 문자열을 나누는 기준이 되는 문자를 말합니다. - 예를 들
adjh54.tistory.com
9) 문자열 ↔ Date 변환
1. Date 타입을 문자열로 변환 : SimpleDateFormat.format()
/*
* Convert Date to String
*/
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat formatter3 = new SimpleDateFormat("HH");
String fullStr = formatter2.format(strToDate);
log.debug("fullStr :: " + fullStr); // 2019/05/01 00:59:29
String hourStr = formatter3.format(strToDate);
log.debug("hourStr :: " + hourStr); // 00
2. 문자열 Date 타입으로 변환 : SimpleDateFormat.parse()
String str4 = "2019/05/01 00:59:29";
SimpleDateFormat formatter4 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date strToDate2 = null; // Wed May 01 00:59:29 KST 2019
try {
strToDate2 = formatter4.parse(str4);
log.debug("strToDate :: " + strToDate2);
} catch (ParseException e) {
throw new RuntimeException(e);
}
3. Date 타입 연산 : Calendar
Calendar cal1 = Calendar.getInstance();
cal1.setTime(resultDate); // 시간 설정
cal1.add(Calendar.HOUR, 9); // 시간 연산
Date resultSumDate = new Date(cal1.getTimeInMillis()); // Wed May 01 09:59:29 KST 2019
[Java/Short] 문자열 <-> Date 타입 간의 변환 방법 : + Date 연산
해당 글에서는 String 타입을 Date 타입으로 변환하거나 Date 타입을 String 타입으로 변환하거나 Date 타입을 연산하는 방법에 대해서 확인해 봅니다. 1) SimpleDateFormat 💡 SimpleDateFormat 이란? - 문자열과
adjh54.tistory.com
10) 문자열 ↔ ASCII 코드 간의 변환
구분 | ASCII Code 범위 | 개발 코드 범위 |
대문자 | 65 ~ 90 | x >= 65 & x <= 90 |
소문자 | 97 ~ 122 | x >= 97 & x <= 122 |
숫자 | 48 ~ 57 | x >= 48 & x <= 57 |
알파벳 범위 | 65 ~ 90 && 97 ~ 122 | (x >= 65 & x <= 90) & (x >= 97 & x <= 122) |
1. 문자열을 ASCII 코드로 변환(String to ASCII Code) : String.charAt()
/*
* [CASE1] 문자열을 문자로 변환하고 다시 숫자(ASCII)로 변환하여 숫자 배열에 넣는 방식
* 주요 키워드 : charAt() 메서드를 이용하여 변환한다.
*/
String helloStr = "hello";
String[] helloStrArr = helloStr.split("");
int[] resultIntArr = new int[helloStrArr.length];
for (int i = 0; i < helloStrArr.length; i++) {
int helloItemNum = helloStr.charAt(i);
resultIntArr[i] = helloItemNum;
}
log.debug("resultIntArr :: " + Arrays.toString(resultIntArr)); // [104, 101, 108, 108, 111]
2. ASCII 코드를 문자열로 변환(ASCII Code to String) : (char)
/*
* 2. ASCII Code to String
*/
int asciiNumArr[] = {104, 101, 108, 108, 111};
char[] charArr = new char[asciiNumArr.length];
// int to String
for (int i = 0; i < asciiNumArr.length; i++) {
charArr[i] = (char) asciiNumArr[i];
}
log.debug("resultIntArr2 :: " + Arrays.toString(charArr)); // [h, e, l, l, o]
[Java/Short] String <-> ASCII Code 변환 방법
해당 페이지에서는 자주 사용하는 개발 패턴으로 문자열(String)을 ASCII Code로 변환하거나 ASCII Code를 문자열(String)로 변환하는 방법에 대해서 공유합니다. 1) 문자열을 ASCII Code로 변환 : String to ASCII
adjh54.tistory.com
11) 정수(10진법) ↔ N진법 간의 변환
1. 정수(10진법)를 N진법으로 변환(Decimal to N 진법) : Integer.toString(num, n)
int num = 10;
/*
* [CASE1] 10진법을 2진법으로 변환 방법 : Decimal notation to binary notation
*/
String decimalToBinary1 = Integer.toString(num, 2); // "1010"
String decimalToBinary2 = Integer.toBinaryString(num); // "1010"
/*
* [CASE2] 10진법을 8진법으로 변환 방법: Decimal notation to octal notation
*/
String decimalToOctal1 = Integer.toString(num, 8); // "12"
String decimalToOctal2 = Integer.toOctalString(num); // "12"
/*
* [CASE3] 10진법을 16진법으로 변환 방법: Decimal notation to hexadecimal notation
*/
String decimalToHex1 = Integer.toString(num, 16); // "a"
String decimalToHex2 = Integer.toHexString(num); // "a"
/*
* [CASE3] 10진법을 n진법 변환 방법: Decimal notation to n notation
*/
String decimalToThree = Integer.toString(num, 3); // "101"
String decimalToFive = Integer.toString(num, 5); // "20"
String decimalToSeven = Integer.toString(num, 7); // "13"
2. N진법을 정수로 변환(N진법 to Decimal) : Integer.parseInt(str, n)
String bin = "1010"; // 2진법
String three = "101"; // 3진법
String five = "20"; // 5진법
String seven = "13"; // 7진법
String oct = "12"; // 8진법
String hex = "a"; // 16진법
int binarayToDecimal = Integer.parseInt(bin, 2); // 10
int threeToDecimal = Integer.parseInt(three, 3); // 10
int fiveToDecimal = Integer.parseInt(five, 5); // 10
int sevenToDecimal = Integer.parseInt(seven, 7); // 10
int octalToDecimal = Integer.parseInt(oct, 8); // 10
int hexToDecimal = Integer.parseInt(hex, 16); // 10
[Java/Short] N진법 <-> 정수(10진법) 변환 방법: + N진법간 합 방법
해당 페이지에서는 자주 사용하는 개발 패턴으로 정수(10진법)을 N진법으로 변환하거나 N진법을 정수(10진법)으로 변환하는 방법에 대해서 공유합니다. 1) 10진법 to N진법 (Decimal to Binary, Octal, Hex, N
adjh54.tistory.com
12) 문자열 배열 ↔ 정수 배열
1. 문자열 배열을 정수 배열로 변환 : Arrays.stream().mapToInt(Integer::parseInt).toArray()
String[] stringArray = {"1", "2", "3", "4", "5"};
int[] intArray = Arrays.stream(stringArray)
.mapToInt(Integer::parseInt)
.toArray();
2. 정수 배열을 문자열 배열로 변환: Arrays.stream().mapToInt(String::valueOf).toArray()
int[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = Arrays.stream(intArray)
.mapToObj(String::valueOf)
.toArray(String[]::new);
[Java/Short] 문자열 배열 <-> 정수 배열 변환 방법
해당 글에서는 문자열 배열, 정수 배열 간의 캐스팅(형 변환) 방법에 대해서 이해합니다. 1) 문자열 배열을 정수 배열로 캐스팅(String[] → int[]) 1. for문을 이용한 캐스팅 : Integer.parseInt() 💡 배열을
adjh54.tistory.com
오늘도 감사합니다. 😀