본문 바로가기
언어/JAVA

[변수 & 참조 타입] String

by 코딩맛집 2023. 1. 23.

String은 기본 타입이 아닌 클래스 타입이고 참조 변수이다.

문자열을 String 변수에 대입하면 문자열이 변수에 직접 저장되는 것이 아니라, String 객체가 생성되고, String 변수는 String 객체의 번지를 참조하게 된다. 문자열을 저장하기 위해 String변수를 사용한다.

 

char 타입의 변수에 어떤 문자를 대입하지 않고 단순히 초기화를 할 목적이면 공백을 포함시킨다.

char c = ' ';
//공백을 하나 포함해야 컴파일에러가 발생하지 않는다.

 

5.5 문자열 타입

자바는 문자열 리터럴이 동일하다면 String 객체를 공유하도록 설계되어 있다. String 변수에 문자열 리터럴을 대입하는 것이 일반적이지만, new 연산자로 직접 String 객체를 생성하고 대입할 수도 있다. new 연산자는 새로운 객체를 만드는 연산자로 객체 생성 연산자라고 한다.

String name1 = new String("홍길동");
String name2 = new String("홍길동");

이 경우, name1과 name2 변수는 서로 다른 String 객체의 번지를 가지게 된다.

문자열 리터럴로 생성하느냐 new 연산자로 생성하느냐에 따라 비교 연산자의 결과가 달라질 수 있다.

 

동일한 String 객체든 다른 String 객체든 상관없이 내부 문자열만을 비교할 경우에는 String 객체의 equals()메소드를 사용한다.

boolean result == str1.equals(str2); //문자열이 같은지 검사(대소문자 구분)
boolean result != str1.equals(str2); //문자열이 다른지 검사

 

문자 추출

문자열에서 특정 위치의 문자를 얻고 싶다면 charAt() 메소드를 이용할 수 있다. charAt()메소드는 매개값으로 주어진 인덱스의 문자를 리턴한다. 여기서 인덱스란 0에서부터 '문자열의 길이 -1'까지의 번호를 말한다.

String subject = "자바 프로그래밍";
char charValue = subject.charAt(3);

//출력
//프

 

문자열 길이

length()메소드는 문자의 개수를 얻을 수 있다. 공백도 포함.

 

문자열 대체

replace()메소드는 기존 문자열은 그대로 두고, 대체한 새로운 문자열을 리턴한다.

String oldStr = "자바 프로그래밍";
String newStr = oldStr.replace("자바", "JAVA");

String 객체의 문자열은 변경이 불가한 특성을 갖기 때문에 replace()메소드가 리턴하는 문자열은 새로운 문자열이다. 

 

문자열 잘라내기

문자열에서 특정 위치의 문자열을 잘라내어 가져오고 싶다면 substring()메소드를 사용한다.

 

문자열 찾기

특정 문자열의 위치를 찾고자 할 때에는 indexOf() 메소드를 사용한다. 주어진 문자열이 시작되는 인덱스를 리턴한다.

String subject = "자바 프로그래밍;
int index = subject.indexOf("프로그래밍")

//출력
//3

만약 주어진 문자열이 포함되어 있지 않으면 indexOf() 메소드는 -1을 리턴한다. 주어진 문자열이 포함되어 있는지 여부에 따라 실행 코드를 달리하고 싶다면 if 조건식을 사용해서 다음과 같이 코드를 작성할 수 있다.

int index = subject.indexOf("프로그래밍");
if(index == -1){
	//포함되어 있지 않은 경우
} else{
	//포함되어 있는 경우
}

주어진 문자열이 단순히 포함되어 있는지만 조사하고 싶다면 contains() 메소드를 사용하면 편리하다. 원하는 문자열이 포함되어 있으면 contains() 메소드는 true를 리턴하고, 그렇지 않으면 false를 리턴한다.

boolean result = subject.contains("프로그래밍");

//출력
//true

 

문자열 분리

문자열이 구분자를 사용하여 여러 개의 문자열로 구성되어 있을 경우, 이를 따로 분리해서 얻고 싶다면 split() 메소드를 사용한다.

String board = "번호,제목,내용,글쓴이";
String[] arr = board.split(",");

'언어 > JAVA' 카테고리의 다른 글

[객체 지향 프로그래밍]  (0) 2023.01.25
[참조 타입] 배열(Array)  (2) 2023.01.24
[참조 타입] 데이터 타입 분류  (0) 2023.01.21
[변수] 타입 변환  (0) 2023.01.17
[chapter2] 확인문제  (0) 2023.01.16