15장 - String
- String 클래스는 final 클래스인가요? 만약 그렇다면, 그 이유는?
- 더 이상 확장할 수 없도록 하기 위해서
- String 클래스가 구현한 인터페이스에는 어떤 것들이 있나요?
- Serializable - 구현해야 하는 메소드가 하나도 없음, 해당 객체를 파일로 저장하거나 다른 서버에 전송 가능한 상태가 됨
- Comparable<> - compareTo()라는 메소드 하나만 선언되어 있음
- CharSequence - 해당 클래스가 문자열을 다루기 위한 명시적으로 나타내는데 사용
- String 클래스의 생성자 중에서 가장 의미 없는 생성자는 무엇인가요?
- 기본 생성자
- String 문자열을 byte 배열로 만드는 메소드의 이름은 무엇인가요?
- getbytes()
- String 문자열의 메소드를 호출하기 위해 반드시 점검해야하는 사항은 무엇인가요?
- null 체크
- String 문자열의 길이를 알아내는 메소드는 ?
- length()
- String 클래스의 equals() 메소드와 compareTo()메소드의 공통점과 차이점은?
- 값을 비교, 결과값을 equals()는 boolean으로 리턴하고 compareTo()는 int로 리턴
- 문자열이 "서울시"로 시작하는지를 확인하려면 String의 어떤 메소들르 사용하나요?
- startswith()
- 문자열이 "한국" 이라는 단어의 위치를 찾아내려고 할 때는 String의 어떤 메소드를 사용해야 하나요?
- indexOf()
- 9번 문제의 답에서 "한국"이 문자열에 없을 때 결과값은?
- -1
- 문자열의 1번째부터 10번째 위치까지의 내용을 String으로 추출하려고 합니다. 어떤 메소드를 사용해야 하나요?
- substring()
- 문자열의 모든 공백을 * 표시로 변환하려고 할때 어떤 메소드를 사용하나요?
- replaceAll("*","")
- String의 단점을 보완하기 위한 두개의 클래스는?
- StringBuilder, StringBuffer
- 13번의 답에서 문자열을 더하기 위한 메소드의 이름은?
- append()
가장 많이 사용하는 생성자
- String(byte[] bytes)
- String(byte[] bytes, String charsetName)
String문자열을 byte로 변환하기
- getBytes() 기본 캐릭터 셋의 바이트 배열을 생성
- 한글을 byte 배열로 만들 때 어떤 캐릭터셋을 쓰느냐에 따라 배열의 크기가 다르다. EUC-KR의 경우 한글 두글자를 표현하기 위해 4바이트를 사용하지만, UTF-16은 6바이트를 사용
- try-catch로 감싸주어야 하는 메소드와 생성자
- byte 배열과 String 타입의 캐릭터 셋을 받는 생성자
- getBytes()메소드 중에서 String 타입의 캐릭터 셋을 받는 메소드
객체의 널체크
어떠한 참조 자료형도 널이 될 수 있으므로, 객체가 널이면 아무런 초기화가 되어있지 않아 클래스에 선언되어 있는 메소드를 사용할 수 없음을 의미한다.
- != or ==
- length()로 길이로 체크하기
- isEmpty() 문자열이 비어있는지 체크하기
문자열이 같은지 비교하는 메소드
- equals()
- boolean으로 일치하면 true 아니면 false리턴
- compareTo()
- 보통 정렬시에 사용. 비교하려는 매개 변수로 넘겨준 String 객체가 알바펫 순으로 앞에있으면 양수를 뒤에 있으면 음수를 리턴
- contentEquals()
- IgnoreCase()가 붙은 메도드들은 대소문자를 구분 할지 안할지만 체크
- String의 경우 동일한 값을 갖는 객체가 있으면, 이미 만든 객체를 재사용하므로, equals() 메소드 사용해서 비교해야함
특정 조건에 맞는 문자열이 있는지 비교하는 메소드
- startsWith() - 비교하려는 문자열로 시작하는지 비교
- endsWith() - 비교하려는 문자열로 끝나는지 비교
- contains() - 비교하려는 문자열이 포함되는지 비교
- matches() - contains()와 비슷하지만 매개변수로 넘어오는 값이 정규표현식으로 되어있어야함. 이메일을 점검하거나 웹 페이지의 url을 점검
- regionMatches() - 문자열 중에서 특정 영역이 매개 변수로 넘어온 문자열과 동일한지 확인
- ingoreCase : true일 경우 대소문자 구분하지 않고 값을 비교
- toffset : 비교 대상 문자열의 확인 시작 위치를 지정
- other : 존재하는지를 확인할 문자열을 의미
- oofset : other 객체의 확인 시작 위치를 지정
- len : 비교할 char의 개수를 지정
indexOf()
- indexOf 해당 객체의 특정 문자열이나 char가 있는 위치를 알 수 있다
- lastIndexOf()는 뒤에서부터 찾는다
- char는 정수형이므로 이 메소드의 매개변수로 char를 넘겨주면 자동으로 형변환을 함
substring()
- 문자열의 일부 값을 잘라내는 메소드
split()
- 문자열을 여러개의 String 배열로 나누는 메소드
concat()
- 매개 변수로 받은 str을 기존 문자열의 우측에 붙인 새로 문자열 객체로 생성하여 리턴
trim()
- 문자열의 맨 앞과 맨 뒤에 있는 공백들을 제거한 문자열 객체를 리턴
replace(), replaceAll()
- 내용을 교체
format()
- 정해진 메기준에 맞춘 문자열이 있으면 그 기준에 있는 내용을 변환
toLowerCase(), toUpperCase()
- 대소문자로 변경
valueOf()
- 기본 자료형을 문자열로 변환하는 메소드
- null인 객체는 toString()을 사용할수 없어 NPE를 방지하기 위해 사용권장
intern()
- == 으로 동일한지 비교 가능하나 성능 차이가 많다
- 새로운 문자열을 문자열 풀에 값을 할당하도록 만들면 저장되는 영역은 한계가 있어 그 영역에 대해 별도로 메모리를 청소하는 단계를 거치므로, 작은 연산 하나를 빠르게 하기위해 전체 자바 시스템 성능에 악영향을 주므로 사용 권장 x
StringBuffer, StringBulider
- String은 immutable한 객체로 한번 생성되면 값을 바꿀 수 없다.이 점을 보완하기 위해 나온 클래스
- StringBuffer는 Thread safe하다
- StringBuilder는 Thread safe하지 않지만 속도는 StringBuffer보다 빠르다
- append()로 문자열을 더한다. 새로운 객체 생성 x
- CharSequence 인터페이스를 구현
- 여러 쓰레드에서 변수에 동시에 접근하는 일이 있을 경우 StringBuffer를 사용해야함
'JAVA > about java' 카테고리의 다른 글
[Annotation] 어노테이션 (1) | 2023.04.25 |
---|---|
[ArrayList] ArrayList / Array vs ArrayList / 자바 버전 별 차이점 (0) | 2023.04.25 |
[String] String 빈 값 및 Null 체크 (0) | 2023.04.19 |
[Interface, abstract, enum] 인터페이스, 추상클래스, enum / 예외처리 (0) | 2023.04.19 |
[JVM] JVM 메모리모델 (0) | 2023.04.18 |