[JAVA] 2. λ³€μˆ˜ (Variable)

2022. 3. 31. 22:38ㆍJAVA/μžλ°”μ˜ 정석

728x90

 

1️⃣ λ³€μˆ˜λž€? 

ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄μ—μ„œμ˜ λ³€μˆ˜λž€ 값을 μ €μž₯ν•  수 μžˆλŠ” λ©”λͺ¨λ¦¬μƒμ˜ 곡간을 μ˜λ―Έν•œλ‹€. 

ν•˜λ‚˜μ˜ λ³€μˆ˜μ—λŠ” ν•˜λ‚˜μ˜ 값을 μ €μž₯ν•  수 있기 λ•Œλ¬Έμ— μƒˆλ‘œμš΄ 값을 μ €μž₯ν•˜λ©΄ 기쑴의 값은 사라진닀. 

 

int(λ³€μˆ˜νƒ€μž…) age(λ³€μˆ˜λͺ…); 

 

λ³€μˆ˜νƒ€μž…μ€ λ³€μˆ˜μ— μ €μž₯될 값이 μ–΄λ–€ νƒ€μž…μΈμ§€λ₯Ό μ§€μ •ν•˜λŠ” 것이닀. 

λ³€μˆ˜μ΄λ¦„μ€ λ³€μˆ˜μ— 뢙인 μ΄λ¦„μœΌλ‘œ λ©”λͺ¨λ¦¬ 곡간에 이름을 λΆ™μ—¬μ£ΌλŠ” 것이닀. 

 

λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ©΄ λ©”λͺ¨λ¦¬μ˜ 빈 곡간에 λ³€μˆ˜νƒ€μž…μ— μ•Œλ§žμ€ 크기의 μ €μž₯곡간이 ν™•λ³΄λ˜κ³ , 이 μ €μž₯곡간은 λ³€μˆ˜μ΄λ¦„μ„ 톡해 μ‚¬μš©ν•  수 있게 ν•œλ‹€. 

 

 

2️⃣ λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™” 

λ³€μˆ˜λ₯Ό μ„ μ–Έν•œ μ΄ν›„λΆ€ν„°λŠ” λ³€μˆ˜λ₯Ό μ„ μ–Έν•  수 μžˆμœΌλ‚˜, κ·Έ 전에 λ°˜λ“œμ‹œ λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™”ν•΄μ•Όν•œλ‹€. 

λ©”λͺ¨λ¦¬λŠ” μ—¬λŸ¬ ν”„λ‘œκ·Έλž¨μ΄ κ³΅μœ ν•˜λŠ” μžμ›μ΄κΈ° λ•Œλ¬Έμ— 전에 λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ— μ˜ν•΄ μ €μž₯된 μ•Œμˆ˜μ—†λŠ” 값이 남아 μžˆμ„ 수 있기 λ•Œλ¬Έμ΄λ‹€. 

 

int age = 100; 

 

λ³€μˆ˜μ˜ μ’…λ₯˜μ— 따라 λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™”λ₯Ό μƒλž΅ν•˜λŠ” κ²½μš°λ„ μžˆλŠ”λ°, λ³€μˆ˜λŠ” μ‚¬μš©λ˜κΈ° 전에 μ μ ˆν•œ κ°’μœΌλ‘œ μ΄ˆκΈ°ν™”ν•˜λŠ” 것이 μ’‹λ‹€. 

 

 

3️⃣ λ³€μˆ˜μ˜ λͺ…λͺ…κ·œμΉ™ 

λ³€μˆ˜μ˜ μ΄λ¦„μ²˜λŸΌ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ‚¬μš©ν•˜λŠ” λͺ¨λ“  이름을 'μ‹λ³„μž'라고 ν•˜κ³ , μ‹λ³„μžλŠ” 같은 μ˜μ—­ λ‚΄μ—μ„œ μ„œλ‘œ ꡬ뢄할 수 μžˆμ–΄μ•Ό ν•œλ‹€. 

 

- λŒ€μ†Œλ¬Έμžκ°€ κ΅¬λΆ„λ˜κ³ , 길이에 μ œν•œμ΄ μ—†λ‹€.

- μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ μ•ˆλœλ‹€. (boolean, byte, catch, char, default, false, final, int, long, short, static..)

- 숫자둜 μ‹œμž‘ν•΄μ„œλŠ” μ•ˆλœλ‹€. 

- νŠΉμˆ˜λ¬ΈμžλŠ” '_'와 '$'만 ν—ˆμš©ν•œλ‹€.

 

- 클래슀 μ΄λ¦„μ˜ μ²«κΈ€μžλŠ” λŒ€λ¬Έμžλ‘œ ν•œλ‹€. 

- μ—¬λŸ¬ λ‹¨μ–΄λ‘œ 이루어진 이름은 λ‹¨μ–΄μ˜ μ²«κΈ€μžλ₯Ό λŒ€λ¬Έμžλ‘œ ν•œλ‹€. 

- μƒμˆ˜μ˜ 이름은 λͺ¨λ‘ λŒ€λ¬Έμžλ‘œ ν•œλ‹€. μ—¬λŸ¬ λ‹¨μ–΄λ‘œ 이루어진 경우 '_'둜 κ΅¬λΆ„ν•œλ‹€. 

 

 

4️⃣ λ³€μˆ˜μ˜ νƒ€μž… 

μš°λ¦¬κ°€ 주둜 μ‚¬μš©ν•˜λŠ” κ°’μ˜ μ’…λ₯˜λŠ” 크게 '문자'와 '숫자'둜 λ‚˜λˆŒ 수 있으며 μˆ«μžλŠ” λ‹€μ‹œ 'μ •μˆ˜'와 'μ‹€μˆ˜'둜 λ‚˜λˆŒ 수 μžˆλ‹€. 

κ°’μ˜ μ’…λ₯˜μ— 따라 값이 μ €μž₯될 κ³΅κ°„μ˜ 크기와 μ €μž₯ν˜•μ‹μ„ μ •μ˜ν•œ 것이 μžλ£Œν˜•μ΄λ‹€. 

μžλ£Œν˜•μ—λŠ” λ¬Έμžν˜•char, μ •μˆ˜ν˜•byte, short, int, long, μ‹€μˆ˜ν˜• double, float 등이 있으며 λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•ŒλŠ” μ €μž₯ν•˜λ €λŠ” κ°’μ˜ νŠΉμ„±μ„ κ³ λ €ν•˜μ—¬ κ°€μž₯ μ•Œλ§žμ€ μžλ£Œν˜•μ„ λ³€μˆ˜μ˜ νƒ€μž…μœΌλ‘œ μ„ νƒν•˜λ©΄ λœλ‹€. 

 

κΈ°λ³Έν˜•κ³Ό μ°Έμ‘°ν˜• 

κΈ°λ³Έν˜• λ³€μˆ˜λŠ” μ‹€μ œ 값을 μ €μž₯ν•˜λŠ” 반면, μ°Έμ‘°ν˜• λ³€μˆ˜λŠ” μ–΄λ–€ 값이 μ €μž₯λ˜μ–΄ μžˆλŠ” μ£Όμ†Œλ₯Ό κ°’μœΌλ‘œ κ°–λŠ”λ‹€. 

 

κΈ°λ³Έν˜•: λ…Όλ¦¬ν˜•boolean, λ¬Έμžν˜•char, μ •μˆ˜ν˜•byte,short,int,long, μ‹€μˆ˜ν˜•float, double

μ°Έμ‘°ν˜•: 객체의 μ£Όμ†Œλ₯Ό μ €μž₯

 

Date today = new Date();

객체λ₯Ό μƒμ„±ν•˜λŠ” μ—°μ‚°μž new의 κ²°κ³ΌλŠ” μƒμ„±λœ 객체의 μ£Όμ†Œμ΄λ‹€. 

 

 

5️⃣ κΈ°λ³Έν˜•

κΈ°λ³Έν˜•μ€ 8개의 μžλ£Œν˜•(νƒ€μž…)이 μžˆλŠ”λ° λ…Όλ¦¬ν˜•, λ¬Έμžν˜•, μ •μˆ˜ν˜•, μ‹€μˆ˜ν˜•μœΌλ‘œ ꡬ뢄할 수 μžˆλ‹€.

 

λ…Όλ¦¬ν˜•: boolean

λ¬Έμžν˜•: char

μ •μˆ˜ν˜•: byte, short, int, long

μ‹€μˆ˜ν˜•: float, double

 

λ¬Έμžν˜• charλŠ” 문자λ₯Ό λ‚΄λΆ€μ μœΌλ‘œ μ •μˆ˜(μœ λ‹ˆμ½”λ“œ)둜 μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— μ •μˆ˜ν˜•κ³Ό λ³„λ°˜ λ‹€λ₯΄μ§€ μ•Šκ³ , μ •μˆ˜ν˜• λ˜λŠ” μ‹€μˆ˜ν˜•κ³Ό 연산도 κ°€λŠ₯ν•˜λ‹€. 

근데 booleanμœΌμ€ λ‹€λ₯Έ κΈ°λ³Έν˜•κ³Όμ˜ 연산이 λΆˆκ°€λŠ₯ν•˜λ‹€. 

 

μ •μˆ˜λŠ” 각 νƒ€μž…λ§ˆλ‹€ μ €μž₯ν•  수 μžˆλŠ” κ°’μ˜ λ²”μœ„κ°€ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— μ €μž₯ν•  κ°’μ˜ λ²”μœ„μ— λ§žλŠ” νƒ€μž…μ„ μ„ νƒν•˜λ©΄ λ˜μ§€λ§Œ, 

일반적으둜 intλ₯Ό 많이 μ‚¬μš©ν•œλ‹€. μ™œλƒν•˜λ©΄ intλŠ” CPUκ°€ κ°€μž₯ 효율적으둜 μ²˜λ¦¬ν•  수 μžˆλŠ” νƒ€μž…μ΄κΈ° λ•Œλ¬Έμ΄λ‹€. 

효율적인 싀행보닀 λ©”λͺ¨λ¦¬λ₯Ό μ ˆμ•½ν•˜λ €λ©΄ byteλ‚˜ shortλ₯Ό μ„ νƒν•˜λ©΄ λœλ‹€. 

 

boolean(1byte), char(2byte), byte(1byte), short(2byte), int(4byte), long(8byte), float(4byte), double(8byte)

 

 

6️⃣ μƒμˆ˜μ™€ λ¦¬ν„°λŸ΄ 

μƒμˆ˜λŠ” λ³€μˆ˜μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 값을 μ €μž₯ν•  수 μžˆλŠ” κ³΅κ°„μ΄μ§€λ§Œ λ³€μˆ˜μ™€ 달리 ν•œλ²ˆ 값을 μ €μž₯ν•˜λ©΄ λ‹€λ₯Έ κ°’μœΌλ‘œ λ³€κ²½ν•  수 μ—†λ‹€. 

μƒμˆ˜λŠ” λ³€μˆ˜μ˜ νƒ€μž…μ•žμ— final을 λΆ™μ—¬μ£Όλ©΄ λœλ‹€. 

 

μƒμˆ˜λŠ” μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”ν•΄μ•Όν•˜κ³ , κ·Έ ν›„ λΆ€ν„°λŠ” μƒμˆ˜μ˜ 값을 λ³€κ²½ν•˜λŠ” 것이 ν—ˆμš©λ˜μ§€ μ•ŠλŠ”λ‹€. 

그리고 μƒμˆ˜μ˜ 이름은 λͺ¨λ‘ λŒ€λ¬Έμžλ‘œ ν•˜λŠ” 것이 암묡적인 관둀이닀!

 

λ³€μˆ˜ vs μƒμˆ˜ vs λ¦¬ν„°λŸ΄ 

λ³€μˆ˜: ν•˜λ‚˜μ˜ 값을 μ €μž₯ν•˜κΈ° μœ„ν•œ 곡간

μƒμˆ˜: 값을 ν•œλ²ˆλ§Œ μ €μž₯ν•  수 μžˆλŠ” 곡간 

λ¦¬ν„°λŸ΄: κ·Έ 자체둜 값을 μ˜λ―Έν•¨ 

 

int age(λ³€μˆ˜) = 100(λ¦¬ν„°λŸ΄); 

int MAX_AGE(μƒμˆ˜) = 150(λ¦¬ν„°λŸ΄);

 

μƒμˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” λ¦¬ν„°λŸ΄μ— μ˜λ―ΈμžˆλŠ” 이름을 λΆ™μ—¬μ„œ μ½”λ“œμ˜ 이해와 μˆ˜μ •μ„ μ‰½κ²Œ 해쀄 수 있기 λ•Œλ¬Έμ΄λ‹€. 

 

 

7️⃣ λ¦¬ν„°λŸ΄μ˜ νƒ€μž…κ³Ό 접미사 

μ •μˆ˜ν˜•κ³Ό μ‹€μˆ˜ν˜•μ—λŠ” μ—¬λŸ¬ νƒ€μž…μ΄ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— λ¦¬ν„°λŸ΄μ— 접미사λ₯Ό λΆ™μ—¬μ„œ νƒ€μž…μ„ ꡬ뢄할 수 μžˆλ‹€. 

μ •μˆ˜ν˜•μ˜ 경우 long νƒ€μž…μ˜ λ¦¬ν„°λŸ΄μ— 접미사 'l' λ˜λŠ” 'L'λ₯Ό 뢙이고, 접미사가 μ—†μœΌλ©΄ intνƒ€μž…μ˜ λ¦¬ν„°λŸ΄μ΄λ‹€. 

byte와 shortνƒ€μž…μ˜ λ¦¬ν„°λŸ΄μ€ λ³„λ„λ‘œ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. byte와 short νƒ€μž…μ˜ λ³€μˆ˜μ— 값을 μ €μž₯ν• λ•ŒλŠ” intνƒ€μž…μ˜ λ¦¬ν„°λŸ΄μ„ μ‚¬μš©ν•œλ‹€. 

 

μ‹€μˆ˜ν˜•μ—λŠ” float νƒ€μž…μ˜ λ¦¬ν„°λŸ΄μ— 접미사 'f' λ˜λŠ” 'F'λ₯Ό 뢙이고, double νƒ€μž…μ˜ λ¦¬ν„°λŸ΄μ—λŠ” 'd' λ˜λŠ” 'D'λ₯Ό 뢙인닀.

μ‹€μˆ˜ν˜•μ—μ„œλŠ” κΈ°λ³Έ μžλ£Œν˜•μ΄ double이기 λ•Œλ¬Έμ— 접미사 dλŠ” μƒλž΅ κ°€λŠ₯ν•˜λ‹€. 

 

λ¦¬ν„°λŸ΄ νƒ€μž…μ€ μ €μž₯될 λ³€μˆ˜μ˜ νƒ€μž…κ³Ό μΌμΉ˜ν•˜λŠ”κ²ƒμ΄ μΌλ°˜μ μ΄μ§€λ§Œ νƒ€μž…μ΄ 달라도 μ €μž₯λ²”μœ„κ°€ 넓은 νƒ€μž…μ— 쒁은 νƒ€μž…μ˜ 값을 μ €μž₯ν•˜λŠ” 것은 ν—ˆμš©λœλ‹€. 

그런데 λ¦¬ν„°λŸ΄μ˜ 값이 λ³€μˆ˜μ˜ νƒ€μž…μ˜ λ²”μœ„λ₯Ό λ„˜μ–΄μ„œκ±°λ‚˜, λ¦¬ν„°λŸ΄μ˜ νƒ€μž…μ΄ λ³€μˆ˜μ˜ νƒ€μž…λ³΄λ‹€ μ €μž₯λ²”μœ„κ°€ λ„“μœΌλ©΄ 컴파일 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. 

 

 

8️⃣ 문자 λ¦¬ν„°λŸ΄κ³Ό λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄ 

'A'와 같이 μž‘μ€ λ”°μ˜΄ν‘œλ‘œ λ¬Έμžν•˜λ‚˜λ₯Ό κΉœμ‚° 것을 '문자 λ¦¬ν„°λŸ΄'이라고 ν•˜κ³ , 두 문자 이상은 큰 λ”°μ˜΄ν‘œλ‘œ κ°μ‹Έμ•Όν•˜λ©° 'λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄'이라고 ν•œλ‹€. 

 

char ch = 'a';

String str = "string";

 

char νƒ€μž…μ˜ λ³€μˆ˜λŠ” 단 ν•˜λ‚˜μ˜ 문자만 μ €μž₯ν•  수 μžˆμœΌλ―€λ‘œ μ—¬λŸ¬ 문자λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄μ„œλŠ” String νƒ€μž…μ„ μ‚¬μš©ν•΄μ•Όν•œλ‹€. 

그리고 λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄μ€ ""μ•ˆμ— 아무것도 넣지 μ•ŠλŠ” 것을 ν—ˆμš©ν•˜μ§€λ§Œ char 문자 λ¦¬ν„°λŸ΄μ€ '' μ•ˆμ— λ°˜λ“œμ‹œ ν•˜λ‚˜μ˜ λ¬Έμžκ°€ μžˆμ–΄μ•Ό ν•œλ‹€

 

 

λ§μ…ˆ μ—°μ‚°μžλ₯Ό μ΄μš©ν•˜μ—¬ λ¬Έμžμ—΄μ„ κ²°ν•©ν•  μˆ˜λ„ μžˆλ‹€. 

λ§μ…ˆ μ—°μ‚°μž+λŠ” ν”Όμ—°μ‚°μžκ°€ λͺ¨λ‘ 숫자일 λ•ŒλŠ” 두 수λ₯Ό λ”ν•˜μ§€λ§Œ, ν”Όμ—°μ‚°μž 쀑 μ–΄λŠ ν•œμͺ½μ΄ String이면 λ‚˜λ¨Έμ§€ ν•œμͺ½μ„ λ¨Όμ € String으둜 λ³€ν™˜ν•œ λ‹€μŒ 두 String을 κ²°ν•©ν•œλ‹€. 

 

λ¬Έμžμ—΄ + any type => λ¬Έμžμ—΄ + λ¬Έμžμ—΄ = > λ¬Έμžμ—΄ 

any type + λ¬Έμžμ—΄ => λ¬Έμžμ—΄ + λ¬Έμžμ—΄ => λ¬Έμžμ—΄ 

 

κΈ°λ³Έν˜• νƒ€μž…μ˜ 값을 λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•  λ•ŒλŠ” 아무 λ‚΄μš©λ„ μ—†λŠ” 빈 λ¬Έμžμ—΄""λ₯Ό 더해주면 λœλ‹€!!

 

 

9️⃣ ν˜•μ‹ν™”λœ 좜λ ₯ printf 

같은 값을 λ‹€λ₯Έ ν˜•μ‹μœΌλ‘œ 좜λ ₯ν•˜κ³  싢을 λ•ŒλŠ” printfλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. 

 

System.out.printf("age:%d", age);

 

%b -> boolean ν˜•μ‹μœΌλ‘œ 좜λ ₯ 

%d -> 10진 μ •μˆ˜μ˜ ν˜•μ‹μœΌλ‘œ 좜λ ₯ 

%o -> 8진 μ •μˆ˜μ˜ ν˜•μ‹μœΌλ‘œ 좜λ ₯ 

%x, %X -> 16진 μ •μˆ˜μ˜ ν˜•μ‹μœΌλ‘œ 좜λ ₯ 

%f -> 뢀동 μ†Œμˆ˜μ μ˜ ν˜•μ‹μœΌλ‘œ 좜λ ₯ 

%e, %E -> μ§€μˆ˜ν‘œν˜„μ‹μ˜ ν˜•μ‹μœΌλ‘œ 좜λ ₯ 

%c -> 문자둜 좜λ ₯ 

%s -> λ¬Έμžμ—΄λ‘œ 좜λ ₯ 

 

 

 

 

 

728x90

'JAVA > μžλ°”μ˜ 정석' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[JAVA] 7. 반볡문  (0) 2022.04.06
[JAVA] 6. 쑰건문  (0) 2022.04.05
[JAVA] 4. μ—°μ‚°μžoperator  (0) 2022.04.04
[JAVA] 3. 진법  (0) 2022.04.01
[JAVA] 1. μžλ°”  (0) 2022.03.30