자바 String 클래스

오세훈·2023년 7월 25일
0

java

목록 보기
8/16

String

String 클래스에는 문자열과 관련된 작업을 할 때 유용하게 사용할 수 있는 다양한 메소드가 포함되어 있습니다.

이러한 String 클래스는 java.lang 패키지에 포함되어 제공됩니다.

String 인스턴스는 한 번 생성되면 그 값을 읽기만 할 수 있고, 변경할 수는 없습니다.

이러한 객체를 자바에서는 불변 객체(immutable object)라고 합니다.

즉, 자바에서 덧셈(+) 연산자를 이용하여 문자열 결합을 수행하면, 기존 문자열의 내용이 변경되는 것이 아니라 내용이 합쳐진 새로운 String 인스턴스가 생성되는 것입니다.

String 1

package sec4;

import java.util.Arrays;

public class StringEx1 {
    public static void main(String[] args) {
        String str1 = new String("HongGilDong");
        String str2 = "HongKilBong";
        System.out.println(str1);
        System.out.println("특정 위치 문자열 출력 : " + str1.charAt(3));
        System.out.println("문자열 비교 : " + str1.equals(str2));

        byte[] bArr = str1.getBytes(); // 문자열을 Byte 배열로 분리
        
        // 별도의 메소드를 통해 반복문 출력
        printArr(bArr);

        // byte 배열을 char 배열로 변환
        char[] cArr = new char[bArr.length];
        for(int i=0; i<bArr.length; i++) {
            cArr[i] = (char) bArr[i];
        }
        // Arrays.toString() 이용
        System.out.print("byte[] 의 출력"+ Arrays.toString(cArr));
        System.out.println();
        
        // 특정 문자의 인덱스를 찾음
        System.out.println("i 는 몇 번째? : "+(str1.indexOf("i")));
        System.out.println("인덱스가 3부터 6전 까지 : "+str1.substring(3, 6));
        System.out.println("소문자 : "+str1.toLowerCase());
        System.out.println("대문자 : "+str1.toUpperCase());

        String data1 = str1.replace("H", "K");
        System.out.println(data1);
        String str3 = "       My name is kim     ";
        System.out.println(str3);
        System.out.println("공백 제거 전 글자 : "+str3.length());
        System.out.println("공백 제거 후 글자 : "+str3.trim().length());

        int k = 1004;
        String t1 = k+""; // 비추천
        String t2 = String.valueOf(k); // 추천
        
        System.out.println(t1);
        System.out.println(t2);
        
        // String을 통해 만들어진 객체인가 확인
        System.out.println("k가 문자열 ? "+(t1 instanceof String));
        System.out.println("k가 문자열 ? "+(t2 instanceof String));
    }
    
    // byte 배열의 형태로 받은 정보를 다시 char를 통해 글자로 출력
    static void printArr(byte[] b) { 
        for(int i=0; i<b.length; i++) {
            char c = (char) b[i];
            System.out.print(c);
        }
        System.out.println();
    }
}

split, tokenizer

package sec4;

import java.util.Arrays;
import java.util.StringTokenizer;

public class StringEx2 {
    public static void main(String[] args) {
        String mem1 = "이슬비/박나연/최상민/황교진/김이호";
        String[] m1 = mem1.split("/");
        System.out.println(Arrays.toString(m1));
        for(String s:m1) {
            System.out.println(s);
        }
        System.out.println();

        // 여러 구분자를 이용해 나눌경우
        String mem2 = "신승원&오세훈,백준철,구예진-김기태";
        String[] m2 = mem2.split("&|,|-");
        System.out.println(Arrays.toString(m2));
        System.out.println();
        
        // StringTokenizer 를 이용한 방법
        String mem3 = "오태훈/신예은/박진관/김현경/김보경";
        StringTokenizer m3 = new StringTokenizer(mem3, "/");
        int cnt = m3.countTokens(); // 토큰에 의해 분리된 요소수
        for (int i=0; i<cnt; i++) {
            String token = m3.nextToken();
            System.out.println(token);
        }
        
    }
}

String buffer, builder

String을 List 처럼 사용 가능

package sec4;

import java.util.Arrays;

public class StringEx3 {
    public static void main(String[] args) {
        String str1 = new String();
        str1+="서광";
        str1+="/";
        str1+="이은영";
        str1+="/";
        str1+="한선";
        str1+="/";
        str1+="이소윤";
        System.out.println(str1);

        // String을 좀 더 쉽게 사용하게 만들어줌
        StringBuffer str2 = new StringBuffer();
        str2.append("신승원");
        str2.append("/");
        str2.append("오세훈");
        str2.append("/");
        str2.append("구예진");
        str2.append("/");
        str2.append("백준철");
        str2.append("/");
        System.out.println(str2);
        str2.replace(0, 3,"김기태");
        System.out.println(str2);
        str2.delete(4, 8);
        System.out.println(str2);

        StringBuilder str3 = new StringBuilder();
        str3.append("황교진");
        str3.append("-");
        str3.append("이슬비");
        str3.append("-");
        str3.append("최상민");
        str3.append("-");
        str3.append("김이호");
        System.out.println(str3);
        str3.insert(4, "오세훈-"); // 끼워넣기 연산자
        System.out.println(str3);
        System.out.println(str3.substring(4, 7));
        System.out.println(str3.reverse());
        String[] str4 = str3.toString().split("-");
        System.out.println(Arrays.toString(str4));
    }
}
profile
자바 풀 스택 주니어 개발자

0개의 댓글