코테

(코테) [Java] 형변환

그린티_ 2025. 5. 13. 09:48
반응형
  • valueOf() 하나로 대부분의 형변환을 해결할 수 있음
  • 객체(Wrapper 클래스)로 다룰 거면 valueOf(), 기본형(int, double)이 필요하면 parseXxx()
  1. 문자 → 숫자 : parseInt(), parseDouble(), parseFloat(), valueOf 사용
  2. 숫자 → 문자 : String.valueOf(), toString() 사용
  3. 정수 ↔ 실수 : (int), (double), (float) 캐스팅

완전 짱 큰 숫자!

이건 신기해서 찾았음

그냥 이런게 있구나~ 생각만 하면 괜찮을 듯 하네욤

BigInteger

import java.math.BigInteger;

public class Solution {
    public static void solution(String input) {
        // 입력값이 매우 크기 때문에 BigInteger를 사용
        BigInteger bigNum = new BigInteger(input);

        // BigInteger로 처리한 후, 필요한 연산 수행
        System.out.println(bigNum);
    }

    public static void main(String[] args) {
        String input = "78720646226947352489"; // 예시 입력
        solution(input);
    }
}

문자 → 숫자

String num = "10";

// String → Int
int i_num = Integer.parseInt(num); 
int i_num2 = Integer.valueOf(num); 

// String → Double, Float
double d_num = Double.parseDouble(num);
float f_num = Float.parseFloat(num);

// String → Long, Short
long l_num = Long.parseLong(num);    
short s_num = Short.parseShort(num); 

 

charAt을 통한 문자 하나씩 꺼내서 숫자로 변형해서 배열에 하나씩 넣는 경우

 

이게 가끔 문제가 문자열로 된 숫자를 다시 배열에 넣어서 하는 경우

"2345" 이런거 그럴 때 숫자로 바꿔서 사용해야하는데 처음에 어떻게 하는지 몰라 당황 ㅠ

'0'이 왜 필요한가?

for(int i = 0; i < n; i++){
	answer[i] = str.charAt(str.length() - 1 - i) - '0';
}

str.charAt()은 char을 반환하므로, 숫자로 변환하려면 '0'을 빼야 함!

문자 '0'의 ASCII 값은 48이므로, 이를 빼주면 숫자로 변환 가능!

ASCII 코드 값

문자 '0' '1' '2' '3'

ASCII 값 48 49 50 51

✔️ '5' - '0' → 53 - 48 = 5

✔️ '4' - '0' → 52 - 48 = 4

✔️ '3' - '0' → 51 - 48 = 3

즉, '0'을 빼주면 char가 int로 변환되면서 숫자 값이 됨! 🚀

🔹 숫자 → 문자

int num = 10;
double d_num = 10.1f;

// Int → String
String s_num1 = String.valueOf(num);
String s_num2 = Integer.toString(num);
String str = Long.toString(num);

// Double, Float → String
String s_num3 = String.valueOf(d_num);
String s_num4 = Double.toString(d_num);

🔹 정수 ↔ 실수

이거 가끔 f 까먹는데 꼭 붙여야함!

double d_num = 10.11;
float f_num = 10.111f;
int i_num = 10;

// 실수 → 정수 (소수점 버림)
int intNum1 = (int) d_num;
int intNum2 = (int) f_num;

// 정수 → 실수
double doubleNum = (double) i_num;
float floatNum = (float) i_num;

 

반응형

'코테' 카테고리의 다른 글

(코테) [Java] Heap  (1) 2025.05.15
(코테) [Java] Deque  (0) 2025.05.15
(코테) [Java] Queue  (0) 2025.05.15
(코테) [Java] Stack  (0) 2025.05.15
(코테) [Java] 배열 생성  (0) 2025.05.13