[Java 2일차] String, BigInteger 잡기술들
- String 사용시 주의점
String str1 = "abc";
String str2 = "abc";
String str3 = new String("abc");
String str4 = new String("abc");
System.out.println(str1==str2);
System.out.println(str3==str4);
System.out.println(str1.equals(str2));
System.out.println(str3.equals(str4));
결과값은??
true
false
true
true
str3의 주소값과 str4의 주소값이 다르기 때문이다.
그니깐 가급적 string을 비교할땐 .equals를 쓰자.
- String IndexOf();
String str = "AA:BB:CC:DD" 에서 ':' 위치 추적 (추후에 KMP에 응용이 된다고 한다는데... 일단)
1
2
3
4
5
6
7
8
9
10
11
|
String str = "AA:BB:CC:DD";
int idx = 0;
while(1)
{
idx = str.indexOf(":");
if(idx == -1)
break;
sysout("idx");
idx++;
}
|
cs |
그렇다면
String str[] = split("AA:BB:CC:DD:") 를 split 하면 몇개가 나올까??
답:
4개가 나온다. :뒤에 null이 있다면 무시를 한다.
만약 마지막에 : 가 나온다는것을 알때 뒤에도 size책정을 하고 싶으면 문자열 끝에 무언가의 값을 넣어준다.
이 테크닉이 필요한 문제
www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=893&sca=99
-StringBuilder
않이 String 이 있는데 StringBuilder를 왜 알아야 함?
1
2
3
4
5
6
7
8
|
String s1 = "";
StringBuilder s2 = new StringBuilder();
for(int i = 0 ; i < 100000 ; i++) {
s1 += 'a';
s2.append('a');
}
|
cs |
둘다 a를 갖다 붙이는 것이다.
근데 실행 시간이 string은 3초나 걸리는데 stringbuilder는 0초다.
또한 s2.reverse()라고 문자열 뒤집기도 있다.
.append() , .reverse()를 쓰기 위해서 사용한다. 이유는 더 있을텐데 일단은 이정도....
BigInteger
- Long 이상의 정수를 쓰는데 사용된다.
1
2
3
4
5
6
7
8
9
10
11
12
|
BigInteger bi1 = new BigInteger("123");
BigInteger bi2 = new BigInteger("456");
System.out.println(bi1.add(bi2));
System.out.println(bi1.multiply(bi2));
System.out.println(bi1.divide(bi2));
System.out.println(bi1.subtract(bi2));
System.out.println(bi1.mod(new BigInteger("2")));
|
cs |