목록StringBuilder (4)
개발 무지렁이

String은 상수이다. 한 번 만들어지면 값변경이 불가, immutable String str = "java"; str = "java2"; ❓ 위의 코드는 정상적으로 실행된다. WHY? 값변경을 하는게 아니라 새로운 객체가 만들어진다. 수정 전의 객체는 garbage collection이 일어난다. String str = new String("java"); String str = "java"; 는 축약표현이다. 사실은 '객체생성연산자(new)'를 통해 객체를 생성하는 것이다. ❗ 주의 new 키워드 없이 할당한 값이 이미 있으면 같은 주소를 저장한다. String str1 = "java"; String str2 = new String("java"); String str3 = "java"; str1 ==..

스택수열 🪅 각 반복문 종료조건을 명확히 알고있느냐, 종료조건을 넣을 알맞은 위치를 찾을 수 있느냐 🪅 반복문을 돌리고 나서, 스택에 데이터가 남아있다는 것이 의미하는 바를 아느냐 🪅 인덱스를 만들어야 할 때를 알고 있느냐 => 바깥쪽 for문에 영향을 주지 않기 위해서 🪅 출력이 많을 때 StringBuilder로 출력할 수 있느냐 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; /** * 백준 1874번 스택수열 * * 입력: * 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어진다. 둘째 줄부터 n개의 줄에는 수열을 이루는 1이상 n이하의..

요세푸스 문제 🪅 일부가 순환되는 것을 보며 큐(queue)를 생각할 수 있느냐 🪅 큐를 구현할 수 있느냐 💡 문제 접근 과정 : k번째가 되어 제거되기 전까지는 첫번째 ~ k-1번째까지는 순서가 뒤로 밀린다. 즉, 첫번째부터 k-1번째까지 빼서 뒤로 넣으면 되고, 빼는 출구와 넣는 입구가 다르므로 큐를 생각해냈다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.Queue; import java.util.StringTokenizer; /* * 백준 1158번 요세푸스 문제 * * 입력: * 첫째 줄에 N과..

값변경에 잘쓰이지 않는 String public class StringTest { public static void main(String[] args) { String str = "안녕하세요"; System.out.println(str); // 안녕하세요 str = "Hello"; System.out.println(str); // Hello } } ❓ 수정이 잘되는데 왜 String은 값변경에 쓰이지 않을까? : String은 객체이다, 원래는 String str = new String("안녕하세요");의 축약형이 위 코드이다. 이 코드가 실행되면 String 객체가 만들어지고, str="Hello";로 바꿨을 때 이 객체에 있는 값이 바뀌는 것이 아니라, 새로운 객체가 만들어지고 str변수가 참조하는 ..