String 클래스

wooj·2022년 9월 19일
0

Java

목록 보기
4/5

String 클래스

: String class는 문자열의 타입으로 사용되며 메서드들을 가지고 있다.

  • 문자열 리터럴을 String 타입의 변수 name1에 할당하는 방법
String name1 = "wooj";  
  • String 클래스의 인스턴스를 생성하여 name2에 할당하는 방법
String name2 = new String("wooj");

// name1과 name2는 문자열이 존재하는 메모리 공간 상의 주소값을 저장한다.

System.out.print(name1); // "wooj"
System.out.print(name2); // "wooj"

=> 주소값이 아닌 문자열이 반환되었다

why??

  • String 타입의 변수를 참조시 String 클래스의 메서드인 toString()이 자동으로 호출된다.
  • String 타입의 변수가 저장하고 있는 주소값에 위치한 String 인스턴스의 내용을 문자열로 변환.

⭐ 문자열 리터럴 할당 vs 객체할당

String name1 = "wooj";
String name2 = "wooj";

String name3 = new String("wooj");
String name4 = new String("wooj");

boolean comparison1 = name1 == "wooj";            // true (문자열 리터럴은 내용이 같다면 같은 주소값을 가지기 때문)
boolean comparison2 = name1 == name2;             // true (문자열 리터럴은 내용이 같다면 같은 주소값을 가지기 때문)
boolean comparison3 = name1 == name3;             // false (별개의 인스턴스가 생성되어 주소가 다르다)
boolean comparison4 = name3 == name4;             // false (별개의 인스턴스가 생성되어 주소가 다르다)
boolean comparison5 = name1.equals("wooj");       // true (equals() 메서드를 통해 문자열이 같으므로 true 반환 )
boolean comparison6 = name1.equals(name3);        // true (equals() 메서드를 통해 문자열이 같으므로 true 반환 )
boolean comparison7 = name3.equals(name4);        // true (equals() 메서드를 통해 문자열이 같으므로 true 반환 )
  • 동일한 문자열 리터럴을 할당하는 경우 두 변수는 같은 문자열의 참조값을 공유한다.
    => name1, name2가 저장하고 있는 주소값은 동일하다.

  • String 클래스의 인스턴스를 생성하게 되면 문자열이 같더라도, 별개의 인스턴스가 따로 생성된다.
    => name3, name4는 다른 주소값을 저장한다.

  • .equals()는 문자열 내용을 비교하며 == 는 저장한 주소값을 비교한다.

⭐ String 클래스의 메서드

charAt()

해당 문자열의 특정 인덱스에 해당하는 문자를 반환

String str = new String("Wooj");
System.out.println(str); // "wooj"

System.out.println(str.charAt(0)); // 'w'
System.out.println(str.charAt(1)); // 'o'
System.out.println(str.charAt(2)); // 'o'
System.out.println(str.charAt(3)); // 'j'

compareTo()

해당 문자열을 인수로 전달된 문자열과 사전 편찬 순으로 첫 문자부터 비교한다.

해당 문자열이

  • 전달된 문자열과 같다면 0
  • 전달된 문자열보다 작으면 음수
  • 전단될 문자열보다 크면 양수
	String str = "abcd";
    
     System.out.println( str.compareTo("abcd") );  // 0  (같으므로 0)
        System.out.println( str.compareTo("ab") );  //  2 (abcd와 ab의 길이차이가 2이므로 2반환)
        System.out.println( str.compareTo("a") );  //  3 (길이차이가 3이므로 3반환)
     
        System.out.println( "".compareTo(str) );  //  -4 (길이차가 4이므로 4 반환)
         
System.out.println( str.compareTo("c") );  //  -2      

// 첫문자부터 바로 다를 경우 아스키코드를 비교하여 값을 반환한다. 

System.out.println( str.compareTo("ABCD") );  //  32
// 마찬가지로 a와 A는 다르기에 아스키코드 차이를 반환한다.

compareToIgnoreCase() 메서드를 사용한다면 대소문자 구분을 하지않게 된다.

System.out.println( str.compareToIgnoreCase("ABCD") ); // 0

concat()

indexOf()

trim()

toLowerCase() toUpperCase()

profile
wooj

0개의 댓글