ToBe끝판왕

[ JAVA ] String 클래스 (1) 본문

■ 프로그래밍 SKILLS/JAVA

[ JAVA ] String 클래스 (1)

업그레이드중 2024. 8. 13. 00:18
반응형

 

 


 


■ java.lang 패키지 에 관하여 알아보자 !

•  자바 언어를 이루는 가장 기본이 되는 클래스들을 보관하는 패키지

•  java.lang 패키지의 대표적인 클래스
-  Object : 모든 자바 객체의 부모 클래스
-  String : 문자열
-  Integer, Long, Double : 래퍼타입 , 기본형 데이터 타입을 객체로 만든 것

 

 

 

String 클래스

 

 

•  자바에서 문자를 다루는 대표적인 타입은 char , String 2가지가 있다.

 

•  Char

-  문자 하나 다룰 때 사용

-  여러 문자를 나열하기 위해선 char[] 배열을 사용해야 함

 

•  String 클래스

-  문자열을 매우 편리하게 다룰 수 있다.

-  String은 클래스이기 때문에, 기본형이 아닌 참조형이다.

-  String은 불변객체이다.

 

 


 

 

String 클래스 주요 메서드

 

 

1) equals()

•   String 클래스를 비교할때는 == 비교가 아닌, equals() 비교를 해야 한다.

•   즉 논리적으로 같은 값인지를 확인하는 것이다.

 

•   equals( ) 예시 

-  main( ) 메서드와 isSame( ) 메서드를 만드는 개발자가 서로 다르다고 가정

-  isSame( ) 메서드의 매개변수인 String 인스턴스가 newString( )으로 만들어진 것인지 문자열 리터럴인지 알 수가 없다.

-  문자열 비교는 항상 equals( ) 를 사용해서 동등성 비교를 해야 한다.

package lang.string.equals;

public class StringEqualsMain2 {

    public static void main(String[] args) {

        String str1 = new String("hello");
        String str2 = new String("hello");
        System.out.println("메서드 호출 비교 1: " + isSame(str1, str2));

        String str3 = "hello";
        String str4 = "hello";
        System.out.println("메서드 호출 비교 2: " + isSame(str3, str4));
    }

    private static boolean isSame(String x, String y) {
        return x == y;
    }
}
// 실행 결과

메서드 호출 비교 1: false
메서드 호출 비교 2: true

 

 

 

 

 

2) String 클래스 문자열 정보 조회 메서드

•  length( )  :  문자열의 길이 반환

•  isEmpty( )  :  문자열이 비어있는지 확인

•  isBlank( )  :  문자열이 비어있는지 확인( 길이가 0이거나 공백(whitespace) 만 있는 경우

•  charAt(int index)  :  지정된 인덱스에 있는 문자 반환

 

 

•  문자열 정보 조회 메서드 예시

 

package lang.string.method;

public class StringInfoMain {

    public static void main(String[] args) {
        String str = "Hello, java!";
        System.out.println("문자열의 길이: " + str.length());
        System.out.println("문자열이 비어 있는지: " + str.isEmpty());
        System.out.println("문자열이 공백인지 1: " + str.isBlank());
        System.out.println("문자열이 공백인지 2: " + "     ".isBlank());

        char c = str.charAt(7);
        System.out.println("7번 인덱스의 문자 = " + c);

    }
}
// 실행 결과

문자열의 길이: 12
문자열이 비어 있는지: false
문자열이 공백인지 1: false
문자열이 공백인지 2: true
7번 인덱스의 문자 = j

 

 

 

3) 문자열 비교 메서드

•  equals( Object anObject )  :  두 문자열이 동일한지 비교

•  equalsIgnoreCase( String anotherString )  :  두 문자열을 대소문자 구분없이 비교

•  compareTo( String anotherString )  :  두 문자열을 사전 순으로 비교한다

•  compareToIgnoreCase( String str )  :  두 문자열을 대소문자 구분 없이 사전적으로 비교한다

•  startsWith( String prefix )  :  문자열이 특정 접두사로 시작하는지 확인한다

•  endsWith( String suffix )  :  문자열이 특정 접미사로 끝나는지 확인한다

 

 

•  문자열 비교 메서드 예시

 

package lang.string.method;

public class StringComparisonMain {

    public static void main(String[] args) {

        String str1 = "Hello, Java!";   // 대문자 일부 있음
        String str2 = "hello, java!";   // 모두 소문자
        String str3 = "Hello, World!";  // 다른 문자

        System.out.println("str1 equals str2: " + str1.equals(str2));
        System.out.println("str1 equalsIgnoreCase str2: " + str1.equalsIgnoreCase(str2));

        System.out.println("'b' compareTo 'a': " + "b".compareTo("a"));
        System.out.println("str1 compareTo str3 : " + str1.compareTo(str3));
        System.out.println("str1 compareToIgnoreCase str2 : " + str1.compareToIgnoreCase(str2));

        System.out.println("str1 starts with 'Hello': " + str1.startsWith("Hello"));
        System.out.println("str1 ends with 'Java!': " + str1.endsWith("Java!"));
    }
}
// 실행 결과

str1 equals str2: false
str1 equalsIgnoreCase str2: true
'b' compareTo 'a': 1
str1 compareTo str3 : -13
str1 compareToIgnoreCase str2 : 0
str1 starts with 'Hello': true
str1 ends with 'Java!': true

 

 

 

3) 문자열 검색 메서드

•  contains( CharSequence s )  :  문자열이 특정 문자열을 포함하고 있는지 확인한다

•  indexOf( String ch ) / indexOf( String ch, int fromIndex ) : 문자열이 처음 등장하는 위치를 반환한다

•  lastIndexOf( String ch )  :  문자열이 마지막으로 등장하는 위치를 반환한다.

 

•  문자열 검색 메서드 예시

package lang.string.method;

public class StringSearchMain {

    public static void main(String[] args) {

        String str = "Hello, Java! Welcome to Java world.";

        System.out.println("문자열에 'Java'가 포함되어 있는지: " + str.contains("Java"));
        System.out.println("'Java'의 첫번째 인덱스: " + str.indexOf("Java"));
        System.out.println("인덱스10부터 'Java'의 인덱스: " + str.indexOf("Java", 10));
        System.out.println("'Java'의 마지막 인덱스: " + str.lastIndexOf("Java"));
    }
}
// 실행 결과

문자열에 'Java'가 포함되어 있는지: true
'Java'의 첫번째 인덱스: 7
인덱스10부터 'Java'의 인덱스: 24
'Java'의 마지막 인덱스: 24

 

 

4) 문자열 조작 및 변환 메서드

•  substring( int beginIndex ) / substring( int beginIndex, int endIndex )  : 문자열의 부분 문자열을 반환한다

•  concat( String str )  :  문자열의 끝에 다른 문자열을 붙인다

•  replace( CharSequence target, CharSequence replacement )  :  특정 문자열을 새 문자열로 대체 한다

•  replaceAll( String regex, String replacement )  : 문자열에서 정규 표현식과 일치하는 부분을 새 문자열로 대체한다

 •  replaceFirst( String regex, String replacement )  :  문자열에서 정규 표현식과 일치하는 첫 번째 부분을 새 문자열로

                                                                                    대체한다

•  toLowerCase() / toUpperCase()  :  문자열을 소문자나 대문자로 변환한다

•  trim()  :  문자열 양쪽 끝의 공백을 제거한다. 단순 Whitespace 만 제거할 수 있다

•  strip()  :  Whitespace 와 유니코드 공백을 포함해서 제거한다

 

 

•  문자열 조작 및 변환 메서드 예시 (1)

 

package lang.string.method;

public class StringChangeMain1 {

    public static void main(String[] args) {
        String str = "Hello, Java! Welcome to Java";

        System.out.println("인덱스 7부터의 부분 문자열: " + str.substring(7));
        System.out.println("인덱스 7부터 12까지의 부분 문자열: " + str.substring(7, 12));

        System.out.println("문자열 결합: " + str.concat("!!!"));

        System.out.println("'Java'를 'World'로 대체: " + str.replace("Java", "World"));
        System.out.println("첫 번째 'Java'를 'World'로 대체: " + str.replaceFirst("Java", "World"));

    }
}
// 실행 결과

인덱스 7부터의 부분 문자열: Java! Welcome to Java
인덱스 7부터 12까지의 부분 문자열: Java!
문자열 결합: Hello, Java! Welcome to Java!!!
'Java'를 'World'로 대체: Hello, World! Welcome to World
첫 번째 'Java'를 'World'로 대체: Hello, World! Welcome to Java

 

 

 

•  문자열 조작 및 변환 메서드 예시 (2)

 

package lang.string.method;

public class StringChangeMain2 {

    public static void main(String[] args) {

        String startWithSpaces = "    Java Programming ";

        System.out.println("소문자로 변환: " + startWithSpaces.toLowerCase());
        System.out.println("대문자로 변환: " + startWithSpaces.toUpperCase());

        System.out.println("공백 제거(trim): '" + startWithSpaces.trim() + "'");
        System.out.println("공백 제거(strip): '" + startWithSpaces.strip() + "'");
        System.out.println("앞 공백 제거(strip): '" + startWithSpaces.stripLeading() + "'");
        System.out.println("뒤 공백 제거(strip): '" + startWithSpaces.stripTrailing() + "'");

    }
}
// 실행 결과

소문자로 변환:     java programming 
대문자로 변환:     JAVA PROGRAMMING 
공백 제거(trim): 'Java Programming'
공백 제거(strip): 'Java Programming'
앞 공백 제거(strip): 'Java Programming '
뒤 공백 제거(strip): '    Java Programming'

 

 

 

5) 문자열 분할 및 조합 메서드

•  split( String regex )  :  문자열을 정규 표현식을 기준으로 분할한다

•  join( CharSequence delimiter, CharSequence... elements )  :  주어진 구분자로 여러 문자열을 결합한다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

•  문자열 분할 및 조합 메서드 예시

package lang.string.method;

public class StringSplitJoinMain {

    public static void main(String[] args) {

        String str = "Apple,Banana,Orange";

        // Split()
        String[] splitStr = str.split(",");
        for (String s : splitStr) {
            System.out.println(s);
        }
//
//        String joinStr = "";
//        for (String string : splitStr) {
//            joinStr += string + "-";
//        }
//        System.out.println("joinStr = " + joinStr);

        // 마지막에 "-" 가 붙기 때문에 제거해줄 필요가 있다.
        String joinStr = "";
        for(int i=0; i< splitStr.length; i++) {
            String string = splitStr[i];
            joinStr += string;
            if( i != splitStr.length-1) {
                joinStr += "-";
            }
        }
        System.out.println("joinStr = " + joinStr);

        // 위와 같은 불편한 코딩방식에서 벗어나기 위한 메서드
        // Join()
        String joinedStr = String.join("-", "A", "B", "C");
        System.out.println("joinedStr = " + joinedStr);

        // 문자열 배열 연결
        String result = String.join("-", splitStr);
        System.out.println("result = " + result);


        
    }
}
// 실행 결과

Apple
Banana
Orange
joinStr = Apple-Banana-Orange
joinedStr = A-B-C
result = Apple-Banana-Orange

 

 

•  concat( String str )

-  문자열을 더하는 메서드

-  String은 클래스이기 때문에 참조형이다.

-  참조형은 변수에 참조값이 들어가 있어 원칙적으론 + 연산자를 사용할수 없지만, 문자열은 프로그래밍에서 너무 많이 다뤄지기 

    때문에 특별히 + 연산자를 사용가능토록 해준다.

 

-  concat 예시

package lang.string;

public class StringConcatMain {

    public static void main(String[] args) {

        String a = "hello";     // 참조값 x001
        String b = " java";      // 참조값 x002

        String result1 = a + b;
        String result2 = a.concat(b);

        System.out.println("result1 = " + result1);
        System.out.println("result2 = " + result2);

        // 자바에서 문자열을 다룰때는 concat 메서드를 사용해야 한다.
        // 하지만 문자열은 너무 자주 다루어지기 때문에 편의상 특별히 + 연산을 허용
        // ( 일반적으로 참조값끼리의 + 연산은 되지 않는다. )

    }
}

 

 

 

 

※ 해당 내용은 인프런 김영한 강사님의  "실전 자바 중급1" 인강의 참고자료와 예시들을 참고하였습니다

 

 

 

 

반응형
Comments