String 클래스는 아래와 같이 선언할 수 있다.
<String 클래스의 선언>
public final class String extends Object
implements java.io.Serializable, Comparable<String>, CharSequence
String class 앞에 final이 선언되어 있으니 String 클래스는 더이상 확장 할 수 없다. 즉 자식 클래스를 양산할 수 없다.
(Object 클래스는 확장한 것을 볼 수 있지만, 모든 클래스의 부모 클래스가 Object이므로 따로 확장한 클래스가 없다는 의미)
String은 Serializable, Comparable< String>, CharSequence 인터페이스를 implements 한 클래스이므로 해당 인터페이스들의 기본적으로 선언된 메소드들을 구현해야한다.
Serializable
인터페이스는 특이하게 구현해야 할 메소드가 하나도 없다. 단 Serializable 인터페이스를 선언하면,
해당 객체를 파일로 저장하거나 다른 서버에 전송 가능한 상태가 된다.
Comparable< String>
인터페이스는 compareTo( ) 메소드가 선언되어있으며 매개변수로 넘어가는 객체와 현재 객체가 같은지를 비교하는데 사용된다. 반환 타입은 int (순서상으로 앞에있으면 -1, 뒤에있으면 1을 반환)
CharSequence
인터페이스는 해당 클래스가 문자열을 다루기 위한 클래스라는 것을 명시적으로 나타내는 데 사용된다.
String 클래스의 메서들중 많이 쓰이는것들을 나열했다.
valueOf( )
int i = 1234;
var s = String.valueOf(i);
System.out.println(s); // String타입
var parseInt = Integer.parseInt("1234");
System.out.println(parseInt); // int타입
2.equals( )
String str = null;
boolean result = "kmb".equals(str);
System.out.println("result : " + result);
만약 boolean result = "kmb".equals(str) 가 아닌
boolean result1 = str.equals("kmb") 처럼
입력변수를 앞에두고 비교할문자를 .equals( ) 안에 두게되면 NPE가 발생한다.
startsWith( )
, contains( )
String sw = "bestjavagood";
if(sw.startsWith("java") || sw.contains("java")) {
System.out.println("java 문자열");
}else {
System.out.println("java 문자열 X");
}
.startsWith( ) 는 맨앞에 해당 문자열이 있는지를 판별하며
.contains( ) 는 해당 문자열이 포함이 되있는지만을 판별한다.
split( )
String ymd = "2021-08-01";
String [] symd = new String[3];
for(String arr : symd = ymd.split("-"))
System.out.println(arr);
.split( ) 는 ( )내부기준으로 자르겠다는 의미이다.
join( )
var join = String.join("", symd);
System.out.println(join);
배열 내부의 값들을 결합해서 하나의 문자열을 만든다
replaceAll( )
, reaplce( )
String rep = "qqqwwweeeqwerraqwe";
var replaceAll = rep.replaceAll("[qwe]", "리");
System.out.println("replaceAll : " + replaceAll);
var replace = rep.replace("qwe", "리");
System.out.println("reaplce : " + replace);
.replaceAll( ) 은 정규표현식을 사용하여 "[ ]" 내부에 있는 문자들을 전부 치환할수있다.
.replace( ) 는 "" 내부의 문자열만 치환할 수있다.
substring(index)
, substring(index1, index2)
String sub1 = "123가나다!@#";
String sub2 = "123가나다!@#";
var substringSingle = sub1.substring(1);
System.out.println("substringSingle : " + substringSingle);
var subStringDouble = sub2.substring(2, 5);
System.out.println("subStringDouble : " + subStringDouble );
단일 index는 해당 index부터 그 이후의값들을 return 하고
다중 index는 시작 index부터 끝 index -1 까지 값을 return한다.