String 관련 정리는 여기다가!!

꿀이·2022년 5월 1일
0

문자열 → char 배열/ 역순

https://leetcode.com/problems/backspace-string-compare/

리트코드 String 관련 문제를 풀다가 문자열 인덱스에 접근해서 값을 변경하고 싶었는데 어떻게 하는지 몰르겠어서 찾아봄 ㅎ...
.toCharArray() 메서드를 사용하면 문자열을 char[] 로 변환해서 리턴을 해준다.

그렇다면 다시 이 배열을 문자열로 바꿔주고 싶다면? new String(배열) 을 해주면 된다..!

        String str = "안녕하세요 baeksu 입니다.";
        char[] charArr = str.toCharArray();
        System.out.println("str = " + str);

        charArr[0] = '강';
        for (char ch : charArr) {
            System.out.print(ch);
        }
        System.out.println();

        String res = new String(charArr);
        System.out.println("res = " + res);


StringBuilder

java 에서 String 객체는 한번 생성이 되면 변경이 안되는 문자열이다. 그래서 뭔가 내부적으로 뭔가 메모리를 해제하고 다시 붙히고 이런작업을 하는거 같음. 이럴 때 StringBuilder 를 사용하면 될듯. 속도차이가 좀 나는구나...

  • StringBuilder 에 append 할때 그냥 정수로도 추가할수 있네??!!

StringBuffer 라는거도 있는데 얘는 동기화가 필요한 상황에서 써야 하는듯, 코테 볼때 StringBuilder 를 쓰면 될 듯?!

public class Main {
    public static void main(String[] args) {
        String str = "test";
        int cnt = 100000;
        String result = "";

        long beforeTime = System.currentTimeMillis(); //코드 실행 전에 시간 받아오기

        for (int i = 0 ; i< cnt ; i++){
            result += str;
        }

        long afterTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
        long secDiffTime = (afterTime - beforeTime); //두 시간에 차 계산
        System.out.println("String 시간차이(ms) : "+secDiffTime);


        StringBuilder sb = new StringBuilder();

        beforeTime = System.currentTimeMillis(); //코드 실행 전에 시간 받아오기

        for (int i = 0 ; i< cnt ; i++){
            sb.append(str);
        }
        String result2 = sb.toString();

        afterTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
        secDiffTime = (afterTime - beforeTime); //두 시간에 차 계산
        System.out.println("StringBuilder 시간차이(ms) : "+secDiffTime);



    }
}

profile
내게 맞는 옷을 찾는중🔎

0개의 댓글