λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Java

[Java] κ°œλ… 작기 (곡뢀 기둝) μž‘μ„±μ€‘

by μ½”λ”©ν•˜λŠ” λΆ•μ–΄ 2021. 2. 20.
λ°˜μ‘ν˜•

β–Ά ν΄λž˜μŠ€μ˜ 3가지 ꡬ성 μš”μ†Œ

-μΈμŠ€ν„΄νŠΈ λ³€μˆ˜ : 데이터가 μ‹€μ œλ‘œ μ €μž₯λ˜λŠ” κ³³

-λ©”μ„œλ“œ : μΈμŠ€ν„΄νŠΈ λ³€μˆ˜μ— μ €μž₯된 속성값을 μˆ˜μ •ν•˜κ±°λ‚˜ μ‘°νšŒν•˜λŠ” μ—­ν• 

-μƒμ„±μž : μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™”ν•˜λŠ” μ—­ν• . λ³€μˆ˜μ— 데이터λ₯Ό 맨 처음 μ €μž₯ν•  λ•Œ μ‚¬μš©

​

​

 

β–Ά μƒμ„±μž

객체 생성 μ‹œ μžλ™μœΌλ‘œ ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œ

일반 λ©”μ„œλ“œμ™€ 달리 λ¦¬ν„΄ν˜•μ΄ μ—†λ‹€

μ—¬λŸ¬κ°œμ˜ μƒμ„±μžλ₯Ό λ§Œλ“€ 수 μžˆλ‹€

μƒμ„±μžκ°€ 없을 경우 κΈ°λ³Έ μƒμ„±μžλ‘œ 생성이 κ°€λŠ₯ν•˜λ‹€

μƒμ„±μžμ—μ„œλŠ” 주둜 λ©€λ²„μ˜ μ΄ˆκΈ°ν™”λ₯Ό λ‹΄λ‹Ήν•œλ‹€

같은 μƒμ„±μžλΌλ¦¬ ν˜ΈμΆœμ€ this( )둜 ν•œλ‹€

​

​

 

β–Ά μ ‘κ·Ό μ§€μ •μž

private : ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ 가진 멀버 λ©”μ„œλ“œλ§Œ μ ‘κ·Ό κ°€λŠ₯

protected : νŒ¨ν‚€μ§€κ°€ λ‹€λ₯Ό 경우 상속받은 클래슀만 μ ‘κ·Ό κ°€λŠ₯

default : (아무것도 μ•ˆ μ“΄ 경우) νŒ¨ν‚€μ§€κ°€ λ‹€λ₯Ό 경우 μ ‘κ·Ό μ•ˆλ¨

public : νŒ¨ν‚€μ§€ 상관없이 μ–΄λ””λ“  μ ‘κ·Ό κ°€λŠ₯

단, 같은 νŒ¨ν‚€μ§€μΌ κ²½μš°μ—λŠ” private λΉΌκ³  λͺ¨λ‘ μ ‘κ·Ό κ°€λŠ₯

​

​

 

β–Ά λ³€μˆ˜

λ³€μˆ˜λŠ” 말 κ·ΈλŒ€λ‘œ 'λ³€ν•˜λŠ” 수'λ₯Ό λ§ν•œλ‹€.

λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ–΄λ–€ ν˜•νƒœμ˜ 자료λ₯Ό μ €μž₯ν•  것인지 μ •ν•΄μ•Ό ν•˜λŠ”λ° 이 ν˜•νƒœλ₯Ό 'λ³€μˆ˜μ˜ μžλ£Œν˜•'이라고 함.

λ³€μˆ˜μ˜ μžλ£Œν˜•μ„ μ„ νƒν•˜κ³  이름을 μ •ν•˜λŠ” 것을 'λ³€μˆ˜λ₯Ό μ„ μ–Έν•œλ‹€'라고 함.

λ³€μˆ˜μ˜ μ’…λ₯˜λ₯Ό κ²°μ •μ§“λŠ”κ±΄ 'λ³€μˆ˜κ°€ μ„ μ–Έλœ μœ„μΉ˜'

μ΄λ ‡κ²Œ λ³€μˆ˜ μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”λ₯Ό 각각 λ”°λ‘œ 해도 λ˜μ§€λ§Œ

λ³€μˆ˜ μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”λ₯Ό λ™μ‹œμ— ν•  μˆ˜λ„ μžˆλ‹€. (사싀 이게 더 효율적)

​

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

μ„ μ–Έμœ„μΉ˜

μƒμ„±μ‹œκΈ°

클래슀 λ³€μˆ˜

클래슀 μ˜μ—­

ν΄λž˜μŠ€κ°€ λ©”λͺ¨λ¦¬μ— 올라갈 λ•Œ

μΈμŠ€ν„΄μŠ€ λ³€μˆ˜

μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜μ—ˆμ„ λ•Œ

지역 λ³€μˆ˜

클래슀 μ˜μ—­ μ΄μ™Έμ˜ μ˜μ—­

(λ©”μ„œλ“œ, μƒμ„±μž, μ΄ˆκΈ°ν™” λΈ”λŸ­ λ‚΄)

λ³€μˆ˜ 선언문이 μˆ˜ν–‰λ˜μ—ˆμ„ λ•Œ

-μΈμŠ€ν„΄νŠΈ λ³€μˆ˜

클래슀 μ˜μ—­μ— μ„ μ–Έλ˜λ©°, 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ λ§Œλ“€μ–΄μ§„λ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μΈμŠ€ν„΄μŠ€μ˜ λ³€μˆ˜μ˜ 값을 μ½μ–΄μ˜€κ±°λ‚˜ μ €μž₯ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ¨Όμ € μΈμŠ€ν„΄μŠ€λ₯Ό 생성해야 ν•œλ‹€.

μΈμŠ€ν„΄μŠ€λŠ” 독립적인 μ €μž₯곡간을 κ°€μ§€λ―€λ‘œ μ„œλ‘œ λ‹€λ₯Έ 값을 κ°€μ§ˆ 수 μžˆλ‹€. μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ κ³ μœ ν•œ μƒνƒœλ₯Ό μœ μ§€ν•΄μ•Ό ν•˜λŠ” μ†μ„±μ˜ 경우, μΈμŠ€ν„΄νŠΈ λ³€μˆ˜λ‘œ μ„ μ–Έν•œλ‹€.

​

-클래슀 λ³€μˆ˜

클래슀 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λŠ” 방법은 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ μ•žμ— static을 λ§λΆ™μ΄κΈ°λ§Œ ν•˜λ©΄ λœλ‹€. μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ 독립적인 μ €μž₯곡간을 κ°–λŠ” μΈμŠ€ν„΄νŠΈ λ³€μˆ˜μ™€λŠ” 달리, 클래슀 λ³€μˆ˜λŠ” λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ κ³΅ν†΅λœ μ €μž₯곡간(λ³€μˆ˜)을 κ³΅μœ ν•˜κ²Œ λœλ‹€.

κ·Έλž˜μ„œ 클래슀 λ³€μˆ˜λ₯Ό 곡유 λ³€μˆ˜λΌκ³ λ„ ν•œλ‹€.

​

-지역 λ³€μˆ˜

ν”„λ‘œκ·Έλž¨μ˜ { } λ‚΄μ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆλŠ” λ³€μˆ˜

λ©”μ„œλ“œ 내에 μ„ μ–Έλ˜μ–΄ λ©”μ„œλ“œ λ‚΄μ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯ν•˜λ©°, λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ©΄ μ†Œλ©Έλ˜μ–΄ μ‚¬μš©ν•  수 μ—†κ²Œ λœλ‹€.

forλ¬Έ λ˜λŠ” whileλ¬Έ λΈ”λŸ­ 내에 μ„ μ–Έλœ 지역 λ³€μˆ˜λŠ” λΈ”λŸ­{ } 을 λ²—μ–΄λ‚˜λ©΄ μ†Œλ©Έλ˜μ–΄ μ‚¬μš©ν•  수 μ—†κ²Œ λœλ‹€.

​

-μ°Έμ‘° λ³€μˆ˜

μ°Έμ‘° λ³€μˆ˜λŠ” νž™ λ©”λͺ¨λ¦¬μ— μƒμ„±λœ μΈμŠ€ν„΄μŠ€λ₯Ό 가리킨닀.

studentLee.studentName

→ studentLee = μ°Έμ‘° λ³€μˆ˜

​

-멀버 λ³€μˆ˜

클래슀 전체에 영ν–₯을 μ£ΌλŠ” λ³€μˆ˜. 클래슀 내뢀에 μ„ μ–Έν•œλ‹€. 클래슀의 μ–΄λŠ λ©”μ„œλ“œμ—μ„œλ‚˜ μ‚¬μš© κ°€λŠ₯.

​

λ°”κΏ€ 수 μžˆλŠ” λ³€μˆ˜ : μΈμŠ€ν„΄μŠ€ λ³€μˆ˜

λ°”κΏ€ 수 μ—†λŠ” λ³€μˆ˜ : 클래슀 λ³€μˆ˜

​

​

 

β–Ά κΈ°λ³Έ μžλ£Œν˜•μ˜ μ’…λ₯˜

​

μ •μˆ˜ν˜•

λ¬Έμžν˜•

μ‹€μˆ˜ν˜•

λ…Όλ¦¬ν˜•

1λ°”μ΄νŠΈ

byte

-

-

boolean

2λ°”μ΄νŠΈ

short

char

-

-

4λ°”μ΄νŠΈ

int

-

float

-

8λ°”μ΄νŠΈ

long

-

double

-

-μ •μˆ˜

μ–‘μˆ˜, 음수, 0을 λ‚˜νƒ€λ‚΄λŠ” 데 μ‚¬μš©ν•˜λŠ” μžλ£Œν˜•. 1λ°”μ΄νŠΈ.

byteν˜•, shortν˜•, intν˜•, longν˜• 4가지 μžλ£Œν˜•μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.

​

byteν˜•

λ™μ˜μƒμ΄λ‚˜ μŒμ•… νŒŒμΌμ„ μž¬μƒν•  λ•Œ λ˜λŠ” λ„€νŠΈμ›Œν¬λ‘œ 데이터λ₯Ό 전솑할 λ•Œ μ‚¬μš©ν•œλ‹€.

byteν˜•μœΌλ‘œ ν‘œν˜„ν•  수 μžˆλŠ” 수의 λ²”μœ„λŠ” -128~127이닀

shortν˜•

2λ°”μ΄νŠΈλ‘œ μ •μˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” μžλ£Œν˜•. 유효 λ²”μœ„λŠ” -32,768~32767이닀

intν˜•

μ •μˆ˜λ₯Ό ν‘œν˜„ν•  λ•Œ κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” μžλ£Œν˜•. μ»΄ν“¨ν„°μ—μ„œ μ •μˆ˜λ‘œ 연산을 ν•  λ•Œ 4λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ μ²˜λ¦¬ν•˜λŠ” 것이 κ°€μž₯ 효율적이기 λ•Œλ¬Έμ΄λ‹€.

유효 λ²”μœ„λŠ” -2,147483,648~2,147,483,647이닀

longν˜•

μ •μˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” κ°€μž₯ 큰 λ‹¨μœ„. 뒀에 μ‹λ³„μžμΈ L을 λΆ™μ—¬μ€˜μ•Όν•œλ‹€.

​

 

​

β–Ά λ¬Έμž μžλ£Œν˜•

κ°€μž₯ 기본이 λ˜λŠ” 문자 인코딩은 μ•„μŠ€ν‚€ μ½”λ“œ

각 μ–Έμ–΄μ˜ ν‘œμ€€ 인코딩을 μ •μ˜ν•΄ 놓은 것이 μœ λ‹ˆμ½”λ“œ

문자λ₯Ό λ³€μˆ˜μ— λŒ€μž…ν•˜λ©΄ 문자 κ·ΈλŒ€λ‘œ μ €μž₯λ˜λŠ” 것이 μ•„λ‹ˆλΌ κ·Έ λ¬Έμžμ— ν•΄λ‹Ήν•˜λŠ” μ •μˆ˜ κ°’(μ•„μŠ€ν‚€

μ½”λ“œ κ°’)이 μ €μž₯됨.

<κ²°κ³Όκ°’>

-charμ—” ν•œκΈ€μžλ°–μ— μ•ˆλ“€μ–΄κ°€κ³ 

λ¬Έμžμ—΄μ„ λ‹€λ£° λ•ŒλŠ” String이 νŽΈν•¨ (char둜 λ‘κΈ€μž μž…λ ₯ν•˜λ©΄ 였λ₯˜ 뜸)

char은 음수 값을 ν‘œν˜„ λͺ»ν•¨. 좜λ ₯ν•˜λ©΄ ? 둜 뜸

​

​

 

β–Ά μ‹€μˆ˜ μžλ£Œν˜•

floatν˜•κ³Ό doubleν˜• : float < double

μžλ°”μ—μ„œ μ‹€μˆ˜λŠ” doubleν˜•μ„ 기본으둜 μ‚¬μš©ν•œλ‹€.

​

​

 

β–Ά μƒμˆ˜

λ³€ν•˜μ§€ μ•ŠλŠ” κ°’. final μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©.

μƒμˆ˜ 이름은 λŒ€λ¬Έμžλ₯Ό 주둜 μ‚¬μš©ν•œλ‹€.

ν•œ 번 μ„ μ–Έν•œ μƒμˆ˜λŠ” λ³€ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ„ μ–Έκ³Ό λ™μ‹œμ— 값을 μ§€μ •ν•˜λŠ” 것이 μ’‹λ‹€.

ν”„λ‘œκ·Έλž¨ λ‚΄λΆ€μ—μ„œ 반볡적으둜 μ‚¬μš©ν•˜κ³  λ³€ν•˜μ§€ μ•Šμ•„μ•Ό ν•˜λŠ” 값을 μƒμˆ˜λ‘œ μ„ μ–Έν•˜μ—¬ μ‚¬μš©ν•˜λ©΄ μ’‹λ‹€.

​

​

 

β–Ά λ¦¬ν„°λŸ΄

ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•˜λŠ” λͺ¨λ“  숫자, 문자, 논리값을 μΌμ»«λŠ” 말.

λ¦¬ν„°λŸ΄μ€ λ³€μˆ˜λ‚˜ μƒμˆ˜ κ°’μœΌλ‘œ λŒ€μž…ν•  수 μžˆλ‹€.

λ¦¬ν„°λŸ΄μ€ ν”„λ‘œκ·Έλž¨μ΄ μ‹œμž‘ν•  λ•Œ μ‹œμŠ€ν…œμ— 같이 λ‘œλ”©λ˜μ–΄ νŠΉμ • λ©”λͺ¨λ¦¬ 곡간인 μƒμˆ˜ 풀에 놓인닀.

​

 

​

β–Ά ν˜• λ³€ν™˜

-λ¬΅μ‹œμ  ν˜•λ³€ν™˜

λ°”μ΄νŠΈ 크기가 μž‘μ€ μžλ£Œν˜•μ—μ„œ 큰 μžλ£Œν˜•μœΌλ‘œ λŒ€μž…ν•˜λŠ” 경우

-λͺ…μ‹œμ  ν˜•λ³€ν™˜

λ°”μ΄νŠΈν¬κΈ°κ°€ 큰 μžλ£Œν˜•μ—μ„œ μž‘μ€ μžλ£Œν˜•μœΌλ‘œ λŒ€μž…ν•˜λŠ” 경우

-μ—°μ‚° 쀑 ν˜• λ³€ν™˜

<κ²°κ³Όκ°’>

​

 

​

β–Ά μ¦κ°€·κ°μ†Œ μ—°μ‚°μž

단항 μ—°μ‚°μž.

num++

μ—°μ‚° ν›„ 1 더함

++num

1 λ”ν•œ ν›„ μ—°μ‚°

num--

μ—°μ‚° ν›„ 1 뺌

--num

1 λΊ€ ν›„ μ—°μ‚°

​

​

 

β–Ά λ…Όλ¦¬ μ—°μ‚°μž

&&

(논리 κ³±)

두 항이 λͺ¨λ‘ 참인 κ²½μš°μ—λ§Œ κ²°κ³Ό 값이 참이닀. 그렇지 μ•Šμ€ κ²½μš°λŠ” 거짓.

boolean val = (5>3) && (5>2);

||

(논리 ν•©)

두 ν•­ 쀑 ν•˜λ‚˜μ˜ ν•­λ§Œ 참이면 κ²°κ³Ό 값은 μ°Έ. 두 항이 λͺ¨λ‘ 거짓이면 κ²°κ³Ό 값은 거짓.

boolean val = (5>3) || (5>2);

!

(λΆ€μ •)

단항 μ—°μ‚°μž. 참인 κ²½μš°λŠ” κ±°μ§“μœΌλ‘œ λ°”κΎΈκ³ , 거짓인 κ²½μš°λŠ” 참으둜 λ°”κΎΌλ‹€.

boolean val = !(5>3);

​

 

​

β–Ά λ…Όλ¦¬ μ—°μ‚°μ—μ„œ λͺ¨λ“  항이 μ‹€ν–‰λ˜μ§€ μ•ŠλŠ” 경우 - 단락 회둜 평가

<κ²°κ³Όκ°’>

 

​

​

β–Ά λ³΅ν•© λŒ€μž… μ—°μ‚°μž

+=

두 ν•­μ˜ 값을 λ”ν•΄μ„œ μ™Όμͺ½ 항에 λŒ€μž…ν•œλ‹€.

-=

μ™Όμͺ½ ν•­μ—μ„œ 였λ₯Έμͺ½ 항을 λΉΌμ„œ κ·Έ 값을 μ™Όμͺ½ 항에 λŒ€μž…ν•œλ‹€.

*=

두 ν•­μ˜ 값을 κ³±ν•΄μ„œ μ™Όμͺ½ 항에 λŒ€μž…ν•œλ‹€.

/=

μ™Όμͺ½ ν•­μ—μ„œ 였λ₯Έμͺ½ ν•­μœΌλ‘œ λ‚˜λˆ„μ–΄

κ·Έ λͺ«μ„ μ™Όμͺ½ 항에 λŒ€μž…ν•œλ‹€.

%=

μ™Όμͺ½ ν•­μ—μ„œ 였λ₯Έμͺ½ ν•­μœΌλ‘œ λ‚˜λˆ„μ–΄

κ·Έ λ‚˜λ¨Έμ§€λ₯Ό μ™Όμͺ½ 항에 λŒ€μž…ν•œλ‹€.

<<=

λΉ„νŠΈλ₯Ό μ™Όμͺ½μœΌλ‘œ μ΄λ™ν•˜κ³  κ·Έ 값을 μ™Όμͺ½ 항에 λŒ€μž…ν•œλ‹€.

>>=

λΉ„νŠΈλ₯Ό 였λ₯Έμͺ½μœΌλ‘œ μ΄λ™ν•˜κ³  κ·Έ 값을 μ™Όμͺ½ 항에 λŒ€μž…ν•œλ‹€(μ™Όμͺ½μ— μ±„μ›Œμ§€λŠ” λΉ„νŠΈ 값은 λΆ€ν˜Έ λΉ„νŠΈμ™€ λ™μΌν•©λ‹ˆλ‹€.)

>>>=

λΉ„νŠΈλ₯Ό 였λ₯Έμͺ½μœΌλ‘œ μ΄λ™ν•˜κ³  κ·Έ 값을 μ™Όμͺ½ 항에 λŒ€μž…ν•œλ‹€(μ™Όμͺ½μ— μ±„μ›Œμ§€λŠ” λΉ„νŠΈ 값은 0μž…λ‹ˆλ‹€.)

&=

두 ν•­μ˜ & λΉ„νŠΈ μ—°μ‚° ν›„ κ·Έ 값을 μ™Όμͺ½ 항에 λŒ€μž…ν•œλ‹€.

|=

두 ν•­μ˜ | λΉ„νŠΈ μ—°μ‚° ν›„ κ·Έ 값을 μ™Όμͺ½ 항에 λŒ€μž…ν•œλ‹€.

^=

두 ν•­μ˜ ^ λΉ„νŠΈ μ—°μ‚° ν›„ κ·Έ 값을 μ™Όμͺ½ 항에 λŒ€μž…ν•œλ‹€.

​

 

​

β–Ά 쑰건 μ—°μ‚°μž

쑰건 μ—°μ‚°μžλŠ” 연산에 ν•„μš”ν•œ ν•­μ˜ κ°œμˆ˜κ°€ μ„Έ κ°œμ΄λ‹€. κ·Έλž˜μ„œ μ‚Όν•­ μ—°μ‚°μžλΌκ³ λ„ ν•œλ‹€.

μ—°μ‚°μž

κΈ°λŠ₯

μ—°μ‚° 예

쑰건식 ? κ²°κ³Ό1 : κ²°κ³Ό2;

쑰건식이 참이면 κ²°κ³Ό1, 쑰건식이 거짓이면 κ²°κ³Ό2κ°€ μ„ νƒλœλ‹€.

int num = (5 > 3) ? 10 : 20;

​

​

λ°˜μ‘ν˜•

λŒ“κΈ€