학습 키워드
- 컴퓨터의 기억 방식
- 자바 프로젝트 관리
- 변수
- API 명세서
컴퓨터의 기억 방식
주 기억장치 - RAM
사람은 주 기억장치로 뇌를, 컴퓨터는 RAM을 사용합니다.
- 주 기억장치 - 메모리(RAM)의 특징**: 휘발성, 빠른 속도
- 사람도 컴퓨터도 정보를 영구적으로 저장할 수 없습니다. 이 특징을 휘발성이라고 합니다.
- 예를 들어, 컴퓨터에서 문서를 작성하다가 저장하지 않고 갑자기 종료되면 작업하던 내용이 모두 사라집니다.
보조 기억장치 - HDD/SSD
사람은 정보를 영구적으로 저장하기 위해 필기를 합니다. 컴퓨터도 영구적으로 정보를 저장하기 위해 하드디스크를 활용합니다.
- 보조 기억장치의 특징: 영구저장, 느린속도
- 보조기억장치에 저장된 정보는 영구적으로 유직되지만, 저장된 정보를 가져오기 위해서는 더 큰 비용이 소모 됩니다.
- 주 기억장치보다 느리다는 것이 특징입니다.
컴퓨터가 메모리를 관리하는 방법
컴퓨터의 메모리는 1 바이트 단위로 주소가 매겨져 관리됩니다.
- 바이트(Byte)
- 컴퓨터가 데이터를 저장하고 처리하는 단위 중 하나입니다.
- 1 바이트는 8비트로 구성되어 있습니다.
- 비트(Bit)
- 컴퓨터가 데이터를 저장하고 처리하는 단위 중 하나입니다.
- 1 비트는 0 혹은 1중에서 한 개를 저장할 수 있는 공간입니다.
자바 프로젝트 관리
이름 규칙
- 카멜케이스(camelCase🐪)
- 대문자가 혹처럼 튀어나옵니다.
fitstName, lastName, fullName
- 스네이크케이스(snake_case🐍)
- 언더스코어가 뱀처럼 이어집니다.
first_name, last_name, full_name
패키지(폴더)
Java 프로젝트에서는 파일들의 묶음을 패키지라고 합니다.
- 패키지(Package)는 관련된 자바 클래스들을 그룹으로 묶는 기능입니다.
- 즉, 폴더처럼 파일(클래스)을 정리해서 관리할 수 있도록 도와주는 역할을 합니다.
패키지 이름규칙
- Java에서 패키지명은 소문자만으로 적는 것을 권장합니다.

클래스(파일)
Java 프로젝트에서는 클래스 이름이 파일명이 됩니다.
- Main.java 파일 안에는 Main 클래스가 존재합니다.
import chapter.NewClass; // NewClass가 어느 패키지에 속하는지 설명
public clss Main {
public static void main(String[] args){
system.out.print("Hello Java!");
new NewClass(); // 다른 파일에 있는 클래스를 사용
}
}
임포트(import)
- 클래스를 프로그램 시작 지점에서 활용할 때 사용되는 클래스가 어느 패키지에 속한 클래스인지 명시해 줍니다.
- 이 작업이 필요한 이유는 하나의 프로젝트 안에서 동일한 이름을 가진 클래스가 존재할 수 있기 때문입니다.
클래스 이름규칙
클래스 이름을 작성할 때는 첫 글자 대문자 + 카멜케이스 조합으로 작성합니다.
- 이를 파스칼케이스(Pascalcase)라고 합니다.

변수
변수란 데이터를 컴퓨터에 저장하기 위한 공간입니다.
- 우리는 도구를 활용해 다양한 것들을 만들 수 있습니다.
- 도구를 활용하고 보관하기 위해서 상자에 담아 관리합니다.
- 상자에 이름을 붙여 놓으면 필요한 도구를 쉽게 찾아 사용할 수 있습니다.
- Java도 데이터를 활용하고 보관하기 위해서 변수에 담아 관리합니다.
- 이 데이터들은 메모리에서 관리됩니다.

변수의 구조
[자료형][변수이름][세미콜론]
int a;
변수 이름규칙
- 가독성을 위해 카멜케이스를 권장라고 있으며, 명사 형태로 사용하는 것이 좋습니다.
- 특수문자 또한 사용하지 않는 것이 좋습니다.

변수 활용
- 문법: 변수 선언
- 데이터 저장 공간을 만드는 것은 "변수를 선언한다"라고 합니다.
int a;
int b;
int a;
a = 1;
- 문법: 선언과 동시에 값 할당
- 변수를 선언하면서 동시에 값을 할당해 줄 수 있습니다.
int c=2;
- 문법: 기존 변수에 데이터 재할당
- 변수는 재사용 될 수 있습니다.
- 기존 변수에 값을 재할당하게 되면 값이 덮어씌워집니다.
c=3;
c=4;
c=5;
- 문법: 변수에 변수를 할당
- 변수에 직접 미리 선언된 변수를 할당할 수도 있습니다.
- 데이터가 복사되어 할당됩니다.
int d=1;
int e=d;
d=10;
System.out.print(e) // 값은 1
자료형(DataType)
- 자료형은 상자에 담을 수 있는 데이터의 크기를 결정하는 규칙입니다.
- Java에서는 사용 빈도가 높은 자료형을 미리 정해 놓았습니다.(
int, String, long, boolean)
- 자료형으로 데이터의 크기를 표현합니다.

float와 double형의 범위를 약이라고 표현한 이유
- 이는 IEEE 754 부동소수점 표현 방식 때문입니다. Java의 float 과 double 은 2진수 기반의 부
동소수점으로 저장되며 이는 10진수에서 정확한 자릿수를 보장하지 못하는 경우가 있기 때문
입니다.
형변환(Casting)
- 형 변환은 변수의 자료형을 다른 자료형으로 변경하는 것을 의미합니다.
- 업캐스팅과 다운캐스팅 방식이 있습니다.

다운캐스팅
- 큰 데이터를 작은 상자에 옮겨담는 것 입니다.
- 큰 데이터를 작은 상자에 넣어야 하기 때문에 강제로 형 변환을 시켜야합니다.
- 강제로 형 변환할 때는 명시적으로 변환시켜야 합니다.
- 데이터 손실이 발생합니다.

업캐스팅
- 작은 데이터를 큰 상자에 옮겨 담는 것 입니다.
- 문제가 발생하지 않기 때문에 이 과정은 자동으로 변경됩니다.
- 데이터 손실이 없습니다.

API 명세서
API 명세서에 대한 이해가 부족한 것 같아 Claude AI를 사용하여 빈 값이 들어간 API 명세서 예제를 만들고, 빈 값을 넣고 내가 이해하고 있는 부분과 개선할 부분을 확인하였다.
강점
- HTTP 메서드와 엔드포인트, 상태 코드를 정확하게 이해하고 있다.
- Path Parameter 사용법을 잘 알고 있다.
개선이 필요한 점
- 에러 응답에 대한 커스텀 에러 코드의 네이밍이 관례적이지 못합니다.
- 요청사항에 대한 에러 메시지 작성이 미흡합니다.
- 헤더 Authorization의 인증 필요 여부와 인증의 목적의 차이점 이해가 부족합니다.
커스텀 코드 설계
✅ 해야 할 것
- 일관된 네이밍 규칙 사용
- 문서화 (코드표 작성 및 공유)
- 도메인별 prefix 사용 (USER, PRODUCT, ORDER_)
- 의미있는 이름 짓기
- 재사용 가능하게 설계
❌ 하지 말아야 할 것
- HTTP 상태 코드와 혼동되는 이름 (예: ERROR_404)
- 너무 세분화 (모든 케이스마다 다른 코드)
- 모호한 이름 (예: ERROR_001, FAILED)
- 중복된 의미의 코드
에러 메시지 작성 능력 향상 방법
🎯 에러 메시지 작성 프레임워크
- 에러 메시지는 3가지 요소를 담아야 합니다:
- 공식: 무엇이 + 왜 + 어떻게
[무엇이 잘못되었는가] + [왜 실패했는가] + [어떻게 해결하는가]
5W1H 체크리스트

인증 필요 여부 vs 인증의 목적
