Camp/Java 문법 종합

[TIL] 자바 프로젝트 관리와 변수

taeri7204 2026. 6. 5. 20:30

본격적으로 시작된 자바 기초 문법 강의

아무 지식이나 베이스가 없는 나로선 이미 지끈지끈 머리가 아파온다.

복습과 실습만이 방법이라는 생각으로 꾸준히 나아가보자.

강의를 들으면서 두서없이 필기했던 내용들을 정리해 적어본다. 


 


자바 프로젝트 관리
├─ 이름 규칙 (camelCase vs snake_case)
├─ 패키지(Package) = 폴더처럼 파일을 정리
└─ 클래스(Class) = 실제 자바 파일

이름 규칙의 종류 두 가지

자바에서 사용하는 두 가지 방법이 있다.

카멜케이스 (camelCase) 
- 낙타 등처럼 대문자가 튀어나오는 모양
- 첫 글자는 소문자, 새로운 단어마다 대문자
- 예시: `firstName`, `lastName`, `myCar`, `getUserData`
- 변수와 메서드에 사용됨

스네이크케이스 (snake_case) 
- 뱀처럼 언더스코어로 이어진 모양
- 모두 소문자로 작성
- 예시: `first_name`, `last_name`, `my_car`, `user_age`
- 상수(final)에 주로 사용

패키지(Package) - 폴더처럼 파일을 정리하기

 

패키지란? 

 

- 관련된 자바 클래스들을 그룹으로 묶는 기능
- 실폴더 구조와 같음
- 프로젝트에 파일이 많아지면 체계적으로 정리하기 위해 필수!

패키지 이름 규칙 

소문자만 사용(필수!)  ❌ Chapter1 ✅ chapter1 
숫자로 시작 금지  ❌ 1chapter ✅ chapter1 
특수문자 금지 ❌ chapter#1 ✅ chapter1 
예약어 금지 ❌ class, public ✅ myapp 

패키지 만드는 방법
1. IntelliJ에서 `src` 폴더 우클릭
2. `New` → `Package` 선택
3. 패키지 이름 입력 (예: `chapter1`)
4. 완성

클래스(Class) - 실제 자바 파일

클래스란?
- 자바에서 실제로 코드를 작성하는 파일
- 파일 이름 = 클래스 이름
- 예: `Main.java` 파일 안에는 `Main` 클래스가 있음

클래스 이름 규칙

대문자로 시작(필수!) ❌ myNewClass ✅ MyNewClass 
카멜케이스 사용  ❌ My_new_class ✅ MyNewClass 
숫자로 시작 금지 ❌ 1MyClass  ✅ MyNewClass 
특수문자 금지  ❌ My#Class  ✅ MyClass 
예약어 금지 | ❌ Class, Public ✅ MyClass 


패키지 안에 클래스 만드는 방법:
1. 생성한 패키지에서 우클릭
2. `New` → `Java Class` 선택
3. 클래스 이름 입력
4. 자동으로 파일이 생긴다.

**Import란?**
```java
import chapter1.MyNewClass3;

public class Main {
    public static void main(String[] args) {
        new MyNewClass3();
    }
}


다른 패키지의 클래스를 사용할 때 어느 패키지에 속한 클래스인지 명시해주는 것.

같은 이름의 클래스가 여러 패키지에 있을 수 있기 때문.



- 패키지 이름은 항상 소문자
- 클래스 이름은 항상 대문자로 시작! PascalCase 기억하자

※ 헷갈리기 쉬움.※




| 패키지 | 소문자만, snake_case 가능 | 폴더 구조 |
| 클래스 | 대문자 시작, PascalCase | 자바 파일 |
| 변수/메서드 | 소문자 시작, camelCase | 코드 내부 |

정해진 규칙을 따르면 코드가 읽기 쉬워진다
일관성 있는 이름 → 팀 협업이 수월해진다

 

데이터의 저장 공간


프로그래밍에서 데이터를 다루려면 어딘가에 "저장"해야 함. 변수는 그 저장소 역할.


변수의 역할
├─ 데이터를 저장하는 공간 (메모리)
├─ 변수이름 (데이터의 위치)
└─ 자료형 (데이터의 크기)


도구를 정리할 때 크기 별로 다른 상자(자료형)에 넣고, 상자에 라벨(변수명)을 붙이는 것 과 비슷



변수(Variable) - 데이터를 저장하는 공간

변수란?
- 컴퓨터의 메모리에서 데이터를 저장하는 공간
- 이름을 붙여서 나중에 쉽게 꺼내 쓸 수 있음
- 한 번 사용하고 버리는 게 아니라 계속 재사용 가능

변수의 구조
java
int a;
[자료형] [변수이름][세미콜론]


세미콜론(;)의 역할:
- 자바 문장의 마침표 같은 것
- 이 문장이 끝났다는 걸 컴퓨터한테 알려줌
- 없으면 에러 발생

 

변수 이름 규칙

변수 이름을 잘 지으면 코드가 이해하기 훨씬 쉽다.

숫자로 시작 금지 ❌ 1stCar  ✅ car1 
공백 사용 금지  ❌ my car  ✅ myCar 
예약어 사용 금지  ❌ int, class, true  ✅ myNumber 
특수문자는 _ , $ 만 가능  ❌ my-car  ✅ my_car, my$car 
카멜케이스 권장  ❌ my_car  ✅ myCar 

TIP : 변수명을 명사로 짓고, 무엇을 담는 변수인지 명확하게 할 것.

변수 활용 방법

변수 선언
```java
int a;
int b;
```
정수를 넣을 수 있는 상자 2개를 만듬.

변수에 값 할당 (값을 넣음)
```java
a = 1;  // 변수 a에 1을 넣음
```
- `a`: 변수이름 (변수)
- `1`: 실제 값 (리터럴, Literal)

선언과 동시에 값 할당 
```java
int c = 3;  // 선언하면서 바로 값 입력
```
→ 이렇게 처음 값을 넣는 것을 초기화(initialization) 라고 함.

값 재할당 (값을 다시 넣음)
```java
int c = 3;
c = 5;
c = 7;
```
→ 값이 계속 덮어씌워져 마지막 값이 7이 됨.

다른 변수의 값을 할당
```java
int d = 1;
int e = d;  // d의 값이 e로 복사됨
d = 10;
System.out.println(e);  // 결과: 1 (e는 영향 안 받음)
```
→ 데이터가 복사됨.

자료형(DataType) - 데이터의 크기를 정하기

변수를 만들 때 어떤 자료형을 쓸지 정해야 해. 상자의 크기를 정하는 것처럼

 


 

외우는 것이 편하지 않을까 하는 생각이 든다.

자료형의 종류

boolean 논리형true/false  `boolean isOpen = true;` 
char 문자형 0 ~ 65535   `char grade = 'A';` 
byte 정수형 -128 ~ 127 `byte age = 25;` 
short 정수형 -32,768 ~ 32,767 
int 정수형  -약 21억 ~ 21억  `int number = 100;` 
long 정수형 매우 큼  8  `long bigNum = 1000000L;` 
float 실수형  소수점 6~7자리  `float pi = 3.14f;` 
double 실수형  소수점 15~17자리  `double height = 175.5;` 

자주 쓰는 자료형:
int: 일반적인 정수는 이걸로!
double: 소수점이 필요하면 이걸로!
String: 문자열은 이걸로! (String은 대문자로 시작)
boolean: true/false 두 가지만 필요하면 이걸로!

**중요한 팁:**
- `float`은 뒤에 꼭 `f`를 붙여줘야 함 → `3.14f`
- `long`은 뒤에 꼭 `L`을 붙여줘야 함 → `1000000L`
- `String`은 쌍따옴표로 감싸기 → `"hello"`
- `char`은 따옴표 하나만 감싸기 → `'A'`




형변환(Casting) 

형변환이란?
- 변수의 자료형을 다른 자료형으로 바꾸는 것
- 상자의 크기를 바꾸는 것처럼 생각하면 돼

업캐스팅(UpCasting) - 작은 상자 → 큰 상자 

```java
int smallBox = 10;
double bigBox = smallBox;  // 자동으로 변환됨
System.out.println(bigBox);  // 출력: 10.0
```

작은 상자의 데이터를 큰 상자에 넣음
- 자동으로 변환됨명시적 표기 불필요)
- 데이터 손실 없음

다운캐스팅(DownCasting)  큰 → 작은 상자 ❌

```java
double bigBox = 10.111;
int smallBox = (int) bigBox;  // 강제로 변환됨.
System.out.println(smallBox);  // 출력: 10 (데이터 손실!)
```

- 큰 상자의 데이터를 작은 상자에 넣음
- 꼭 명시적으로 `(int)` 같은 표기가 필요
- 데이터가 짤려나갈 수 있음 (손실 발생)

| 업캐스팅 | 작은 → 큰 | ✅ 자동 | 없음 |
| 다운캐스팅 | 큰 → 작은 | ❌ 명시적 | 발생 가능 |


- 변수는 이름, 자료형, 값 세 가지로 이루어져 있음.
- 자료형을 제대로 선택하는 게 메모리 효율적인 프로그래밍의 시작
- 형변환은 일반적으로 피해야 할 일. 처음부터 올바른 자료형을 쓰는 게 권장됨



- 정수 필요? → `int` 사용 (큰 수면 `long`)
- 소수점 필요? → `double` 사용
- 진짜/거짓? → `boolean` 사용
- 문자 하나? → `char` 사용
- 문자열(여러 글자)? → `String` 사용



후기

IntelliJ 다루기를 시작하면서 단순히 강의를 보고 따라하는 것이 중요한 것이 아닌 느낌이 든다.

개인적으로 필기하고 암기하려는 시간이 필요하다는게 느껴진다.  

앉아있는 시간은 똑같지만 집중력의 한계가 점점 빨리 찾아오는 느낌이고, 피로도도 높아지고 있다.

앞으로 챕터2,3 또 알고리즘 강의도 앞두고 있는데 이 부분에서 제대로 기초를 다지지 못하면 

뒤에 배우게 될 내용의 이해도도 떨어질 것이라고 예상됨. 

강의만 주구장창 보고 의미없는 진도를 나가는 게 무슨 의미일지..

시간이 걸리더라도 기초 강의 내용을 확실히 내걸로 만드는 방법, 공부법에 대해서 주말동안 꼭 고민해봐야 한다는 생각이 든다.