자바

[Java] String

juhoyang 2024. 9. 30. 15:42

String

- 모든 스프링의 리터럴은("") 클래스 인스턴스이다.

- 자바의 특별한 클래스

 

알아보기

문자열 "Hi"에 length() 메소드를 사용하면 아래와 같이 길이가 나온다. 

여기서 "Hi"는 인스턴스고 length()는 매서드인데 인스턴스를 선언 한적이 없는데 "Hi" 가 왜 인스턴스일까?

  - 먼저 자바의 문자열("")은 생성자가 필요없다. 스트링이라는 클래스에 의해 출력된다.

 

아래 str과 strSame 생성은 동일하다

- 생성자가 없어도 자바에서 자동으로 생성해준다.

 

관련 메소드

1) length()

- string의 문자열 길이를 반환한다. (맨위 예시참고)

 

2) charAt(위치값)

- 위치값에 해당하는 문자를 출력한다.

- 위치값은 문자열의 첫번째를 0을 기준으로 시작한다.

 

주소기준 참고

- "String" 일때

 

사용예시

 

3) substring(시작주소), substring(시작, 끝주소)

- 끝주소에 있는 문자는 포함하지 않는다.

 

인덱스의 범위가 넘어가면 어떻게 될까?

- 아래와 같은 에러가 발생한다.

 

 

(4) indexOf("찾을문자열"), indexOf('찾을문자')

- 처음 찾은 문자열에 첫번째 주소 반환

 

(5) lastIndexOf("찾을문자열"), lastIndexOf('찾을문자')

-  마지막에 찾은 문자열의 마지막 주소 반환

 

(6) contains("문자열")

 - 대상 문자열이 포함되면 true 아니면 false반환

 

(7) isEmpty()

 - 해당 string이 비었는지 확인

 

(8) equals("비교문자열") , equals(String변수명)

- 비교 문자열이 동일하면 true 아니면 false

 

(9) concat("문자열"), concat(변수)

 - 문자열을 이어준다.

 

(10) trim()

- 변수의 앞뒤 공백을 제거해준다.

 

(11) replace("대상문자열", "대체문자")

 - 대상문자열을 대체 문자로 변경한다.

String 불변객체

 - 스트링 변수에 매서드를 사용해도 해당 변수의 값이 변경되지는 않는다.

 

예시

- concat으로 str에 문자열을 붙였지만 str변수에는 반영이 안됨 

 

연산

더하기(+)

- 문자열과 +연산으로 만나는 자료형은 문자열로 붙어진다.

 

- str2의 경우 1+2 에서는 정수 연산이 되고 3 + "3" 에서 문자열로 붙어졌다

 

String의 대체 StringBuffer, StringBuilder

기존 String의 문제점

- 수정시 기존 변수의 수정이 안된다.

 

- 아래와 같이 수정이 있을때마다 새롭게 String을 생성해서 넣어줘야한다.

 

StringBuffer

- string을 생성할 수 있는 클래스, 생성자를 꼭 써야한다.

-  수정시 변수의 값 자체가 변경된다.

-  문자의 결합, 수정을 자주 수행하는 경우, String인스턴스를 많이 생성 해야할때 사용

- 멀티스레딩 가능

 

StringBuilder

- stringbuffer보다 최신에 나옴

- 싱글스레드 시나리오일때 사용 (멀티 스레딩의 복잡한 사항이 없을때 stringBuffer는 느릴수 있음)

'자바' 카테고리의 다른 글

[Java] Date 타입 (LocalDate, LocalDateTime, LocalTime)  (0) 2024.10.02
[Java] 래퍼 클래스  (0) 2024.10.02
[Java] 기본형, 참조형데이터  (0) 2024.09.27
[Java] 생성자  (0) 2024.09.27
[Java] 캡슐화, 추상화  (5) 2024.09.26