java 221103

John·2022년 11월 3일
0

java

목록 보기
8/20
post-thumbnail

String

문자열을 어딘가에 담을땐 문자열의 내용이 아닌 문자열이 담긴 메모리주소의 참조값이 담긴다.

class ImmutableString {
   public static void main(String[] args) {
      String str1 = "Simple String";
      String str2 = "Simple String";
      String str3 = new String("Simple String");
      String str4 = new String("Simple String");  
      if(str1 == str2)
         System.out.println("str1과 str2는 동일 인스턴스 참조");
      else
         System.out.println("str1과 str2는 다른 인스턴스 참조");   
      if(str3 == str4)
         System.out.println("str3과 str4는 동일 인스턴스 참조");
      else
         System.out.println("str3과 str4는 다른 인스턴스 참조");
   }
}

위에서 str 1, str 2 두개와 str 3, str 4 두개는 생성방식도 달라진다.
1과 2는 리터럴로생성되어 문자열이 먼저 메모리에 올라간 후 각 1 과 2 주소값에 들어간다면
34는 각 방이 만들어지고 값이 들어간다

public static void main(String[] args) {
   String str = "two";
   switch(str) {
   case "one":
      System.out.println("one");
      break;
   case "two":
      System.out.println("two");
      break;
   default:
      System.out.println("default");
   }
}

따라서 위의 경우 switch 문은 정수를 기반으로 생성되기때문에
사용가능


기본자료형 값 문자열로 바꾸기

double e = 2.718281;
String se = String.valueOf(e);    //.val~ 로 호출한것으로보아 
								  //.value 는 static함수

문자열 연결

	String str = "AB".concat("CD").concat("EF");String str = ("AB".concat("CD")).concat("EF");String str = "ABCD".concat("EF");String str = "ABCDEF";

여기서는 사실 각각의 "" 안에 담긴 문자열들이
저마다 메모리에 할당된다!

스트링 원본불변의 법칙에 따라

"AB".concat("CD") 

이 과정에서 ab 와 cd, 그리고 합쳐진 값이 들어갈
총 세개의 방이 생긴다

따라서 최소한의 인스턴스를 생성시키기위해
문자열결합시에는 최적화를 이뤄야한다

String birth = "<양>" + 7 + '.' + 16; 
//위 자료들을 결합하려한다면...
String birth = (
	new StringBuilder("<양>")
    .append(7).append('.').append(16)).toString();

그 외에 문자열에 덧붙여 사용하는 함수들은 아래와 같다

**문자열이름.함수(값);**
+ .append(45678); 			//문자열 덧붙이기
+ .delet(0,2); 				//0번방부터, 2-1번방까지 지운다
+ .replace(0, 3, "AB");  	//0번방부터 3-1번방까지 "" 로바꾼다
+ .reverse();   			//뒤집는다!
+ String sub = 기존문자열.substring(2, 4); //2번자리부터 4-1 자리까지 
System.out.print(sub);   >문자 출력됨 //일부만 문자열로만든다
profile
hello there

0개의 댓글