✅ 자바 8강 – 문자열 완전 정복!

🧠 개념 설명

1️⃣ String은 객체다!
자바의 문자열은 String 클래스의 객체예요.
"Hello"라고 써도 사실 내부적으로 new String("Hello")처럼 동작해요.

2️⃣ 문자열은 불변이다!
String한 번 만들어지면 내용이 바뀌지 않아요!
문자열을 바꾸면 기존 문자열이 수정되는 게 아니라 새로운 문자열이 생성되는 구조예요.

3️⃣ String vs StringBuilder
문자열을 자주 수정할 땐 StringBuilder를 사용하면 성능이 훨씬 좋다!


💻 예제 1 – 문자열 선언과 출력

public class StringExample1 {
    public static void main(String[] args) {
        String greeting = "안녕하세요";
        System.out.println(greeting);
    }
}

📌 String greeting = "..." 은 자바에서 가장 흔한 선언 방식이에요.


💻 예제 2 – 문자열 비교

public class StringExample2 {
    public static void main(String[] args) {
        String a = "hello";
        String b = "hello";
        String c = new String("hello");

        System.out.println(a == b);       // true (리터럴 비교)
        System.out.println(a == c);       // false (객체 비교)
        System.out.println(a.equals(c));  // true (내용 비교)
    }
}

⚠️ ==는 주소 비교, equals()는 실제 내용 비교! 반드시 구분할 것!


💻 예제 3 – 문자열 자르기, 붙이기

public class StringExample3 {
    public static void main(String[] args) {
        String name = "AlphaGPT";

        String sub = name.substring(0, 5); // Alpha
        String upper = name.toUpperCase(); // ALPHAGPT
        String joined = name + "는 똑똑하다";

        System.out.println(sub);
        System.out.println(upper);
        System.out.println(joined);
    }
}

✂️ substring, toUpperCase, + 연산 등 문자열은 다양한 기능 제공!


💻 예제 4 – StringBuilder 사용

public class StringBuilderExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("Alpha");
        sb.append(" ");
        sb.append("is fast!");

        System.out.println(sb.toString());
    }
}

+로 계속 붙이는 것보다 StringBuilder가 더 빠르고 효율적이에요.


💡 문자열 유틸 메서드 예시

  • length() : 문자열 길이
  • charAt(i) : i번째 문자
  • contains("abc") : 포함 여부
  • replace("a", "b") : 치환
  • trim() : 앞뒤 공백 제거
  • split(",") : 분리하기

🧠 정리 한 줄 요약

자바에서 문자열은 객체이며 불변이다!
비교는 equals, 수정은 StringBuilder, 활용은 무한대!

👉 다음 강의 보기 – 자바 9강: 메서드 정의와 호출