CLASS/JAVA

#13-1 / String, StringBuilder, StringBuffer

hingu 2024. 5. 20. 09:55
⚡  new String()
같은 자료형 또는 자료형 클래스라고 할지라도 new가 붙었다면
인스턴스 영역(메모리)으로 변경되므로 비교하는 상황이 달라질 수 있다
String a = "a1234";
String b = "a1234";
String c = new String("a1234"); //new : 인스턴스 생성 == RAM에 올라갔단 뜻
String d = new String("a1234");

System.out.println(a==b); //true
System.out.println(a.equals(b)); //true
System.out.println(a==c); //false
System.out.println(a.equals(c)); //true
System.out.println(c==d); //false

 

⚡ StringBuffer,StringBuilder
StringBuilder,StringBuffer : 멀티스레드 이용(스레드란? 작업공간)
웹 자체는 단일스레드이기 때문에 웹에서는 StringBuilder를 많이 사용함
String보다 빨라서 게시판 등 작업에 많이 사용
//얘네도 new이므로 메모리 올라감

//멀티 스레드가 빠름,단일스레드일 경우 속도가장느림 but 안정성 good,로스x
  //앱에서 많이 사용
StringBuffer sb = new StringBuffer(); 
sb.append("홍길동");
sb.append("님 환영합니다");
System.out.println(sb); //홍길동님 환영합니다

//단일 스레드가 빠름,로스발생 확률있음(빠르지만 불안정)
  //웹 자체는 단일스레드이기 때문에 웹에서는 얘를 많이 사용함
StringBuilder sb2 = new StringBuilder(); 
sb2.append("이순신");
sb2.append("포인트는 5000");
System.out.println(sb2); //이순신포인트는 5000