inblog logo
|
LifeLog, DevLog
    TIL

    TIL 20251108, 10

    KYJTHEYJ's avatar
    KYJTHEYJ
    Nov 10, 2025
    TIL 20251108, 10
    • JS

      형 변환
      • ES6+ 에서 추가된 Symbol, BigInt 정리

      • String, Number, Boolean, Object의 명시적 형변환에 대해 보완

        • 좀 더 실무에선 어떻게 쓰는지에 대해 정리 → 링크 본문 보완

          • 템플릿 리터럴 및 백틱 형태 정리 → 링크 본문 보완

          • 각각의 형 변환에 대해 재정리 → 링크 본문 보완

          • 보완점 요약

            // 템플릿 리터럴로 String 형 변환
            let number1 = 12345n;
            console.log(`${number1}`);
            
            // + 키워드를 통한 Number 형 변환
            let thisisNum = "10.1010";
            console.log(+"abcd"); // -> NaN
            console.log(+thisisNum);
            
            // !! 키워드를 통한 Boolean 형 변환
            let anyway_thisisTrue = "whatever";
            console.log(!!anyway_thisisTrue);
            
            // 원시 -> Object 참조형
            let str = "wow";
            console.log(str.toUpperCase()); // 이 때 JS 엔진은 new String("wow") 형으로 객체를 만들고 대문자화
            
            let number100 = 100;
            let object1 = Object(number100);
            console.log(object1);
            
            let object2 = new Object(number100);
            console.log(object2);
            
            // 이 경우엔 Number 객체가 아니라 일반 객체로 변환됨
            let object3 = { value: number100 };
            console.log(object3);
            
            // Object 참조형 -> 원시
            // Symbol에 따른 힌트 추가로 Hook을 통해 각각으로 형변환 될때 값 제공
            const objects = {
                valueOf() {return 31; }, toString() {return "custom";}
            };
            
            console.log(`${objects}`); // custom
            console.log(+objects); // 31
            
            // Json 형 형변환 **
            // 응답 JSON을 객체로
            const response = '{"id":1,"price":2500}';
            const data = JSON.parse(response); // { id: 1, price: 2500 }
            
            // 직렬화를 통해 JSON으로
            const datas = {keydata : 112233, cost : 999};
            const jsonDatas = JSON.stringify(datas);
            console.log(jsonDatas);
            
    • Java 버전 별 정리

      Java 버전 별 차이 및 키워드 정리
      • Java 21의 가상 쓰레드, Java 25의 Scoped 개념은
        따로 학습 과정과 정리의 필요성 느낌, 겉만 핥은 느낌


    • 내배캠 퀘스트

      • 조건문을 이용한 프로그램 구상 및 문서화, 실제 구현

        • 워크시트 작성법 안내

          • 주제, 입력 설계, 분기 설계, 테스트 케이스 작성, 코드 스켈레톤 순서

            import java.util.Scanner;
            
            public class learnCheckProgram {
            
                public static String scoreCheck(Scanner sc) {
                    String scoreInput;
                    int score;
            
                    while (true) {
                        scoreInput = sc.nextLine();
            
                        try {
                            score = Integer.parseInt(scoreInput);
                            if (score < 0 || score > 100) {
                                System.out.println("잘못된 값을 입력하셨습니다, 다시 진행해주세요 (0~100)");
                            } else {
                                break;
                            }
                        } catch (Exception e) {
                            System.out.println("잘못된 값을 입력하셨습니다, 다시 진행해주세요 (0~100)");
                        }
                    }
            
                    if (score == 100) {
                        return "A";
                    } else if (score > 70) {
                        return "B";
                    } else if (score < 70 && score > 50) {
                        return "C";
                    } else if (score < 50) {
                        return "D";
                    } else {
                        return "ERR";
                    }
                }
            
                public static boolean ynCheck(Scanner sc) {
                    while (true) {
                        String yn = sc.nextLine().toUpperCase();
            
                        if (yn.equals("Y"))
                            return true;
            
                        if (yn.equals("N"))
                            return false;
            
                        System.out.println("잘못된 값을 입력하셨습니다, 다시 진행해주세요 (Y/N)");
                    }
                }
            
                public static void allCheck() {
                    Scanner scanner = new Scanner(System.in);
            
                    System.out.println("오늘 학습 체크하기!");
                    System.out.println("오늘은 강의나 따로 학습을 진행하였나요? (Y/N)");
                    if (!ynCheck(scanner)) {
                        System.out.println("학습을 진행하고 오세요!");
                        return;
                    }
            
                    System.out.println("학습내용을 정리하였나요? (Y/N)");
                    if (!ynCheck(scanner)) {
                        System.out.println("정리하고 오세요!");
                        return;
                    }
            
                    System.out.println("TIL을 작성하였나요? (Y/N)");
                    if (!ynCheck(scanner)) {
                        System.out.println("작성하고 오세요!");
                        return;
                    }
            
                    System.out.println("얼마나 이해하였나요? (0~100)");
                    switch (scoreCheck(scanner)) {
                        case "A":
                            System.out.println("완벽해요! 수고하셨어요");
                            break;
                        case "B":
                            System.out.println("이해가 덜 된 부분만 다시 봐요!");
                            break;
                        case "C":
                            System.out.println("이해한게 맞나요? 다시 확인해봐요!");
                            break;
                        case "D":
                            System.out.println("다시 공부해봐요!");
                            break;
                    }
            
                }
            
                public static void main(String[] args) {
                    allCheck();
                }
            }
    • 워크시트 작성은 상당히 설계에 도움되는 부분으로 보여 기억해두기 위해 따로 저장

    Share article

    LifeLog, DevLog - https://github.com/KYJTHEYJ

    RSS·Powered by Inblog