📘 Backend/Java

Java String Class

신건우 2023. 3. 31. 13:15

📘 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