반응형

문자열 생성 (2가지 방법 및 차이)

String str1 = "Test";
String str2 = "Test";
String str3 = new String("Test");
String str4 = new String("Test");

System.out.println(str1 == str2);     // true
System.out.println(str1 == str3);     // false
System.out.println(str3 == str4);     // false
  • str1, str2와 같이 생성하면 "Test"라는 리터럴의 주소값을 가르키기 때문에 같다고 여겨짐 (=> Heap 메모리에 "Test" Literal이 올라감)
  • str3, str4는 새로운 String 객체를 만드는 것이기 때문에 서로 다른 주소값을 가르킴 (=> Heap 메모리에 String Type 객체가 올라감)

문자열 비교 => eqauls()

String str1 = "Test";
String str2 = "Test";
String str3 = new String("Test");

System.out.println(str1.equals(str2));    // true 출력
System.out.println(str2.equals(str3));  // true 출력
  • 문자열 str1과 str2를 비교하여 같으면 true, 다르면 false
System.out.println(str1 == str2);
  • 이 방식으로 비교하면 true가 출력은 되지만 이 방식은 문자열 비교가 아닌 주소값을 비교하여 return해주는 방식이기 때문에, 문자열 비교에는 equals 메소드가 더 적합하다고 생각함

문자열 길이 => length()

int strLength = str.length();
  • str.length() 통해 int형 변수인 strLength에 문자열 str의 길이를 return

  • 만약 str에 문자열 "Test"를 넣어줬다면 strLlength에는 4가 들어가게 됨

문자열이 비어있는가? => isEmpty()

System.out.println(str.isEmpty());
  • 문자열 str이 비어있으면 true, 내용이 있으면 false

문자열 비교(사전순) => compareTo()

String str1 = "AAA";
String str2 = "BBB";

System.out.println(str1.compareTo(str2));    // -1 출력
  • str1이 str2보다 사전에 먼저 나오면 -1 return

  • str1이 str2보다 사전에 나중에 나오면 1 return

  • str1과 str2가 같으면 0 return

문자열에서 i번째 문자 반환 => charAt()

String str = "abcdea";

System.out.println(str.charAt(1));        // b 출력
  • 문자열 str의 index가 1에 해당하는 문자인 'b' return
  • 이 때, index는 0부터 시작

문자열에서 문자(문자열) 위치 찾기 => indexOf(), lastIndexOf()

String str1 = "abcdea";
String str2 = "bcd";
char c1 = 'a';

System.out.println(str1.indexOf(c1));        // 0 출력
System.out.println(str1.lastIndexOf(c1);    // 5 출력
System.out.println(str1.indexOf(str2));        // 1 출력
System.out.println(str1.indexOf(c1, 3));    // 5 출력
  • 문자열 str1에서 문자 c1(혹은 문자열str2)이 있는 첫번째/마지막 위치를 찾아 return
  • 이 때, 주의할 점은 문자열의 index는 0부터 시작
  • 만약 찾고자 하는 문자/문자열이 문자열에 없으면 -1 return
  • 마지막 줄 코드는 문자열 str1에서 문자 c1을 찾는데 index를 3부터 찾는다는 의미
  • index가 3 이상인 것 중에서 가장 먼저 문자 c1이 나오는 위치 return
  • 따라서 0이 아닌 5가 출력됨을 볼 수 있음

문자열 안에 특정문자열이 포함되어 있는가? => contains()

String str1 = "abcdef";
String str2 = "def";

System.out.println(str1.contains(str2));    // true 출력
  • 문자열 str1 안에 문자열 str2가 있으면 true, 없으면 false

문자열 합치기 => concat() / +

String str1 = "abc";
String str2 = "def";
String str3, str4;
str3 = str1.concat(str2);
str4 = str1 + str2;

System.out.println(str3);        // abcdef 출력
System.out.println(str4);        // abcdef 출력
  • 문자열 str1 뒤에 문자열 str2를 붙여서 return
  • concat 대신 '+' 기호로 처리해줘도 결과는 같다.

문자열 자르기 => substring()

String str1 = "abcdef";

System.out.println(str1.substring(2));        // cdef 출력
System.out.println(str1.substring(2, 5));    // cde 출력
  • substring은 하나의 메소드인데 2가지 사용법이 존재
  • 매개변수(parameter)가 하나인지 두개인지에 따라 return 값이 다름
  • str1.substring( i ) : i번째 index부터 끝까지 출력
  • str1.substring( i, j ) -> i번째 index부터 (j-1)번째 index까지 출력

문자열 치환 => replace()

String str1 = "abcdeab";

System.out.println(str1.replace('a', 'f'));    // fbcdefb 출력
System.out.println(str1.replace("ab", "xy"));    // xycdexy 출력
  • 문자열 str1에서 문자 'a'를 모두 찾아 'f'로 바꿔준 문자열 return
  • 문자열 str1에서 문자열 "ab"를 모두 찾아 "xy"로 바꿔준 문자열 return
  • 주의할 점은 문자열 "ab"를 "x"로 바꾸는 것 처럼 길이가 달라도 되지만, 문자열 <-> 문자 치환은 안됨

문자열 분리 => split()

String str1 = "abc de";

System.out.println(str1.split(" ")[0]);    // abc 출력
System.out.println(str1.split(" ")[1]);    // de 출력
  • "abcde"를 공백(" ")을 기준으로 나누면 "abc"와 "de"로 분리됨.
  • 이 값들을 배열에 저장하여 return 해주는 방식으로 "abc"는 0번째 index에, "de"는 1번째 index에 저장되어 return

문자열 앞뒤 공백 제거 => trim()

String str1 = "   abc de   ";

System.out.println(str1.trim());    // "abc de" 출력
  • trim은 문자열의 앞, 뒤의 공백들을 제거하여 return
  • 문자열 중간의 공백은 제거하지 않음

문자열을 모두 대문자/소문자로 => toUpperCase(), toLowerCase()

String str1 = "aBcdE";

System.out.println(str1.toUpperCase());    // ABCDE 출력
System.out.println(str1.toLowerCase());    // abcde 출력

문자열 ↔ 숫자(int) 형변환

String str = "100";
int i = Integer.parseInt(str);    // 문자를 숫자로 형변환
int i = 100;
String S = String.valueOf(i);    // 숫자를 문자열로 형변환
  • 위 형변환 방법 말고 다른방법들도 있겠지만 대표적인 것만 알아보자
반응형

↓ 클릭시 이동

복사했습니다!