[Java 기초] 3. 문자열 관련 함수들

zooju·2023년 3월 20일
0

문자열 관련 기능

  • 길이: length()
  • 대문자로, 소문자로 : toUpperCase(), toLowerCase()
  • 포함여부: contains()
  • 위치 정보: indexOf(), lastIndexOf()
  • 문자열 매칭: 시작, 끝: startsWith(), endsWith()
  • 문자열 변환: replace(A, B)
  • 문자열 서브스트링: substring()
  • 공백 제거: trim()
  • 문자열 결합: + , concat()
  • 문자열 비교: equals(), equalsIgnoreCase(), ==
String s = "I like Java and Python and C.";

// 문자열의 길이
s.length();  // 29

// 대소문자 변환
s.toUpperCase();    // 대문자로 변환
s.toLowerCase();    // 소문자로 변환

// 포함 관계
s.contains("Java"); // true
s.contains("C#"); // false

s.indexOf("Java"); // 위치정보 7
s.indexOf("C#");  // 포함되지 않는다면 -1
s.indexOf("and"); // 여러개 포함되어있다면 맨 처음 위치 정보(12)
s.lastIndexOf("and"); // 맨 마지막에 일치하는 위치 정보(23)

s.startsWith("I like"); // 이 문자로 시작하면 true / 아니면 false
s.endsWith("."); // 이 문자열로 끝나면 true / 아니면 false

// 문자열 변환
s.replace("and", ","); // "and"를 ","로 변환
s.substring(7); // 인덱스 기준 7부터 시작하는 substring
s.substring(1,10); // 1부터 9까지
s.substring(s.indexOf("Java"), s.indexOf("."));

// 공백 제거
s.trim(); // 앞 뒤 공백 모두 제거

// 문자열 결합
s = s1 + s2;
s = s1.concat(s2);

// 문자열 비교
String s1 = "Java";
String s2 = "Python";

s1.equals("Java"); // 문자열 내용 같으면 true, 아니면 False
s2.equalsIgnoreCase("python"); // 대소문자 상관 없이 문자열 내용 같은지 확인

// 문자열 비교-> 참조와 내용
s1 = "1234";
s2 = "1234";

s1.equals(s2); // true(내용)
s1 == s2;      // true(참조)

s1 = new String("1234");
s2 = new String("1234");

s1.equals(s2) // true
s1 == s2      // false

참고) 참조와 내용

문자열 비교 1번과 같은 경우, “1234”를 heap에 저장하고, 그 주소를 stack에 저장한다. 똑같은 주소를 애초에 저장하기 때문에 ==에서도 true가 나온다.

하지만 비교 2번과 같은 경우, 각각 heap에 객체를 새로 생성하고 주소를 stack에 저장하기 때문에 주소가 다르다. 그렇기에 ==에서는 false가 나온다.

profile
이것 저것 새로운 분야에 관심이 많은 서버 개발자

0개의 댓글