Java String Class

2023. 3. 31. 13:15·📘 Backend/Java
목차
  1. 📘 String
  2. equals()
  3. Comparison()
  4. charAt()
  5. compareTo()
  6. concat()
  7. indexOf()
  8. trim()
  9. toLowerCase() 와 toUpperCase()

📘 String

자바에서 문자열을 다루는 클래스이며, 유용한 메서드들을 많이 제공한다.


" "(큰따옴표)를 사용한다.

  • 자바는 다른타입과는 다르게 문자열만 class를 통해 다룸
  • class는 그 자체로 타입으로 사용될 수 있으며, 연관된 기능들을 묶을 수 있음
  • 즉, String class = 문자열 타입이며 , 그 안에 있는 메소드들을 통해 여러 문자열 관련 메소드 사용 가능

String Type의 변수 선언 / 문자열 리터럴 할당

img


위의 2가지의 공통점과 차이점

  • class로 instance를 찍어내고자 할때 new 연산자를 사용
  • String 타입의 변수는 String 변수명; 으로 선언 가능
  • 선언한 변수에 문자열을 할당하는 방법
    • 문자열 리터럴 : 변수 = "문자열";
    • String 클래스의 인스턴스를 생성하여 할당 : 변수 = new String("문자열");

공통점

  • 참조타입의 변수에 할당됨
  • 문자열의 내용을 값으로 가지고 있는게 아니라, 문자열이 존재하는 메모리 공간상의 주소값을 저장하고있음.
  • 하지만 출력해보면 주소값이 아닌 문자열의 내용 출력됨

Why?

img


equals()

  • . 앞의 변수가 저장하고 있는 문자열의 내용과 ()안의 문자열의 내용이 같은지 비교하여 boolean 값 출력
  • 내용이 같은지만 비교하는 메서드

1번 방법

  • name1 / name2는 1번의 방법인 문자열 리터럴을 String 타입의 변수에 직접 할당함.
  • 동일한 문자열리터럴을 두 변수에 할당하는경우, 두 변수는 같은 문자열의 참조값 공유

2번방법

  • String 클래스의 인스턴스를 생성하여 String 타입의 변수에 할당하는 방법
  • 클래스의 인스턴스를 생성하면 문자열의 내용이 같아도, 별개의 인스턴스가 따로 생성됨
  • name3 / name4가 할당받은 인스턴스의 참조값은 서로 다름. 즉 서로 다른 주소값 저장하고 있음

Comparison()

Comparison1

- name1은 Kim Coding 이라는 문자열 리터럴을 직접할당, 우항 또한 같은내용이기에(같은 주소값) true 반환


Comparison2

- name1 / name2도 내용이 같은 문자열 리터럴 직접할당 받은 변수, 두 변수는 같은 문자열의 참조값이므로 true 반환


Comparison3

- name3에서 인스턴스를 생성하여 할당받은 변수이며, 주소값이 달라서 false 반환


Comparison4

- String 클래스토 인스턴스를 생성하면 항상 별개의 인스턴스 생성 = 다른 주소값 = false 반환


Comparison5

- equals() 는 내용이 같은지만 비교하므로 true (참조값도 같음)


Comparison6

- equals()는 내용이 같은지만을 비교하므로 true (참조값 다름)


Comparison7

- equals()는 내용이 같은지만을 비교하므로 true (참조값 다름)


charAt()

  • 해당 문자열의 특정 인덱스에 해당하는 문자 반환
  • 해당 문자열의 길이보다 큰 인덱스나 음수를 전달하면 오류 발생

img문자열의 각 문자를 charAt() 메소드를 이용하여 하나씩 출력하는 예제


compareTo()

  • 해당 문자열을 인수로 전달된 문자열과 사전 편찬 순으로 비교함.
  • 문자열 비교 시 대소문자 구분
  • 두 문자열이 같다면 0 반환, 해당 문자열이 인수로 전달된 문자열보다 작으면 음수, 크면 양수 반환
  • 대소문자를 구분하지 않기를 원한다면 compareToIgnoreCase() 를 사용

img


concat()

  • 문자열의 뒤에 인수로 전달된 문자열을 추가한 새로운 문자열 반환
  • concat은 concatenate의 약자로 사전적으로 연결을 의미
  • 인수로 전달된 문자열의 길이가 이면, 해당 문자열을 그대로 반환

img

출력값

문자열 : Java
Java수업
concat() 메서드 호출 후 문자열 : Java


indexOf()

  • 문자열에서 특정문자나 문자열이 처음으로 등장하는 위치의 인덱스 반환
  • 문자열에 전달된 문자나 문자열이 포함되어 있지 않으면 -1을 반환

img

출력값

문자열 : Oracle Java
-1
2
7
indexOf() 메서드 호출 후 원본 문자열 : Oracle Java


trim()

  • 문자열의 맨앞과 맨뒤에 포함된 모든 공백문자 제거

img

출력값

문자열 : Java
Java |
Java|
trim() 메서드 호출 후 문자열 : Java


toLowerCase() 와 toUpperCase()

  • toLowerCase() 문자열의 모든 문자를 소문자 변환
  • toUpperCase() 문자열의 모든 문자를 대문자 변환

img

출력값

문자열 : Java
java
JAVA
두 메서드 호출 후 문자열 : Java

'📘 Backend > Java' 카테고리의 다른 글

Java Operator & I/O  (0) 2023.03.31
Java Final  (0) 2023.03.31
Java Type  (0) 2023.03.31
Java 예약어  (0) 2023.03.31
Java 기초 (Method, Variable)  (0) 2023.03.31
  1. 📘 String
  2. equals()
  3. Comparison()
  4. charAt()
  5. compareTo()
  6. concat()
  7. indexOf()
  8. trim()
  9. toLowerCase() 와 toUpperCase()
'📘 Backend/Java' 카테고리의 다른 글
  • Java Operator & I/O
  • Java Final
  • Java Type
  • Java 예약어
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      GStreamer #Pipeline
      Lock #Thread #Concurrency
      React #Markdown
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    Java String Class
    상단으로

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.