- 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

 

+ Recent posts