자바에서 어떤 문자열을 저장하여 사용하고 싶을 때

String str = "abcdef";

와 같이 할 것이다. 원래는

String str = new String("abcdef"); 가 정확한 선언이지만 자바는 편의상 위의 문장처럼 선언하는 것을 허용하였다.

String이라는 클래스 이름으로 변수선언을 하였기에 str은 사실 참조변수가 되는 것이다.

 

그렇기 때문에 저 str이라는 객체 혹은 참조변수로 String클래스의 메소드를 사용할 수 있다.

이제 그 메소드들을 소개해보겠다.

 

isEmpty()

해당 변수가 비어있는지를 Boolean형으로 반환한다.

String a = "";
String b = "bbb";
System.out.println(a.isEmpty());
System.out.println(b.isEmpty());
true
false

 

equals()

두개의 문자열이 서로 같은지 true or false로 반환하는 메소드이다. 누군가는 이렇게 생각할 수 있다. "비교 연산자 ==를 사용하면 비교할 수 있잖아?" 다음의 예를 살펴보자

String aa = "world";
String bb = "world";
String cc = new String("world");

System.out.println(aa==bb);
System.out.println(bb==cc);
System.out.println(bb.equals(cc));
true
false
true

왜 이런 결과가 나온 것일까?

자바는 변수선언 형식의 String의 객체 생성을 통해 생성된 값(world)이 같으면 중복해서 주소를 생성하지 않는다.

그렇기 때문에 bb라는 객체를 생성할 때 이미 선언된 객체 aa의 값의 주소를 재활용하여 부여한 것이다.

 

하지만 new로 생성한다는 것은 무조건 다른 하나의 주소를 생성하라는 의미가 된다. world라는 같은 값이더라도 다른 주소를 생성하여 부여한다는 것이다.

 

따라서 aa, bb, cc의 값은 같지만 주소는 cc만 혼자 다른것이다.

따라서 ==는 주소까지 같아야 true를 반환하고 equals는 주소는 달라도 값이 같으면 true를 반환한다.

 

 

indexOf()

특정 문자가 처음 시작되는 인덱스 값을 int형으로 반환한다.

해당 문자가 존재하지 않으면 -1을 반환한다.

String a = "abcdefabcdef";
System.out.println(a.indexOf("c"));
System.out.println(a.indexOf("g"));
2
-1

 

substring(int beginindex, int endindex)

괄호 안에 들어가는 숫자 사이에 위치하는 문자를 반환한다.

예를 들어 str.substring(2, 5); 라고하면 str에 있는 문자열에서 2번째문자부터 5번째 전까지(2~4위치의 문자열) 잘라서 반환한다.

String str = "World";
System.out.println(str.substring(2, 4));
rl

 

toUpperCase()

toLowerCase()

toUpperCase()는 해당 문자열을 전부 대문자, toLowerCase()는 전부 소문자로 바꿔준다.

String str = "World";
System.out.println(str.toUpperCase());
System.out.println(str.toLowerCase());
WORLD
world

 

 

trim()

문자열 앞뒤에 있는 공백을 제거해준다.(중간은 제외)

String str = "    World";
System.out.println(str.trim());
World

 

charAt(int index)

해당 위치의 문자를 char형으로 반환한다.

String str = "World";
System.out.println(str.charAt(3));
l

 

valueOf()

괄호안의 값을 String형으로 즉, 문자열로 변환한다. 

int a = 123;
int b = 456;
System.out.println(String.valueOf(a)+String.valueOf(b));
123456 //문자열로 변환되었기 때문에 숫자로서가 아닌 문자열로서 더해져서 붙은 모습

 

toCharArray()

문자열을 한 글자씩 쪼개 char 배열로 반환한다.

String str = "World";
char[] arr = str.toCharArray();
System.out.println(arr);
System.out.println(Arrays.toString(arr));
World
[W, o, r, l, d]

//Arrays.toString() -> 배열의 내용을 출력할 수 있다.

 

getBytes()

byte 배열로 반환한다.

String str = "World";
byte[] arr = str.getBytes();
System.out.println(Arrays.toString(arr));
[87, 111, 114, 108, 100]

 

split(String regex)

문자열을 파라미터 기준으로 찢어 String 형 배열로 반환한다.

String str = "Hello/World/abc";
String[] arr = str.split("/");
System.out.println(Arrays.toString(arr));
[Hello, World, abc]

 

equalsIgnoreCase()

문자열이 대문자, 소문자 구분없이 같은 문자열인지 확인

String str1 = "World";
String str2 = "world";
		
System.out.println(str1.equalsIgnoreCase(str2));
true
반응형

+ Recent posts