String 클래스

GilLog·2020년 10월 23일
0

Java

목록 보기
15/29

String 생성자

String s1 = new String("A");

String s2 = "A";

//배열로 String 객체 생성
String s3 = new String(byte[] bytes);

//배열의 offset 인덱스부터 length만큼 String 객체 생성
String s4 = new String(byte[] bytes, int offset, int length);

String 메소드

리턴 타입메소드설명
charcharAt(int index)특정 위치 문자 return
booleanequals(Object object)두 문자열 비교
byte[]getBytes()byte[]로 return
byte[]getBytes(Charset charset)주어진 문자셋으로 인코딩한 bytes[] return
intindexOf(String str)문자열 내에서 주어진 문자열의 위치를 return
intlength()총 문자의 수(길이)를 return
Stringreplace(CharSequence target, CharSequence replacement)target 부분을 replacement로 대치한 새로운 문자열 return
Stringsubstring(int beginIndex)beginIndex 위치에서 끝까지 잘라낸 새로운 문자열 return
Stringsubstring(int beginIndex, int endIndex)beginIndex 위치에서 endIndex 전까지 잘라낸 새로운 문자열 return
StringtoLowerCase()알파벳 소문자로 변환한 새로운 문자열 return
StringtoUpperCase()알파벳 대문자로 변환한 새로운 문자열 return
Stringtrim()앞뒤 공백을 제거한 새로운 문자열 return
StringvalueOf(int i)
valueOf(double d)
해당 기본 타입의 값을 문자열로 return

문자열 비교 equals()

기본 타입(byte, char, short, int, long, float, double, boolean) 변수의 값을 비교할 때에는 == 연산자를 사용한다.
하지만 문자열을 비교할 때에는 ==연산자가 조금 다른 결과를 가져 올 수있다.

아래 예시에서 살펴보면

String s1 = new String("A");
String s2 = "A";
String s3 = "A";

Java에서는 문자열의 리터럴(변수에 넣는 데이터)이 동일하다면 동일한 String 객체를 참조하게 되어있다.

그래서 위 그림처럼 s2와 s3는 힙 영역의 동일한 String 객체를 참조하지만, s1은 new 연산자로 생성된 다른 String 객체를 참조한다.

그래서 아래와 같이 == 연산자는 각 변수에 저장된 번지를 비교하기 때문에 동일한 데이터를 가지고 있어도 결과가 다르게 나올 수 있다.

그래서 이때는 equals()를 사용해야 한다.

//false
s1 == s2
//true
s2 == s3

//true
s1.equals(s2)
//true
s2.equals(s3)
profile
🚀 기록보단 길록을 20.10 ~ 22.02 ⭐ Move To : https://gil-log.github.io/

0개의 댓글