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 |