Java 문자열

김범준·2022년 11월 8일
0

Java

목록 보기
2/10
post-thumbnail

String은 클래스이다.
때문에 이를 이용해 만들어지는 친구는 '객체'이다.

문자열은 우리가 제일 많이 사용하는 형태이다. 다른 변수와 비슷하게 선언하고 출력하면 되지만 여러 다른 기능이 있다.

선언

선언시 char형태와 다르게 큰따음표("")로 데이터를 선언한다.

String str = "허허 코딩 너무 재밌고만";

이스케이프 문자

위에서 선언했는데 만약 우리가 큰따음표("")를 사용할 일이 있으면 어떻게 해야 할까? 그냥 포기할까?
이때 사용하는 것이 이스케이프 문자이다.

String str = "허허 \"코딩\"이 너무 재밌고만";
//허허 "코딩"이 너무 재밌고만

이 이스케이프 문자는 문자를 그대로 사용하게 해주는 것도 있지만 우리가 문장 입력시 사용되는 몇가지 기능을 가지고 있다.

이스케이프 문자출력 용도
\t탭(tab)역할로 탭키만큼 띄운다.
\n줄바꿈(new line)
\r캐리지 리턴(carriage return)
\"큰따음표("") 출력
\'작은따음표('') 출력
\\백슬래시(\) 출력

문자열 더하기

String은 더하기(+) 연산자로 합칠 수 있다!

String str1 = "누구나 그럴싸한 계획을 가지고 있다.";
String str2 = " 빌드에게 맞기 전까지는";
System.out.print(str1 + str2);
//누구나 그럴싸한 계획을 가지고 있다. 빌드에게 맞기 전까지는

자동 변환

String이 힘이 좋은게 중간에 int형이 끼더라도 이 int형을 자동으로 String으로 봐서 바꿔버린다.

int num = 3;
String str1 = "너가 " + num + "번이라고?";
System.out.print(str1);
//너가 3번이라고?

비교

먼저 아래의 경우를 보자

String str1 = "밤준";
String str2 = "밤준";
String str3 = new String("밤준");
System.out.println(str1 == str2);  //true
System.out.println(str2 == str3);  //false
System.out.println(str1 == str3);  //false

분명 우리가봤을 때는 같은 문자열인데 이 비교문에서는 해당 데이터가 틀렸다고 한다.
이 이유는 '=='이 데이터를 물어보는 것이 아닌 객체가 같은 객체인지물어보기 때문이다.
이를 함수를 통해 들여다 보면

String str1 = "밤준";
String str2 = "밤준";
String str3 = new String("밤준");
System.out.println(System.identityHashCode(str1)); //1982791261
System.out.println(System.identityHashCode(str2)); //1982791261
System.out.println(System.identityHashCode(str3)); //1562557367

다르다는 걸 알 수 있다. 그렇다면 우리가 원하는 글자가 같으니 true를 반환하게 하려면 어떻게 해야 할까?
이는 아래 메소드에 정리했다.

메소드

String은 클래스고 이를 이용해 만드는 변수들은 객체이다. String내부에는 사용할 수 있는 함수들이 존재하고 변수도 마찬가지로 사용할 수 있다.

equals

Boolean equals(String str)
이 함수는 파라미터로 들어오는 문자열을 비교한다. 위에서 String끼리 비교하더라도 다른 경우가 있었다. 이때 이를 이용해 해당 '문자열'이 같은지 비교할 수 있다.

String str1 = "밤준";
String str2 = "밤준";
String str3 = new String("밤준");
System.out.println(str1.equals(str2)); //true
System.out.println(str2.equals(str3)); //true
System.out.println(str1.equals(str3)); //true

concat

String concat(String str)
문자열끼리 더하는 함수이다.
문자열뒤에 str문자열을 더한 값을 반환한다.

String str1 = "Java";
String str2 = "Script";
System.out.println(str1.concat(str2));
System.out.println(str1 + str2);

split

String[] split(String str)
split은 자주 쓰게 될텐데 이 함수는 String을 파라미터를 기준으로 잘라서 String 배열을 반환한다.

String str = "1, 2, 3, 4, 5, 6, 7";
String[] strList = str.split(", ");
for(String num : strList){
	System.out.println(num);
}

substring

String substring(int i)
이 함수는 파라미터 i를 첫 인덱스로 끝까지를 반환한다.
잘라내서 해당 문자열을 반환한다고 생각하면 된다.

String str = "0123456789";
String subStr = str.substring(3);
System.out.println(subStr); //3456789

첫 인덱스를 '포함'이다.

charAt

char charAt(int i)
이 함수는 파라미터 i번째 인덱스에 있는 문자를 반환한다.

String str = "0123456789";
System.out.println(str.charAt(7)); //7

indexOf

int indexOf(String str)
문자열내에서 맨 왼쪽부터 맨처음 등장하는 str문자열의 위치를 반환한다.
동일한 문자열이 시작되는 위치를 반환한다.

String str = "0123456789";
System.out.println(str.indexOf("567")); //5

int indexOf(String str, int i)
str의 위치를 반환하는것은 같지만 i번째 인덱스부터 검색후 str의 등장 위치를 반환한다.

toLowerCase

String toLowerCase()
문자열의 모든 문자를 소문자로 변환한다.

String str1 = "Spring Boot";
System.out.println(str1.toLowerCase()); //spring boot

toUpperCase

String toUpperCase()
위와 반대로 문자열의 모든 문자를 대문자로 변화한다.

String str1 = "Spring Boot";
System.out.println(str1.toUpperCase()); //SPRING BOOT

length

문자열의 크기를 반환한다.

String str = "0123456789";
System.out.println(str.length()); //10

isEmpty

문자열이 비어있는지 반환한다.

String str = "0123456789";
System.out.println(str.isEmpty()); //false
str = "";
System.out.println(str.isEmpty()); //true
profile
그럴싸한 계획을 가지고 있는

0개의 댓글