Ch 01. 문자열

Hover·2025년 1월 22일
0

코딩테스트

목록 보기
1/1
post-thumbnail

01. Java String

Java.lang.String 으로 사용되는 java 문자열 클래스인 String은 별도의 import 없이 사용 가능하다.

01-1. 문자열 수정

  • 한 번 인스턴스가 생성되면 수정 할 수 없음
String str = "abcdef";
str[4] = 'E';
System.out.println(str); // 컴파일 에러
  • 값의 변경은 불가능하지만 새 String을 만들어서 바꿀 수는 있음.
String str = "abcdef";
str = "ABCDEF";
System.out.println(str); // ABCDEF

======================================

String str = "abcdef";
char[] temp_arr = str.toCharArray(); // 배열로 변환
temp_arr[4] = 'E';
str = new String(temp_arr) // 배열을 string으로 변환 후 기존 str에 대입
System.out.println(str)// abceEf

01-2. 서로 같은 두 문자열

java에서 == 연산은 주소값을 비교하기 때문에 다음과 같은 경우에는 서로 다른 주소이므로 false가 발생한다

String str1 = "abc"; 
String str2 = new String("abc"); 

str1==str2 // false 

리터럴 방식으로 선언한 서로 같은 두 문자열을 비교 시 true를 반환한다.

리터럴 방식으로 선언하면 String Constant Pool 이라는 영역에 할당된다.

// 리터럴 방식 선언
String str_literal1 = "test";
String str_literal2 = "test";
str_literal1 == str_literal2 // true

위와 같이 선언하면 String constant pool 영역 내에 "test"가 할당되고
두개 모두 하나의 "test"를 가르키게 된다.

따라서 비교시 true가 나옴

반면 객체 방식으로 선언한 서로 같은 두 문자열을 비교하면 false를 반환한다.

// 객체 방식 선언
String str_object1 = new String("test");
String str_object2 = new String("test");

str_object1==str_object2 // false

기존에 같은 값을 가지고 있는 string이 heap 영역에 있더라도 따로 확인하지 않고 새로운 주소에 선언하기 때문.

String의 value를 비교하는 방법은 .equals(value) 를 사용하면 된다.

String str_literal1 = "test";

String str_object1 = new String("test");
String str_object2 = new String("test");

str_literal1.equals(str_object1) // true
str_literal1.equals(str_object2) // true
str_object1.equals(str_object2) // true
  • 자주 사용하는 String Methods
Method nameReturn Value설명
charAt(int index)charindex 번째 문자
length()int문자열의 길이
equals(Object)boolean두 문자열 비교
toCharArray()char[]문자열을 변환한 character array
compareTo(String)int두 문자열을 사전순으로 비교한 결과
contains(char)boolean문자열 포함 여부
replace(char target,char replacement)Stringtarger을 replacement로 변경
substring(int startIndex,int endIndexString[startIndex,endIndex) fmf 가지는 새 문자열 반환
indexOf(int ch,int fromIndexintfromIndex 부터 ch 문자가 나타나는 가장 첫 인덱스

2025.01.22

profile
프론트엔드 개발자 지망생입니다

0개의 댓글

관련 채용 정보