[Java] String

오형상·2024년 1월 7일
0

java

목록 보기
3/7
post-thumbnail

String 클래스

String 클래스의 이해

✔ String 클래스는 byte(char) 배열을 통해 문자열을 저장하고 표현

✔ JVM 내부 메모리에서의 저장 모습 👇

String 객체 생성하는 방법 2가지

  1. 리터럴로 생성 (다이렉트로 값을 넣기)

  2. 메서드를 활용하여 생성 (new 키워드를 이용하여 값을 넣기)

public class StringTest {

	public static void main(String[] args) {
	     
	 // 1️⃣
     String s1 = "java";
     String s2 = "java";
     
	 // 2️⃣
     String s3 = new String("java");
     String s4 = new String("java");
     
     if(s1 == s2 ) {
    	 System.out.println("같습니다.");
     } else {
    	 System.out.println("다릅니다.");
     }

		 if(s3 == s4) {
    	 System.out.println("같습니다.");
     } else {
    	 System.out.println("다릅니다.");
     }
	}
}

[실행 결과]
같습니다.
다릅니다.

  • ❓ s1과 s2가 같은 이유는?

👉 리터럴은 상수의 일종으로 변하지 않는 값으로, 변수에서 이미 메모리에 저장이 되어 있던 값을 담고자 할때 특정 인스턴스 풀에 있는 해당 값을 그대로 참조하게 됨 (결국 같은 공간을 가리킴으로써 주소값이 같음)

  • ❓ s3과 s4가 다른 이유는?

👉 new를 이용한 객체를 생성함으로써 메모리에 각자 다른 위치에 다른 주소값을 가지고 생성되고, == 을 이용하는 것은 객체의 주소값을 비교 하기 때문에 다릅니다 라는 결과가 출력


String 메소드 예시

1️⃣ 문자열 비교하기

💡 .equals()

✔ 객체와 객체가 같은 것인지 비교한다.

  • 예시
    public class Test {
    
    	public static void main(String[] args) {
    		String s1 = "Java";
    		String s2 = "Java";
    		String s3 = new String("Java");
    		String s4 = new String("Java");
    		if(s1 == s2)
    			System.out.println("true");
    		else
    			System.out.println("false");
    		if(s3 == s4)
    			System.out.println("true");
    		else
    			System.out.println("false");
    		if(s3.equals(s4))
    			System.out.println("true");
    		else
    			System.out.println("false");
    	}
    }

    [실행 결과]
    true
    false
    true

2️⃣ 문자 추출

💡 .charAt()

✔ 문자열 해당 인덱스의 값을 반환한다.

  • 예시
    public class Test {
    
    	public static void main(String[] args) {
    		String subject = "자바 프로그래밍";
    		char charValue = subject.charAt(3);
    		System.out.println(charValue);
    	}
    }

    [실행 결과]

3️⃣ 문자열 안에서 단어 찾기

💡 .indexOf()

✔ 해당 단어의 인덱스를 반환한다.

✔ 단어가 없으면 -1을 반환한다.

  • 예시
    public class Test {
    
    	public static void main(String[] args) {
    
    		String str = "the cat is on the table";
    		int index = str.indexOf("table");
    		if(index ==-1)
    			System.out.println("table은 없습니다.");
    		else
    			System.out.println("table의 위치: " + index);
    	}
    }

    [실행 결과]
    table의 위치: 18

4️⃣ 문자열 길이

💡 .length()

✔ 문자열 길이를 반환한다.

✔ 공백도 포함된다.

  • 예시
    public class Test {
    
    	public static void main(String[] args) {
    
    		String str = "the cat is on the table";
    
    		System.out.println(str.length());
    	}
    }

    [실행 결과]
    23

5️⃣ 공백 잘라내기

💡 .trim()

👉 문자열의 처음과 마지막의 공백을 제거하는 메서드

가운데 공백은 제거해주지 않음 -> replace 함수를 사용해 제거해야 함

  • 예시
    public class StringEx {
        public static void main(String[] args) {
    
            String trimStr = " I Love you ";
    
            System.out.println(trimStr);
            System.out.println(trimStr.trim());
        }
    }
    
    

    [실행 결과]
    I LOVE YOU
    I LOVE YOU

6️⃣ 문자열을 단어로 분리

💡 .split()

👉 Split은 구분자를 기준으로 문자열을 나누어 배열로 저장하여 리턴하는 메서드

✔️ 문법

  • 1️⃣ split(String regex) : 문자열을 정규식에 맞춰서 분리

     public class StringEx {
         public static void main(String[] args) {
     
             String[] tokens = "I am a boy".split(" ");
     
             for (String token : tokens) {
                 System.out.println(token);
             }
         }
     }
     
     

    [실행 결과]
    I
    am
    a
    boy

      // 구분자 여러개
      public class StringEx {
      	public static void main(String[] args) {
      		String str = "안녕하세요,이메일주소는 hongil@naver.com";
      		String[] ArraysStr = str.split(",|@|-| ");
      		
      		for(String s : ArraysStr)
      			System.out.println(s);
      	}
      }
      

    [실행 결과]
    안녕하세요
    이메일주소는
    hongil
    naver.com

  • 2️⃣ split(String regex, int limit) : 위와 같으나 limit만큼 문자열을 자름

      public class StringEx {
      	public static void main(String[] args) {
      
              String str = "123 4 5 67 890  ";
      
              String[] LimitThree = str.split(" ", 3);
              
              for(int i = 0; i < LimitThree.length; i++)
                  System.out.println(i + "배열 : " + LimitThree[i]);
      
          }
      }
      

    [실행 결과]
    0배열 : 123
    1배열 : 4
    2배열 : 5 67 890

7️⃣ valueOf()

💡 .valueOf()

👉 valueOf() 메소드는 ()괄호 안의 해당 객체를 String 객체로 변환시키는 역활

  • 예시
     public class StringEx {
         public static void main(String[] args) {
             String a = "1234";
             String b = String.valueOf(10);
             String c = String.valueOf(a);
             String d = String.valueOf(true);
             String e = String.valueOf(false);
             
     
             System.out.println(a);
             System.out.println(b);
             System.out.println(c);
             System.out.println(d);
             System.out.println(e);
         }
     }
     

    [샐행 결과]
    1234
    10
    1234
    true
    false


Reference

0개의 댓글