문자열 s를 숫자로 변환한 결과를 반환하는 함수,
1 이상 5이하길이의 맨앞에 부호(+, -)가 올 수 있는 문자열을 숫자로 바꾸는 문제
class Solution {
public int solution(String s) {
int answer = 0;
answer = Integer.parseInt(s);
return answer;
}
}
처음에는 하나하나 for문으로 검사해야 하나라고 생각했는데 생각해보니 음수일때는 '-'가 붙어서 나오고 양수일때 는'+' 기호가 붙지 않으니 단순히 string을 int 로만 바꾸면 될 것이라고 생각함.
for문 돌면서 문자열 하나하나 형변환 해줄 생각도 했기 때문에 문자열과 형변환 대해서 정리해두려함
🔍 자주쓰이는 형 변환(casting)
위의 사진에서 왼쪽에서 오른쪽으로의 변환은 자동 형변환이 일어나며 반대 방향으로의 변환은 반드시 강제 형변환을 해주어야함
다음은 자동으로 변환이 이뤄지지 않고, 자주쓰이는 것들을 정리해 보았음
String str = Integer.toString(i);
String str = "" + i;
int i = Integer.parseInt(str);
int i = Integer.valueOf(str).intValue();
String s_num = "10";
double d_num = Double.valueOf(s_num);
float f_num = Float.valueOf(s_num);
int i = (b)? 1 : 0;
🔍 문자열 합치기 방법
1. +
문자열을 먼저 StringBuilder로 변환시킨뒤, Append로 문자열을 더하고 다시 toString함수로 문자열로 반환해주는 방식이다.
String a = "카페에서 ";
String b = "아아";
System.out.println(a+b);
//카페에서 아아
String a = "고구마랑 ";
String b = "얼린귤";
System.out.println(a.concat(b));
//고구마랑 얼린귤
String abc = new StringBuilder()
.append("A")
.append("B")
.append("C").toString();
결론
▶️ 기본적으로 + 연산자를 쓰자.
▶️ multithreaded 환경에서는 StringBuffer
▶️ 반복문에서의 작업이나 다양한 문자열 작업 처리는 StringBuilder 또는 StringBuffer
public int getStrToInt(String str) {
boolean Sign = true;
int result = 0;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch == '-')
Sign = false;
else if(ch !='+')
result = result * 10 + (ch - '0');
}
return Sign?1:-1 * result;
}