❗어떤 문제가 있었는지
- 26일자 진행했던 음료 자판기 코딩 복습 과정에서의 오류 발견
- scanner.nextLine()으로 입력을 받을 때 앞 뒤의 공백이나 불필요한 공백이 같이 입력되는 경우 조건문을 만족하지 못해 containsKey 검사에서 실패하게 됨
- 27일자 진행했던 단어 맞추기 게임 코딩 진행 및 복습 과정에서 초기 실행 화면 이후의 코드 구성에 어려움이 있었음
- 코드 실행에 따른 초기 화면 구성에 대한 고민을 진행
- 정답의 자릿수와 현 상태를 나타낼 수 있도록 구성해야 함
- 주어진 단어들에 대하여 코드 실행하는 때 마다 랜덤하게 추출하여 결과값에 노출해야 함
- 기존 학습으로 활용이 필요했던 함수 구성
- 변수 선언의 종류는 몇가지로 구성해야 하는지
- Random()
- 메서드
- 개별적으로 추가 학습이 필요했던 개념
- StringBuilder
- CharAt(i)
- private static final String[] WORDS 에서의 final로 선언하는 이유
- 코드 실행에 따른 초기 화면 구성에 대한 고민을 진행
📝 내가 시도해본 것들
- 오류에 대한 해결책을 찾기 위해 자주 사용하는 표준 클래스에 대한 이해도가 필요했다고 판단하였고 서칭을 진행하였음
- 대표적인 예로는 trim(), substring(), replace(), toUppercase() 등을 확인할 수 있었음
- trim() : 문자열 공백 제거
- toLowercase(), toUppercase() : 글자(알파벳) 소문자화, 대문자화
- substring() : 문자열의 특정 부분을 잘라내는 데 사용
- replace() : 문자열을 치환하는 데 사용
- 대표적인 예로는 trim(), substring(), replace(), toUppercase() 등을 확인할 수 있었음
💡어떻게 해결했는지
- 위의 예제에서 사용할 공백에 대한 이슈를 해소하는 경우는 trim() 을 사용함으로서 이슈를 해소할 수 있게 됨
- nextLine() 의 경우 입력된 한 줄 자체를 읽기때문에 공백이 포함된 경우 입력값을 확인하는데 조건식을 만족하지 못하는 오류가 발생
- nextInt() 는 숫자만 읽고, 숫자 뒤에 오는 공백 또는 엔터는 무시하게 됨, 단 숫자가 아닌 문자가 섞이면 에러가 발생
👍무엇을 새롭게 알았는지
- StringBuilder : String은 불변 객체, 한번 생성 되면 내부 문자열을 바꿀 수 없음. 이런 상황을 개선해주기 위해서 StringBuilder를 사용하여 내용을 직접 수정 가능하게 하고 이를 통해 새로운 객체를 만들지 않고 기존 공간에서 작업할 수 있음
- 문자열 연결, 삽입, 삭제, 치환 등을 빠르게 수행할 수 있음
- 사용하기 좋은 상황 :
- 반복문 안에서 문자열을 계속 붙이는 상황 / 대량의 문자열을 조작해야 할 때 / printf처럼 문자열을 쌓아야 할 경우
- 반복문 안에서 문자열을 계속 붙이는 상황 / 대량의 문자열을 조작해야 할 때 / printf처럼 문자열을 쌓아야 할 경우
StringBuilder sb = new StringBuilder("Hello");
// 문자열 뒤에 붙이기
sb.append(" World"); // "Hello World"
// 문자열 특정 위치에 삽입
sb.insert(5, " Java"); // "Hello Java World"
// 문자열 일부 삭제
sb.delete(5, 10); // "Hello World"
// 문자열 일부 변경
sb.replace(0, 5, "Hi"); // "Hi World"
// 문자열 뒤집기
sb.reverse(); // "dlroW iH"
// String으로 변환
String result = sb.toString();
- CharAt(i) : CharAt 함수란 String 타입의 데이터(문자열) 에서 특정 문자를 char 타입으로 변환할 때 사용하는 함수
- 예시)
public class Test {
public static void main(String[] args) {
// 변수 선언
String example = "안녕하세요";
char target1;
char target2;
char target3;
target1 = example.charAt(0); // 0번째 글자를 target1 에 저장
target2 = example.charAt(1); // 1번째 글자를 target2 에 저장
target3 = example.charAt(2); // 2번째 글자를 target3 에 저장
System.out.println(target);
System.out.println(target2);
System.out.println(target3);
}
- 결과

- static final로 변수를 선언하는 이유는 상수를 만들기위한 것
- final : 한번 값을 넣으면 변경할 수 없음 → 불변성 확보
- static : 클래스 차원에서 하나만 존재하는 변수
- 객체마다 따로 생성되지 않고, 메모리에 딱 하나만 로딩됨
- static final은 모든 인스턴스가 공유하는 상수가 됨
- private : 캡슐화 → 외부 클래스에서 직접 접근 못하게 막음
이에 따라 private static final을 쓰는 이유는 클래스 안에서만 사용하는 변하지 않는 전역 상수를 만들기 위한 선언 방식
'내배캠 끄적끄적 > Today I Learned' 카테고리의 다른 글
| 250901 TIL (2) | 2025.09.01 |
|---|---|
| 250829 TIL & 사전캠프 마무리 (15) | 2025.08.29 |
| 250827 TIL (6) | 2025.08.27 |
| 250826 TIL (4) | 2025.08.26 |
| 250825 TIL (4) | 2025.08.25 |