Programming - Language/JAVA

[250218] JAVA κΈ°λ³Έ 문법 - λ³€μˆ˜, μ—°μ‚°μž, 쑰건문, 반볡문

jennnnna 2025. 2. 18. 23:24

 

λ³€μˆ˜ (Variables)

μžλ°”μ—μ„œ λ³€μˆ˜λŠ” 데이터λ₯Ό μ €μž₯ν•˜λŠ” 곡간이며, '객체의 μƒνƒœ'λ₯Ό μ €μž₯ν•˜λŠ” 역할을 ν•œλ‹€. 

μžλ°”μ—μ„œλŠ” λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ μžλ£Œν˜•(data type) 을 ν•¨κ»˜ μ§€μ •ν•΄μ•Ό ν•œλ‹€ 

 

 

μžλ£Œν˜• (Data Type) 

λ°μ΄ν„°μ˜ μ’…λ₯˜μ™€ 크기λ₯Ό κ²°μ •ν•˜λŠ” κΈ°λ³Έ ꡬ성 μš”μ†Œ. 

숫자, λ¬Έμžμ—΄μ²˜λŸΌ 자료 ν˜•νƒœλ‘œ μ‚¬μš©ν•˜λŠ” λͺ¨λ“  것을 λœ»ν•œλ‹€. ν”„λ‘œκ·Έλž¨μ—μ„œ κ°€μž₯ κΈ°λ³Έμ μ΄λ©΄μ„œ 핡심 λ‹¨μœ„κ°€ λ˜λŠ” 것이 μžλ£Œν˜•μ΄λ‹€. ν”„λ‘œκ·Έλž˜λ°μ˜ κ°€μž₯ 기초. 

"κ·Έ μ–Έμ–΄μ˜ μžλ£Œν˜•μ„ μ•Œλ©΄ 이미 κ·Έ μ–Έμ–΄μ˜ λ°˜μ„ ν„°λ“ν•œ κ²ƒμ΄λ‚˜ 닀름 μ—†λ‹€."

 

μ •μˆ˜ - int ( -2147483648 ~ 2147483647 ), double ( -9223372036854775808 ~ 9223372036854775807 ), 반면 byte, short λŠ” 잘 μ‚¬μš© μ•ˆ 함. 

μ‹€μˆ˜ - float (-3.4*10의38승 ~ -3.4*10의38승) , double (-1.7*10의308승 ~ -1.7*10의 308승)

 

int 와 long 을 μ‚¬μš©ν•œ 예제 

int age = 10;
long countOfStar = 8764827384923849L;

 

 

float 와 double 을 μ‚¬μš©ν•œ 예제 

float pi = 3.14F;
double morePi = 3.14159265358979323846;


// μ‹€μˆ˜λŠ” μ§€μˆ˜μ‹μœΌλ‘œλ„ ν‘œν˜„ κ°€λŠ₯ν•˜λ‹€. 
double d1 = 123.4;
double d2 = 1.234e2;

e2λŠ” 10의 μ œκ³±μ„ μ˜λ―Έν•œλ‹€. 
즉, d1, d2λŠ” 같은 값이닀.

 

 

8μ§„μˆ˜μ™€ 16μ§„μˆ˜ 

이 λ‘˜μ€ int μžλ£Œν˜•μ„ μ‚¬μš©ν•œλ‹€. 

숫자 0으둜 μ‹œμž‘ν•˜λ©΄ 8μ§„μˆ˜, 숫자 0κ³Ό μ•ŒνŒŒλ²³ x둜 μ‹œμž‘ν•˜λ©΄ 16μ§„μˆ˜κ°€ λœλ‹€. 

8μ§„μˆ˜μ™€ 16μ§„μˆ˜λ₯Ό μ‚¬μš©ν•œ μ˜ˆλŠ” μ•„λž˜μ™€ κ°™μŒ. 

int octal = 023;    // μ‹­μ§„μˆ˜: 19
int hex = 0xC3;     // μ‹­μ§„μˆ˜: 195

 

 

 

 

λ³€μˆ˜μ˜ μ’…λ₯˜ 

μžλ°”μ—μ„œ λ³€μˆ˜λŠ” μ„ μ–Έμœ„μΉ˜μ— 따라 달라진닀. (λ³€μˆ˜μ™€ ν•„λ“œ λΌλŠ” μš©μ–΄λ₯Ό ν˜Όμš©ν•΄μ„œ μ‚¬μš©ν•˜λ‹ˆ μž˜κ΅¬λΆ„ν•˜κΈ°) 

 

1) μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ (Instance Variables, Non-Static Fields) 

- 객체(μΈμŠ€ν„΄μŠ€)λ§ˆλ‹€ λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” λ³€μˆ˜ λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•œλ‹€λŠ” 말의 뜻??? 

 - static ν‚€μ›Œλ“œ 없이 μ„ μ–Έλœ λ³€μˆ˜. 

- 객체가 생성될 λ•Œ μ΄ˆκΈ°ν™” λœλ‹€. 객체가 μƒμ„±λ˜λŠ” μ‹œμ μ€ λ©”λͺ¨λ¦¬ κ΄€μ μ—μ„œ μ–Έμ œμΈκ±°μ§€? 

class Bicycle {
    int speed = 0;  // μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ (각 κ°μ²΄λ§ˆλ‹€ 독립적인 κ°’)
    int gear = 1;
}

speed 와 gear 의 값은 Bicycle의 κ°μ²΄λ§ˆλ‹€ 각각 독립적인 값을 κ°€μ§„λ‹€. 

 

2) 클래슀 λ³€μˆ˜ (Class Variables, Static Variables) 

- static ν‚€μ›Œλ“œκ°€ 뢙은 λ³€μˆ˜. 

- ν΄λž˜μŠ€μ— ν•˜λ‚˜λ§Œ μ‘΄μž¬ν•˜λ©°, 이후 μƒμ„±λ˜λŠ” λͺ¨λ“  객체가 κ³΅μœ ν•˜λŠ” κ°’μž„. 

- 심지어 객체λ₯Ό μƒμ„±ν•˜μ§€ μ•Šμ•„λ„ μ ‘κ·Ό κ°€λŠ₯ν•˜λ‹€. 

 

3) μ§€μ—­ λ³€μˆ˜ (Local Variables) 

- λ©”μ†Œλ“œ λ‚΄λΆ€μ—μ„œ μ„ μ–Έλœ λ³€μˆ˜ 

- λ©”μ†Œλ“œ μ‹€ν–‰λ  λ•Œ μƒμ„±λ˜κ³ , λλ‚˜λ©΄ μ†Œλ©Έλ¨. μ§€μ—­λ³€μˆ˜λŠ” Stack 에 μ €μž₯λ˜λŠ”κ±΄κ°€? 

- Static 을 μ‚¬μš©ν•  수 μ—†μŒ. 

 

4) λ§€κ°œλ³€μˆ˜ (parameter) 

- λ©”μ†Œλ“œ  μƒμ„±μžμ—κ²Œ 전달받은 κ°’. 

- μ§€μ—­ λ³€μˆ˜λž‘ λΉ„μŠ·ν•˜μ§€λ§Œ λ©”μ„œλ“œκ°€ 호좜될 λ•Œ 값이 μ „λ‹¬λœλ‹€. 

- field 라고 ν•˜μ§€ μ•Šκ³  항상 λ³€μˆ˜ variable 둜 λΆˆλ¦°λ‹€. 

 

λ³€μˆ˜μ˜ naming κ·œμΉ™ 

- λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•œλ‹€. (Speed, speed λŠ” λ‹€λ₯Έ λ³€μˆ˜) 

- 숫자둜 μ‹œμž‘ν•  수 μ—†λ‹€ 

- 곡백을 포함할 수 μ—†λ‹€

- 특수 λ¬ΈμžλŠ” _μ–Έλ”μŠ€μ½”μ–΄μ™€ $ 만 μ‚¬μš© κ°€λŠ₯ν•˜λ‹€. κ·ΈλŸ¬λ‚˜ $ λŠ” 직접 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것이 μ’‹λ‹€. μžλ™ μƒμ„±λœ μ½”λ“œμ—μ„œλ§Œ 쓰인닀. 

- μžλ°” ν‚€μ›Œλ“œ μ‚¬μš©ν•  수 μ—†λ‹€ 

- κ΄€λ‘€λ‘œλŠ” μ—¬λŸ¬ 단어 μ‘°ν•©μ‹œ 카멜 μΌ€μ΄μŠ€λ₯Ό μ‚¬μš©ν• κ²ƒ, μ•½μ–΄λ³΄λ‹€λŠ” 전체 단어 μ‚¬μš©ν•  것, 클래슀 λ³€μˆ˜λŠ” λŒ€λ¬Έμžλ‘œ μž‘μ„±ν•˜κ³  _둜 단어 ꡬ뢆ㄹ 것, 객체의 μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” ν•„λ“œλŠ” λͺ…μ‚¬λ‘œ μž‘μ„±ν•  것, boolean λ³€μˆ˜λŠ” is, has, can λ“±μ˜ 접두사λ₯Ό μ‚¬μš©ν•  것. 등이 μžˆλ‹€. 

 

λ³€μˆ˜μ˜ κΈ°λ³Έ κ°’ (Default Values) 

- μ§€μ—­ λ³€μˆ˜μ˜ 경우 λ°˜λ“œμ‹œ μ΄ˆκΈ°ν™” ν•΄μ•Ό ν•œλ‹€ (λ©”μ†Œλ“œ μ•ˆ λ³€μˆ˜) 

- μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ & 클래슀 λ³€μˆ˜λŠ” μžλ™μœΌλ‘œ 기본값이 ν• λ‹Ήλœλ‹€. 

 

μ—°μ‚°μž (Operators) 

- μ—°μ‚°μžλŠ” νŠΉμ • 연산을 μˆ˜ν–‰ν•˜λŠ” 기호 

- ν”Όμ—°μ‚°μžμ˜ κ°œμˆ˜μ— 따라 단항, 이항, μ‚Όν•­ μ—°μ‚°μžλ‘œ κ΅¬λΆ„λœλ‹€. 

- μš°μ„ μˆœμœ„κ°€ λ†’μ„μˆ˜λ‘ λ¨Όμ € μ‹€ν–‰λ˜λ©°, λŒ€λΆ€λΆ„ μ™Όμͺ½μ—μ„œ 였λ₯Έμͺ½μœΌλ‘œ μ‹€ν–‰λœλ‹€. 

- 단, λŒ€μž…μ—°μ‚°μžλŠ” 였λ₯Έμͺ½μ—μ„œ μ™Όμͺ½μœΌλ‘œ μ‹€ν–‰λœλ‹€. 

 

- 자주 μ“°μ΄λŠ” μ—°μ‚°μž

 

  • = (λŒ€μž…)
  • + - * / % (μ‚°μˆ )
  • == != > < >= <= (비ꡐ)
  • && || (논리)
  • ++ -- (증감)
  • += -= *= /= (볡합 λŒ€μž…)

 

 

 

쑰건문과 반볡문 (μ œμ–΄λ¬Έ) 

μžλ°” κ³΅μ‹λ¬Έμ„œμ—λŠ” '쑰건문' μ΄λΌλŠ” 단어λ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€. 

 

μ΄λ ‡κ²Œ λ‹€μ„―κ°œλ₯Ό 보면 λœλ‹€. 

 

μš°μ„  μ œμ–΄ νλ¦„λ¬Έμ΄λž€? 

μžλ°” ν”„λ‘œκ·Έλž¨μ€ μ½”λ“œκ°€ μœ„μ—μ„œ μ•„λž˜λ‘œ 순차적으둜 μ‹€ν–‰λœλ‹€. κ·ΈλŸ¬λ‚˜ μ œμ–΄ 흐름문을 μ‚¬μš©ν•΄μ„œ μ‹€ν–‰ μˆœμ„œλ₯Ό λ°”κΎΈκ±°λ‚˜, νŠΉμ • 쑰건에 따라 μ‹€ν–‰ μ—¬λΆ€λ₯Ό κ²°μ •ν•  수 μžˆλ‹€. 

 

μžλ°”μ˜ μ œμ–΄ 흐름문 3κ°€μ§€λ‘œ κ΅¬λΆ„ν•˜κΈ° 

첫번째, 쑰건문 (Decision-Making Statements) : if-then, if-then-else, if-else 

λ‘λ²ˆμ§Έ, 반볡문 (Looping Statements) : for, while, do-while

μ„Έλ²ˆμ§Έ, λΆ„κΈ°λ¬Έ(Branching Statements) : break, continue, return

 

 

1) ifλ¬Έ(if-then)  

- μ€‘κ΄„ν˜ΈλŠ” μƒλž΅ κ°€λŠ₯ν•˜μ§€λ§Œ, ꢌμž₯λ˜μ§€ μ•ŠλŠ”λ‹€. 

- 예제 μƒλž΅ 

 

2) if-else(if-then-else)λ¬Έ

- 쑰건문이 true μΌλ•Œ, else μΌλ•Œ μ‹€ν–‰ν•  μ½”λ“œλ₯Ό 각각 μ§€μ •ν•  수 μžˆλ‹€. 

- μ—¬λŸ¬ 개의 쑰건을 순차적으둜 검사할 λ•Œ μ‚¬μš©λœλ‹€. 

- 예제 μƒλž΅

 

3) switch λ¬Έ 

- μ—¬λŸ¬ 개의 경우 쀑, ν•˜λ‚˜μ˜ 경우만 μ‹€ν–‰ν•΄μ•Ό ν•  λ•Œ μ‚¬μš©ν•œλ‹€. 

- byte, short, char, int, String, enum νƒ€μž… μ‚¬μš© κ°€λŠ₯ν•˜λ‹€. 

- 각 case λ’€μ—λŠ” break; λ₯Ό μ‚¬μš©ν•΄μ„œ μ‹€ν–‰ 흐름을 직접 차단해야 ν•œλ‹€. 

- if else 문은 λ²”μœ„ 쑰건이 ν•„μš”ν•  λ•Œ !! switch 문은 값이 νŠΉμ •ν•  λ•Œ μ‚¬μš©ν•œλ‹€. 

- break λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ fall - though ν˜„μƒμ΄ μΌμ–΄λ‚˜λ©°, νŠΉμ • μ‘°κ±΄μ—μ„œ 멈좘 λ’€, 이후 쑰건이 μ „λΆ€ 좜λ ₯됨. 

 

 

 

4) while λ¬Έκ³Ό do-whileλ¬Έ 

- while 문은 νŠΉμ • 쑰건이 'true' 인 λ™μ•ˆ 반볡 μ‹€ν–‰ν•˜λŠ” 쑰건문. 

- 쑰건이 false κ°€ 되면 λ°˜λ³΅μ„ μ’…λ£Œν•œλ‹€. 

- break 문이 μ—†μœΌλ©΄ λ¬΄ν•œ λ£¨ν”„μ—μ„œ λΉ μ Έλ‚˜μ˜¬ 수 μ—†μœΌλ‹ˆ μ£Όμ˜ν•  것. 

 

- do-while 문은 while λ¬Έκ³Ό λ‹€λ₯΄κ²Œ 쑰건을 λ‚˜μ€‘μ— κ²€μ‚¬ν•œλ‹€. 

- λ”°λΌμ„œ μ΅œμ†Œν•œ ν•œ λ²ˆμ€ μ‹€ν–‰ν•œλ‹€ !!! 

- while λ¬Έκ³Ό λ‹€λ₯Έμ μ€ 쑰건이 true 이든 false 이든 졜초 ν•œλ²ˆμ€ 무쑰건 μ‹€ν–‰ν•œλ‹€λŠ” 점. 

 

 

5) forλ¬Έ 

- 반볡 νšŸμˆ˜κ°€ μ •ν•΄μ§„ κ²½μš°μ— μ‚¬μš©ν•œλ‹€ !! 

- μ΄ˆκΈ°ν™” -> 쑰건 검사 -> μ‹€ν–‰ -> 증가/κ°μ†Œ μˆœμ„œλ‘œ λ™μž‘ν•œλ‹€. 

 

예제 ) 1λΆ€ν„° 10κΉŒμ§€ 좜λ ₯ν•œλ‹€. 

class ForDemo {
    public static void main(String[] args){
         for(int i = 1; i < 11; i++){
              System.out.println("Count is: " + i);
         }
    }
}

 

μ‹€ν–‰ κ²°κ³Ό 

Count is: 1  
Count is: 2  
...  
Count is: 10

 

 

ν–₯μƒλœ forλ¬Έ (Enhanced for-loop) - λ‚΄κ°€ 잘 μ•ˆμ¨μ„œ λ³Ό λ•Œλ§ˆλ‹€ 이게 뭐지 ν•˜λŠ” κ±° 

- λ°°μ—΄ λ˜λŠ” μ»¬λ ‰μ…˜ μš”μ†Œλ₯Ό 순차적으둜 탐색할 λ•Œ μ‚¬μš©ν•œλ‹€. 

- κΈ°μ‘΄ forλ¬Έ 보닀 κ°„κ²°ν•˜λ‹€ 

// ν–₯μƒλœ forλ¬Έ ꡬ쑰 
for (μžλ£Œν˜• λ³€μˆ˜ : λ°°μ—΄_λ˜λŠ”_μ»¬λ ‰μ…˜) {
    // μ‹€ν–‰ν•  μ½”λ“œ
}


// ν–₯μƒλœ forλ¬Έ 예제 
class EnhancedForDemo {
    public static void main(String[] args){
         int[] numbers = {1,2,3,4,5,6,7,8,9,10};
         for (int item : numbers) {
             System.out.println("Count is: " + item);
         }
    }
}

 

 

λ™μž‘ 방식: int ν˜•μΈ item은 numbers λ°°μ—΄ μ•ˆμ— μžˆλŠ” 1λΆ€ν„° 10κΉŒμ§€μ˜ 숫자λ₯Ό ν•˜λ‚˜μ”© κ°€μ Έμ™€μ„œ λ°”λ‘œ 좜λ ₯함. 

μœ„ ν–₯μƒλœ for문은 μ‚¬μš© 쑰건이 μžˆλ‹€ !! 

only λ°°μ—΄ ν˜Ήμ€ List, Set 같은 μ»¬λ ‰μ…˜λ§Œ κ°€λŠ₯ν•˜λ‹€ !! κ°€λŠ₯ν•˜λ©΄ ν–₯μƒλœ for 문을 μ‚¬μš©ν•΄μ„œ 가독성과 간결성을 λ†’μ΄λŠ” 것이 μ’‹λ‹€κ³  ν•œλ‹€. 

 

 

 

 

좜처: μžλ°” 곡식 λ¬Έμ„œ The Java Tutorials 

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html

 

Lesson: Language Basics (The Java™ Tutorials > Learning the Java Language)

The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Dev.java for updated tutorials taking advantag

docs.oracle.com

 

 

μžλ°” κΈ°λ³ΈλΆ€ν„° 머리에 λ˜μƒˆκΈΈκ²Έ λ‹€μ‹œ μ •λ¦¬ν•˜κ³  μžˆλ‹€. 

κ³΅μ‹λ¬Έμ„œλ₯Ό 읽어 λ‚΄λ €κ°€λŠ” λŠλ‚Œμ΄λ‹€. 

κ³΅μ‹λ¬Έμ„œμ— μ •λ¦¬λœ 단어 ν•˜λ‚˜ν•˜λ‚˜λ₯Ό μ œλŒ€λ‘œ μ΄ν•΄ν•˜λ©΄μ„œ λ„˜μ–΄κ°€μ•Όμ§€.

λ‚΄ λ§ˆμŒλŒ€λ‘œ λ„˜κ²¨μ§šμ§€ μ•Šλ„λ‘ μ‘°μ‹¬ν•˜κΈ°