본문 바로가기
수업(국비지원)/Java

[Java] chap11: 기본 API(패키지 클래스) - String

by byeolsub 2023. 4. 16.
  • String 클래스
String 클래스
    1. 클래스 중 유일하게 대입연산자(=)로 객체 생성이 가능함.
    2. 클래스 중 유일하게 + 연산자 사용 가능.
    3. 정적인 문자열. (변경불가 문자열)
    4. final 클래스임. => 변경불가, 상속불가, 부모클래스가 될 수 없음.

 

📌

package chap11;

// class MyString extends String {}  //상속불가
public class StringEx1 {
	public static void main(String[] args) {
		String s1 = "abc"; //대입연산자로 객체 생성
		String s2 = "abc"; //대입연산자로 객체 생성
		String s3 = new String("abc"); //new 객체 생성
		String s4 = new String("abc"); //new 객체 생성
		if(s1 == s2) System.out.println("s1 == s2 : 같은 객체"); //참조값 같다
		else System.out.println("s1 != s2 : 다른 객체");
		if(s3 == s4) System.out.println("s3 == s4 : 같은 객체");
		else System.out.println("s3 != s4 : 다른 객체");  //참조값이 다르다
		if(s1.equals(s2)) System.out.println("s1.equals(s2) : 같은 내용");
		else System.out.println("! s1.equals(s2) : 다른 내용");
		if(s3.equals(s4)) System.out.println("s3.equals(s4) : 같은 내용");
		else System.out.println("! s3.equals(s4) : 다른 내용");
	}
}

  • String 클래스
String 정적인 문자열임
  => main 메서드에서 change 메서드 이후에 ABC123456 출력되도록 프로그램 수정 

 

📌

package chap11;

public class StringEx2 {
	public static void main(String[] args) {
		String str = "ABC123";
		System.out.println("main change 전 :" + str);
//		change(str);
		str = change(str);
		System.out.println("main change 후 :" + str);
	}
/*
	private static void change(String str) {
		str += "456";
		System.out.println("change : " + str);
	}
*/
	private static String change(String str) {
		str += "456";
		System.out.println("change : " + str);
		return str;
	}
}

  • String 클래스의 메서드

 

 📌

package chap11;

public class StringEx3 {
	public static void main(String[] args) {
		String s = new String("ABCDEFGH");
		//s.charAt(4) : s 문자열에서 4번인덱스에 해당하는 문자 한개 리턴.
		System.out.println("s.charAt(4):" + s.charAt(4)); //E
		//s.compareTo("abc") : 정렬에서 사용되는 메서드. 대소문자 구분
		//              결과 음수 : s 문자열이 abc 문자열 보다 앞쪽
		//              결과 양수 : s 문자열이 AAA 문자열 보다 뒤쪽
		System.out.println("s.compareTo('abc'):" + s.compareTo("abc"));
		System.out.println("s.compareTo('AAA'):" + s.compareTo("AAA"));
		//IgnoreCase : 대소문자 상관없음
		//s.compareToIgnoreCase("abc") : 대소문자 구문없이 정렬에 사용됨
		System.out.println("s.compareToIgnoreCase('abc'):"
		              + s.compareToIgnoreCase("abc"));
		//s.endsWith("GH") : s 문자열의 끝이 GH? 여부
		System.out.println("s.endsWith('GH'):"+s.endsWith("GH")); //true
		//s.startsWith("GH") : s 문자열의 시작이 AB? 여부
		System.out.println("s.startsWith('AB'):"+s.startsWith("AB")); //true
		//s.equals("ABCDEFGH") : s 문자열이 "ABCDEFGH" 문자열과 같은지 여부
		System.out.println("s.equals('ABCDEFGH'):"+s.equals("ABCDEFGH")); //true
		//s.equalsIgnoreCase("ABCDEFGH") : s 문자열이 대소문자 상관없이
		//                      "abcdefgh" 문자열과 같은지 여부
		System.out.println("s.equalsIgnoreCase('abcdefgh'):"
		        +s.equalsIgnoreCase("abcdefgh")); //true
		
		s = "This is a String";
		//s.indexOf('i') : i 문자의 위치(인덱스) 리턴
		System.out.println("s.indexOf('i'):" + s.indexOf('i'));//2
		//s.indexOf('i',3) : 3번인덱스부터 i 문자의 위치(인덱스) 리턴
		System.out.println("s.indexOf('i',3):" + s.indexOf('i',3));//5
		// 해당 문자가 없는 경우 -1 리턴
		System.out.println("s.indexOf('Q'):" + s.indexOf('Q'));//-1
		//s.lastIndexOf('i') : 뒤쪽에서 i 문자의 위치. 
		//                     리턴 인덱스값은 앞부터 시작
		System.out.println("s.lastIndexOf('i'):" + s.lastIndexOf('i'));//13
		//s.length() : 문자열의 길이 리턴
		System.out.println("s.length():" + s.length());
		//s.replace("is","QR") : 문자열 치환
		System.out.println("s.replace('is','QR'):" + s.replace("is","QR"));
		System.out.println("s.replace('is',''):" + s.replace("is",""));
		//substring : 부분문자열
		//s.substring(5) : 5번 인덱스 부터 이후 부분만 리턴
		System.out.println("s.substring(5):" + s.substring(5));//is a String
		//s.substring(5,13) : 5번 인덱스부터 13번인덱스 앞까지 부분만 리턴
		//                    5번 인덱스부터 12번인덱스까지 부분만 리턴
		System.out.println("s.substring(5,13):" + s.substring(5,13));//is a Str
		//toUpperCase : 대문자 변경
		System.out.println("s.toUpperCase():" + s.toUpperCase());
		//toLowerCase : 소문자 변경
		System.out.println("s.toLowerCase():" + s.toLowerCase());
		
		s = "  문자열 trim 메서드   ";
		System.out.println("s:"+s);
		//s.trim() : 양쪽 공백 제거
		System.out.println("s.trim():"+s.trim());
		System.out.println("s.length():" + s.length());
		System.out.println("s.trim().length():" + s.trim().length());
		s = "홍길동,이몽룡,김삿갓";
		String[] arr = s.split(",");
		for(String sr : arr) System.out.println(sr);
	}
}