[TIL] String 클래스

2026. 1. 28. 22:02·Programming Language/Java

스트링이라고 불리는 클래스 인스턴스

"test"
  • 여기서 test는 인스턴스입니다. 그렇다면 어떤 클래스의 인스턴스일까요
    • 자바에서 글씨는 모두 String Class에 의해 출력됩니다.
      • 이 때 큰 따옴표(””)와 함께 사용됩니다.
  • 만약 저장을 하고 싶다면
String str = "test"
  • 와 같이 사용할 수 있습니다.
  • → test에 대한 인스턴스를 생성하고 래퍼런스를 str에 저장

String 리터럴은 Heap 영역 내부의 String Constant Pool에 저장된다. 같은 문자열 리터럴은 하나의 객체를 공유한다.

String a = "test";
String b = "test";

a == b // true
String a = new String("test");
String b = new String("test");

a == b // false

스트링 인스턴스가 특별한 이유

  • BigDecimal bd = new BigDecimal("1.0") 이와 같이 다른 객체들은 생성자(constructor)가 있어야 만들 수 있었습니다
  • 그러나 str은 생성자가 없어도 만들 수 있고 생성자를 사용해 만들 수도 있다

생성자로 스트링 만드는법

String str = new String("Test")
  • 우리는 test를 스트링 리터럴 이라고 부릅니다.

스트링의 인덱스

⚠️스트링은 무조건 0부터 시작합니다!

charAt (한 문자 자르기)

  • 만약 어떤 하나의 문자를 출력하고 싶다면 charAt을 사용
String str = "Test"
str.charAt(0) // T
str.charAt(2) // s

 


substring (여러 문자 잘라내기)

String biggerString = "This is a lot of text"
  • 서브 스트링
    • 문자열에서 특정 부분을 잘라내어 새로운 문자열을 생성하는 메서드
    • 서브 스트링 메서드는 이 문자의 인덱스를 받는다
    • 해야될 것은 문자의 인덱스 번호를 넣으면 된다
biggerString.substring(5)
// "is a lot of text"

시작과 끝도 설정하기

biggerString.substring(5, 13)
// "is a lot"
  • 중요한 건 시작은 포함이고 끝은 포함하지 않는다는 것
    • 즉, 범위는 5 ~ 12까지

lastIndexOf (마지막에 있는 단어 찾기)

string.lastIndexOf('i');

contains (글자가 있는지 확인하기)

string.contains("text")
  • text 라는 단어가 존재하는지 찾고자 할 때 ‘text’를 값으로 입력하면 된다

startWith (특정 단어로 시작하는지 확인하기)

string.startsWith("This")

// true or false

endsWith (특정 단어로 끝나는지 확인하기)

string.endsWith("text")

// true or false

isEmpty (비어 있는지 확인하기)

string.isEmpty()

// true or false

equals(글자가 똑같은지 확인하기)

"true".equals("true")

// true
  • 대소문자가 다르게 인식됨

equalsIgnoreCase (대소문자 상관없이 글자가 똑같은지 확인하기)

"true".equalsIgnoreCase("TRUE") // true

// true

스트링 수정

  • 스트링은 불변의 객체로 값을 수정할 수 없습니다

 

  • 사진과 같이 문자를 합쳤음에도 str에서는 반영되지 않았습니다
  • 그냥 다른 스트링 값을 준 것!

  • 이런식으로 변수가 달라져야 저장
    • 즉, 우리가 스트링을 변경하려고 할 때 우리가 하는 것은 특정 스트링을 변경하는 것이 아닙니다
    • string.concat을 사용하면 새로운 스트링이 만들어지며 원래의 스트링은 영향을 받지 않고 그대로 남아 있게 됩니다.
  • ⇒ 이런 스트링의 특징을 불변성이라고 부릅니다
  • 스트링 클래스가 특정 값으로 한 번 생성된 이후에는 그 특정 값은 절대 바꿀 수 없습니다
    • 스트링에 메서드를 실행 시 새로운 스트링이 만들어지는 것.

toUpperCase (대문자로)

string.toUpperCase()

toLowerCase (소문자로)

string.toLowerCase()

trim (앞 뒤 간격 제거)

string.trim()

스트링과 숫자

1 + 2 // 3
"1" + "2" //"12"
"1" + 2 // "12"
"1" + 23 // "123"

1 + 2+ "3" // "33"
"1" + 2 + 3 // "123"
  • 이런 결과가 나오는 이유는 자바는 문자열 + 숫자는 = 문자열이 됩니다
  • 1 + 2+ “3” 과 “1” + 2 + 3의 차이점은 자바는 왼 → 오 으로 해석하기 때문
    • 1+2 = 3 이 되고 3 + “3” = “33”이 된다

예제

Sytem.out.println("Value is " + 20)
Sytem.out.println("Value is " + 20 + 20)
Sytem.out.println("Value is " + (20+20))
// Value is 20
// Value is 2020
// Value is 40
  • 괄호가 가장 먼저 연산되기 때문에 마지막은 40이 된다

join (문자 합치기)

String.join(",", "2", "3", "4")

// "2,3,4"

String.join(",", "A", "B", "4")
  • 첫 번째 문자는 어떤 문자를 합칠 것인지, 그리고 나머지는 뒤로 덧붙이고 싶은 숫자들이나 문자들

replace (문자열 대체하기)

"abcd".replace('a', 'z');

//zbcd

String 대체

StringBuffer

  • 자바에서 스트링을 생성할 수 있는 또 다른 클래스
  • 수정이 가능하다
StringBuffer sb = new StringBuffer("TEst");

  • 수정이 되고 결합이 많은 경우 String보단 StringBuffer가 더 유용

StringBuilder

StringBuffer와 유사하지만 동기화를 제공하지 않아 단일 스레드 환경에서 더 빠르다.

  • 스트링 버퍼는 동기화된 클래스인데
    • 이 말은, 멀티 스레딩이 가능한 클래스라는 말
      • 멀티 스레딩이 가능하다는 것은 그것으로 인한 패널티 또한 있다는 뜻
    • 싱글 스레드 시나리오의 경우 멀티 스레딩을 할 때 가지는 복잡한 사항들이 없는데 스트링 버퍼의 경우 속도가 매우 느려질 수 있고 그럴 때 사용하는 게 바로 스트링 빌더

'Programming Language > Java' 카테고리의 다른 글

[TIL] JAVA 배열에 관해서  (0) 2026.01.30
[TIL] Wrapper클래스  (1) 2026.01.28
[TIL]자바 프로그래밍의 참조 자료형  (0) 2026.01.28
[WIL] 자바 반복문 그리고 아쉬운 부분  (0) 2025.11.02
[TIL] While, Do While, Break, Continue 차이 정리  (0) 2025.11.02
'Programming Language/Java' 카테고리의 다른 글
  • [TIL] JAVA 배열에 관해서
  • [TIL] Wrapper클래스
  • [TIL]자바 프로그래밍의 참조 자료형
  • [WIL] 자바 반복문 그리고 아쉬운 부분
dev_Hyeonjoon
dev_Hyeonjoon
문제를 풀며 사람들에게 감동✨을 전하고 가치를 만드는 개발자가 되고 싶습니다 💻
  • dev_Hyeonjoon
    Hyeonjoon's code
    dev_Hyeonjoon
  • 전체
    오늘
    어제
    • 분류 전체보기 (50)
      • Programming Language (29)
        • JavaScript (0)
        • Java (27)
      • Front-end (10)
        • React-project (5)
        • Vanilla[JS]-project (5)
        • study (0)
      • AI Tools (1)
      • Back-end (0)
      • 독서록 (0)
      • 기타 (5)
      • Trouble Shooting (2)
        • Python (1)
      • 자격증 (1)
      • 알고리즘 (1)
        • 백준 (1)
      • FrameWork (0)
        • Node.js (Express.js) (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Til
    군자기계발
    자바
    구름IDE
    자바공부
    바닐라js
    자바기초
    객체지향
    조건문
    토이프로젝트
    파이썬
    코딩
    사지방코딩
    vanillajs
    리액트
    Java
    군대에서코딩
    형변환
    사지방
    OOP
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
dev_Hyeonjoon
[TIL] String 클래스
상단으로

티스토리툴바