λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μ‹œλ„/ꡭ비지원

[D+55] μžλ°”ν”„λ‘œκ·Έλž˜λ°1 (λ³€μˆ˜μ™€ μžλ£Œν˜•, μƒμˆ˜μ™€ ν˜•λ³€ν™˜, μ—°μ‚°μž)

by πŸ‡λ°•λ΄‰λ΄‰πŸ‡ 2022. 12. 7.

 

 

ꡭ비지원 D+55

-  μžλ°”ν”„λ‘œκ·Έλž˜λ°1 -

 


 

λ³€μˆ˜μ™€ μžλ£Œν˜•

• λ³€μˆ˜

λ³€μˆ˜λŠ” λ©”λͺ¨λ¦¬μ— 곡간을 ν• λ‹Ήν•˜κ³  이λ₯Ό μ ‘κ·Όν•˜κΈ° μœ„ν•œ 이름이닀.

ex) λ©”λͺ¨λ¦¬λ₯Ό λ§Œλ“€κ³  κ·Έ λ©”λͺ¨λ¦¬μ— aλΌλŠ” 이름을 μ§€μ–΄μ£Όμ—ˆμ„ λ•Œ aλ₯Ό λ³€μˆ˜λΌκ³  ν•œλ‹€.

 

• μžλ£Œν˜•

μžλ£Œν˜•μ€ λ³€μˆ˜λ₯Ό λ§Œλ“€κΈ° μœ„ν•œ ν˜•μ‹μœΌλ‘œ 크기와 κ·œμΉ™μ΄ λ‚΄ν¬λ˜μ–΄ μžˆλ‹€.

int a;			// size: 4byte, rule: μ •μˆ˜
float a;		// size: 4byte, rule: μ‹€μˆ˜
double a;		// size: 8byte, rule: μ‹€μˆ˜
boolean a;		// size: 1byte, rule: 진리값

Student a;		// size: 4byte, rule: μ°Έμ‘°κ°’
Animal a;		// size: 4byte, rule: μ°Έμ‘°κ°’

// 참쑰값이 λ“€μ–΄μžˆλŠ” Student a와 Animal의 aλŠ” μ‹€μ²΄λŠ” λ”°λ‘œ μžˆλ‹€.

// Studnetν˜•κ³Ό Animal의 경우 각각의 크기가 λ‹€λ₯΄λ‹€κ³ ν•΄μ„œ 
//μ°Έμ‘°κ°’μ˜ 크기가 λ³€ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λͺ¨λ“  μ°Έμ‘°κ°’μ˜ ν¬κΈ°λŠ” 4byte둜 λ™μΌν•˜λ‹€.

 

• μžλ£Œν˜•μ˜ μ’…λ₯˜

- Primitive Data type : μžλ°”μ˜ κΈ°λ³Έ μžλ£Œν˜•

- Non-Primitive Data type : ν™•μž₯된 μžλ£Œν˜• (user-defined type)

 

Primitive Data type

 

• μžλ£Œν˜•μ˜ μ’…λ₯˜ : μ •μˆ˜

- λͺ¨λ“  λ°μ΄ν„°νƒ€μž…μ˜ κΈ°λ³Έν˜•μ€ μ •μˆ˜ν˜•μ΄λ‹€. (νŒλ‹¨ν•˜κΈ° μ–΄λ €μš΄ μƒν™©μ—μ„œλŠ” μ •μˆ˜λ‘œ μ²˜λ¦¬ν•΄λ²„λ¦¬κΈ°λ„ ν•œλ‹€.)

 

- λΆ€ν˜ΈλΉ„νŠΈ(1) + 데이터 λΉ„νŠΈ(31)

- λΆ€ν˜ΈλΉ„νŠΈ (sign-bit) : 0(μ–‘μ˜ μ •μˆ˜) / 1(음의 μ •μˆ˜)

- μŒμˆ˜λŠ” λΆ€ν˜ΈλΉ„νŠΈλŠ” 1λ‘œν•˜κ³  데이터 λΉ„νŠΈλŠ” 2의 보수둜 μ²˜λ¦¬ν•œλ‹€.

- μžλ°”μ—μ„œλŠ” λΆ€ν˜ΈλΉ„νŠΈλ₯Ό λ°˜λ“œμ‹œ ν¬ν•¨ν•˜λŠ”λ° μ΄μœ λŠ” 애맀λͺ¨ν˜Έν•œ λ¬Έμ œκ°€ λ°œμƒλ  μˆ˜λ„ 있기 λ•Œλ¬Έμ— μ—„κ²©ν•˜κ²Œ λΆ€ν˜ΈλΉ„νŠΈλ₯Ό 가지도둝 μ„€μ •ν•΄ μ£Όμ—ˆλ‹€.

 

ex) -21μ–΅ + 21μ–΅ = 0

0은 λͺ¨λ“  λΉ„νŠΈκ°€ 0으둜 μ…‹νŒ…λ˜μ–΄μ•Ό ν•œλ‹€.

그런데 λ§Œμ•½ -21얡이 sign-bit이고 21얡이 unsigned라면 두 값을 λ”ν–ˆμ„ 경우 μ‚¬μΈλΉ„νŠΈλ‘œ 인해 λͺ¨λ“  값이 0이 μ•ˆλ‚˜μ˜€λŠ” κ²½μš°κ°€ λ°œμƒλ  μˆ˜λ„ μžˆλ‹€.

 

μ •μˆ˜ν˜•μ—μ„œ μ„ ν˜Έν•˜λŠ” 데이터 νƒ€μž…μ€?

- 일반적으둜 Data-busλŠ” 1채널이 32bit 이기 λ•Œλ¬Έμ— μ–΄λŠν¬κΈ°μ˜ λ°μ΄ν„°νƒ€μž…μ΄λ˜ I/Oμ†λ„λŠ” λ™μΌν•˜λ‹€. (shortκ°€ λ‚΄λΆ€μ μœΌλ‘œ integerν™” ν•˜λŠ” 과정을 거쳐야 ν•œλ‹€)

- 기본적으둜 μ •μˆ˜λŠ” int둜 μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— μƒν˜Έ ν˜Έν™˜μ„± μΈ‘λ©΄μ—μ„œλ„ intκ°€ 이득이닀.

- shortν˜•μ„ λ§Œλ“  μ΄μœ λŠ” μ„±λŠ₯μ΄λ‚˜ κΈ°λŠ₯ μΈ‘λ©΄μ—μ„œ λ§Œλ“€μ—ˆλ‹€κΈ° λ³΄λ‹€λŠ” 언어적 완성도 μΈ‘λ©΄(이둠상)μ—μ„œ λ§Œλ“  것이기 λ•Œλ¬Έμ— intλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€.

 

• μžλ£Œν˜•μ˜ μ’…λ₯˜ : μ‹€μˆ˜

- μ‹€μˆ˜λ₯Ό ν‘œν˜„ν•  λ•ŒλŠ” κ·Όμ‚¬μΉ˜λ‘œ ν‘œν˜„μ΄ λœλ‹€. (λ”± λ–¨μ–΄μ§€λŠ” μ‹€μˆ˜λΌλ„ ν•˜λ”λΌλ„ 그것은 컴퓨터 μž…μž₯에선 κ·Όμ‚¬μΉ˜λ‘œ ν‘œν˜„ν•œ 것이닀.)

 

μ‹€μˆ˜ν˜•μ—μ„œ μ„ ν˜Έν•˜λŠ” 데이터 νƒ€μž…μ€?

- 두 κ·Όμ‚¬μΉ˜λ₯Ό μ—°μ‚°ν–ˆμ„ 경우 μ˜€μ°¨κ°€ λ°œμƒν•˜κ²Œ λ˜λŠ”λ° μ΄λ•Œ, 해상도가 λ‹€λ₯Έ 두 κ·Όμ‚¬μΉ˜λ₯Ό μ—°μ‚°ν•œλ‹€λŠ” 것은 였차이 λ²”μœ„κ°€ λ„ˆ μ»€μ§€κ²Œ λœλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— 두 λ°μ΄ν„°νƒ€μž…μ„ μ„žμ–΄μ„œ μ‚¬μš©ν•˜λŠ” 것보닀 κ°™μ€λ°μ΄ν„°νƒ€μž…μœΌλ‘œ ν†΅μΌν•˜λŠ” 것이 κ°€μž₯ λ°”λžŒμ§ ν•˜λ‹€.

- μΌλ°˜μ μœΌλ‘œλŠ” double을 많이 μ‚¬μš©ν•œλ‹€.

 

for(float a = 0; a < 20.0; a++) { ... }

μœ„μ˜ μ½”λ“œλŠ” λ¬Έμ œμ—†μ΄ 잘 λŒμ•„κ°€κΈ΄ ν•˜μ§€λ§Œ 사싀상 μ˜λ―Έκ°€ μ—†λŠ” μ½”λ“œλΌκ³  ν•  수 μžˆλ‹€.

일반적으둜 λ°˜λ³΅λ¬Έμ—μ„œ μ΄ˆκΈ°κ°’, 쑰건, 증감은 횟수λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•œκ²ƒμœΌλ‘œ μ‚¬μš©λ˜μ–΄ μ§€λŠ”λ° ν•΄λ‹Ή λ°μ΄ν„°νƒ€μž…μ„ float으둜 ν•  경우 κ·Όμ‚¬μΉ˜λ‘œ νŒλ‹¨λ˜κΈ° λ•Œλ¬Έμ— 20번 λŒμ•„κ°„λ‹€λŠ” μ˜λ―Έλ³΄λ‹¨ 20번쯀 λŒμ•„κ°„λ‹€λŠ” 의미둜 ν•΄μ„λ˜κΈ° λ•Œλ¬Έμ— λ°˜λ³΅λ¬Έμ—μ„œ float은 ν”Όν•΄μ•Όν•œλ‹€.

 


μƒμˆ˜μ™€ ν˜•λ³€ν™˜

• μƒμˆ˜

- μƒμˆ˜λŠ” 값이 λ³€ν•˜μ§€ μ•ŠλŠ” λ³€μˆ˜μ΄λ‹€.

- ν•œλ²ˆ μ΄ˆκΈ°ν™”λ˜λ©΄ 값을 λ³€κ²½ν•  수 μ—†λŠ” λ³€μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€.

 

final

- final은 λ³€μˆ˜λ₯Ό λ°”κΏ€ 수 μ—†λŠ” μƒμˆ˜ν™”λ‘œ λ§Œλ“œλŠ” ν‚€μ›Œλ“œμ΄λ‹€.

 

μƒμˆ˜λ₯Ό μ™œ λ§Œλ“œλŠ”κ°€?

μƒμˆ˜λ₯Ό λ§Œλ“œλŠ” κ°€μž₯ 첫번째 μ΄μœ λŠ” κ°€λŠ₯성을 μ—†μ• λŠ” 것이닀.

μœ„μ˜ μ½”λ“œλ₯Ό 확인해보면 MAX_SIZE에 final을 μ‚¬μš©ν–ˆκΈ° λ•Œλ¬Έμ— 쀑간에 값이 λ°”λ€Œλ©΄ λ¬Έμ œκ°€ λ°œμƒλ  것이닀.

그런데 λ§Œμ•½ final이 μ•„λ‹ˆλΌ int둜 μ„€μ •ν–ˆμ„ κ²½μš°μ—” μ§€κΈˆ λ‹Ήμž₯ 값이 λ°”λ€Œκ²Œ λ˜μ§€ μ•Šλ”λΌλ„ μ–Έμ  κ°€λŠ” λ°”λ€” 수 μžˆλŠ” 것이닀.

즉, 값이 λ‚˜μ€‘μ— 바껴도 문제될게 μ—†λŠ” κ°€λŠ₯성이 λ‚΄ν¬λ˜μ–΄ μžˆλŠ” μƒνƒœμΈ 것이닀.

κ·Έλž˜μ„œ κ°€λŠ₯성을 μ•„μ˜ˆ μ—†μ•  λ²„λ¦¬λŠ” 것이며, μ΄λ‘œμΈν•΄ ν”„λ‘œκ·Έλž¨μ΄ 단단해져 강건성이 λ†’μ•„μ§€λŠ” 것이닀.

 

그리고 λ‘λ²ˆμ§Έ μ΄μœ λŠ” μƒμˆ˜ν™”λ₯Ό ν•¨μœΌλ‘œμ¨ 적응성(adaptive) κΈ°λŠ₯도 같이 ν‘œν˜„ν•  수 μžˆλ‹€.

λ§Œμ•½ 좔후에 MAX_SIZE의 값이 20으둜 λ°”λ€Œλ©΄ μ—¬λŸ¬λΆ€λΆ„μ— 값을 λŒ€μž…ν•˜λŠ” 것이 μ•„λ‹ˆλΌ final둜 쀑간에 값이 λ³€κ²½λœ 적 μ—†κΈ° λ•Œλ¬Έμ— 상단에 ν•œλ²ˆλ§Œ λ³€κ²½ν•΄μ£Όλ©΄ λͺ¨λ“  μ½”λ“œκ°€ λ³€κ²½λœ 값을 μ μš©ν•΄ 였λ₯˜μ—†μ΄ λΉ λ₯΄κ²Œ λ™μž‘λ˜λŠ” 것을 확인할 수 μžˆλ‹€.

 

• λ¦¬ν„°λŸ΄ μƒμˆ˜ (Literals)

- λ¦¬ν„°λŸ΄ μƒμˆ˜λŠ” λ³€μˆ˜λ₯Ό μƒμˆ˜ν™”ν•œ 것이 μ•„λ‹Œ λ°”κΏ€ 수 μ—†λŠ” 슀칼라 값이라고 ν•œλ‹€.

- λ¦¬ν„°λŸ΄μ€ μ™Όμͺ½μ— 올 수 μ—†μœΌλ©°, λ°˜λ“œμ‹œ 였λ₯Έμͺ½μ— μžˆλ‹€. (= r value)

- λ¦¬ν„°λŸ΄λ„ μ™Όμͺ½μ˜ λ³€μˆ˜μ— λŒ€μž…λ˜λ―€λ‘œ λ©”λͺ¨λ¦¬μ— μ μž¬κ°€ λ˜λŠ”λ° μ΄λ•Œλ¬Έμ— 크기와 κ·œμΉ™μ΄ ν•„μš”ν•˜λ‹€.

 

• ν˜• λ³€ν™˜ (type casting, type conversion)

// ν˜•λ³€ν™˜1 - μƒˆλ‘œμš΄ 데이터 νƒ€μž…μ˜ λ³€μˆ˜μ— λŒ€μž…λ˜λŠ” 것
short a = 10;
int b = a;

// ν˜•λ³€ν™˜2 - νŠΉμ • λ°μ΄ν„°νƒ€μž…μ— λ‹€λ₯Έ λ°μ΄ν„°νƒ€μž…μ˜ λ¦¬ν„°λŸ΄κ°’μ΄ λŒ€μž…λ˜λŠ” 것
double a = 1.0f;

- ν˜•λ³€ν™˜μ€ λ°μ΄ν„°νƒ€μž…μ˜ κ·œμΉ™μ„ λ³€ν™”μ‹œν‚€λŠ” 연산이닀.

 

ν˜• λ³€ν™˜μ€ λ°”λžŒμ§ν•œ 것인가?

ν˜•λ³€ν™˜μ΄ λ°œμƒλ˜λŠ” 것은 기본적으둜 쒋을 게 μ—†λ‹€.

κ·Έλ ‡κΈ° λ•Œλ¬Έμ— ν˜•λ³€ν™˜μ„ μ–΄λ–»κ²Œ μž˜ν•˜λŠλƒκ°€ μ€‘μš”ν•œ 것이 μ•„λ‹ˆλΌ μ–΄λ–»κ²Œ ν˜•λ³€ν™˜μ„ μ•ˆμ‹œν‚€κ³  λ°μ΄ν„°νƒ€μž…μ„ μ„€μ •ν•˜λŠλƒκ°€ 더 μ€‘μš”ν•˜λ‹€.

 

그런데 ꡳ이 ν•œλ‹€λ©΄ ν˜•λ³€ν™˜ κ²°κ³Όκ°€ λ…Όλ¦¬μ μœΌλ‘œ μœ νš¨ν•΄μ•Ό ν•œλ‹€.

 

ν˜• λ³€ν™˜ 절차

1. ν˜•λ³€ν™˜μ€ μ•ˆμΌμœΌν‚€λŠ”κ²ƒμ΄ 제일 μ’‹λ‹€.

2. ν˜•λ³€ν™˜μ΄ μ΄λ£¨μ–΄μ‘Œμ„ 경우 λ…Όλ¦¬μ μœΌλ‘œ μœ νš¨ν•œ 것인지 ν™•μΈν•œλ‹€.

3. λ…Όλ¦¬μ μœΌλ‘œ λ§žλ‹€κ³  ν–ˆμ„ 경우 λ°˜λ“œμ‹œ λ””λ²„κ±°λ‘œ 값을 확인해 좔가적인 λ¬Έμ œκ°€ μžˆλŠ”μ§€ 확인해 λ³Έλ‹€.

 

ν˜• λ³€ν™˜ 원칙

- ν˜•λ³€ν™˜μ€ λ¬΅μ‹œμ μœΌλ‘œ μ΄λ£¨μ–΄μ§ˆ 수 μžˆλ‹€.

- 크기가 λ§žμ§€ μ•Šμ€ 경우 ν˜•λ³€ν™˜μ΄ λΆˆκ°€λŠ₯ ν•œλ‹€.

- λͺ…μ‹œμ μΈ ν˜•λ³€ν™˜μ€ κ·Έ κ²°κ³Όλ₯Ό μž₯λ‹΄ν•  수 μ—†μœΌλ‚˜ μ΅œλŒ€ν•œ 논리적인 κ²°κ³Όλ₯Ό λ„μΆœν•˜λ €κ³ λŠ” ν•˜μ§€λ§Œ 항상 κ²°κ³Όλ₯Ό λ””λ²„κ±°λ‘œ 확인해보고 μ •μƒμ μœΌλ‘œ ν˜•λ³€ν™˜μ΄ μ΄λ£¨μ–΄μ‘ŒλŠ”μ§€ 확인해보고, 상황에 따라 λ°”λ€” 수 μžˆλŠ” κ²ƒκΉŒμ§€ μ˜ˆμΈ‘ν•΄μ„œ ν™•μΈν•΄λ³΄λ³΄λŠ” 것이 μ’‹λ‹€.

 

 


μ—°μ‚°μž

• μ—°μ‚°μž

- μ—°μ‚°μžλŠ” μ˜€νΌλžœλ“œλ₯Ό μ—°μ‚°ν•˜κΈ° μœ„ν•œ λͺ…λ Ήμ–΄ 이닀.

- OPcode μ—°μ‚°μž (operation code)

- Operand ν”Όμ—°μ‚°μž : μ—°μ‚°μžμ˜ λŒ€μƒ

 

νŠΉμ§•

- μ—°μ‚°μžμ—λŠ” μš°μ„ μˆœμœ„κ°€ μ‘΄μž¬ν•œλ‹€.

- 연산은 λ‹¨μΌκ°’μ˜ κ²°κ³Όλ₯Ό λ°œμƒμ‹œν‚€λ©° μ΄λŸ¬ν•œ κ²°κ³Όκ°€ 평가가 κ°€λŠ₯ν•˜λ‹€λ©΄ ν•΄λ‹Ή μ½”λ“œλΈ”λŸ­μ„ Expression이라고 ν•  수 μžˆλ‹€.

int a = 10 + 5 * 2;		// Expression: 10 + 5 * 2;

 

μ’…λ₯˜

int a;

a = 5 + 6;		// μ‚°μˆ μ—°μ‚° - 사칙연산 
a = 4;			// μ‚°μˆ μ—°μ‚° - a=4λ₯Ό μˆ˜ν–‰ν•˜κ³  λ‚˜μ˜€λŠ” κ²°κ³Όλ₯Ό ν‰κ°€ν•˜κΈ° λ•Œλ¬Έμ— μ‚°μˆ μ—°μ‚°μ— ν•΄λ‹Ήν•œλ‹€.

if(k > 20)		// 논리연산 - true / false

- μ‚°μˆ μ—°μ‚° : 사칙연산, μ‰¬ν”„νŠΈμ—°μ‚° λ“± κ²°κ³Όκ°€ μ‚°μˆ κ°’μ΄ λ‚˜μ˜€λŠ” 연산이닀.

- 논리연산 : μ—°μ‚°μ˜ κ²°κ³Όκ°€ trueλ‚˜ false인 논리값이 λ‚˜μ˜€λŠ” 연산이닀.

 

• Short-Circuit Evaluation (Lazy Evaluation)

- λ…Όλ¦¬μ—°μ‚°μ—μ„œ μ—°μ‚°μ˜ νš¨μœ¨μ„ 높기이 νœ˜ν•΄ λΆˆν•„μš”ν•œ 연산을 μƒλž΅ν•˜λŠ” 논리연산 μ΅œμ ν™” λ©”μΉ΄λ‹ˆμ¦˜(λ™μž‘λ°©μ‹)이닀.

 

μœ„μ˜ μ½”λ“œλ₯Ό λ™μž‘ν–ˆμ„ 경우 μ½˜μ†”μ— μ°μ–΄μ„œ 확인해보면 우리의 μ˜ˆμƒκ³ΌλŠ” λ‹€λ₯΄κ²Œ "false 10 0"이 λ‚˜μ˜¨λ‹€.

μ΄μœ λŠ” λ°”λ‘œ 논리연산 μ΅œμ ν™” λ©”μΉ΄λ‹ˆμ¦˜ λ•Œλ¬ΈμΈλ° μ•žλΆ€λΆ„μ—μ„œ ((num1 += 10) < 0)은 false값을 λ‚˜νƒ€λ‚Έλ‹€.

그런데 뒀에 λ…Όλ¦¬μ—°μ‚°μž &&κ°€ λ‚˜μ™”μ„ κ²½μš°μ— μ•žλΆ€λΆ„μ—μ„œ false값이 λ‚˜μ˜€λ©΄ λ’€μ—λŠ” λ³΄λ‚˜λ§ˆλ‚˜ false값이 λ‚˜μ˜€κΈ° λ•Œλ¬Έμ— 뒀에 λ₯Ό ν™•μΈν•˜μ§€ μ•Šκ³  λ°”λ‘œ false둜 내보내기 λ•Œλ¬Έμ— ((num2 += 10) > 0)과정을 κ±°μΉ˜μ§€ λͺ»ν•΄ num2κ°€ 0이 λ‚˜μ˜€κ²Œ λ˜λŠ” 것이닀.

 

μœ„μ˜ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„  κ²°κ΅­ 논리연산을 μ‚¬μš©ν• λ•Œ μ‚°μˆ μ—°μ‚°μ„ ν•¨κ»˜ μ‚¬μš©ν•˜μ§€ μ•Šκ³  논리연산이 λ“€μ–΄κ°€κΈ° 전에 미리 μ‚°μˆ μ—°μ‚°μ„ ν•΄μ£Όκ³  논리연산을 ν•˜λŠ”κ²ƒμ΄ λ°”λžŒμ§ν•˜λ‹€. 

 

• μž„μ‹œλ³€μˆ˜

κ°œλ°œμžκ°€ λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έν•˜λŠ”κ²Œ μ•„λ‹ˆλΌ μ»΄νŒŒμΌλŸ¬κ°€ μ„ μ–Έν•˜μ—¬ λ§Œλ“  λ³€μˆ˜λ‹€.

μ»΄νŒŒμΌλŸ¬κ°€ λ³€μˆ˜μ΄λ¦„μ„ 지은것이기 λ•Œλ¬Έμ— μ»΄νŒŒμΌλŸ¬λŠ” ν•΄λ‹Ή λ³€μˆ˜μ— 접근이 κ°€λŠ₯ν•˜μ§€λ§Œ κ°œλ°œμžλŠ” 접근이 λΆˆκ°€λŠ₯ν•˜λ‹€.

 

μž„μ‹œλ³€μˆ˜λŠ” μ½”λ“œλ₯Ό κ°„λ‹¨ν•˜κ²Œ ν•  수 μžˆλŠ” μž₯점을 가지고 μžˆμ§€λ§Œ κ³Όλ„ν•œ μ‚¬μš©μ€ μ½”λ“œμ˜ λ³΅μž‘λ„λ₯Ό μ˜¬λ¦°λ‹€.

 

μž„μ‹œλ³€μˆ˜ μ‚¬μš©λ°©λ²• 3가지

μž„μ‹œλ³€μˆ˜λŠ” 크게 3κ°€μ§€λ‘œ μ“°μ΄λŠ”λ° μ˜ˆμ‹œλ₯Ό 보고 잘 κΈ°μ–΅ν•˜λ„λ‘ ν•œλ‹€.

 

1) λŒ€λ†“κ³  μ‚¬μš©ν•˜κΈ°

new NodeData();

NodeDataλ₯Ό νž™μ— μ €μž₯ν•˜κ³  μž„μ‹œλ³€μˆ˜μ— μ‹œμž‘μ£Όμ†Œλ₯Ό λ„£λŠ”λ‹€.

인간이 μ ‘κ·Όν•  수 μ—†λ‹€.

 

int val = (new NodeData()).getIntValue();

λͺ…μ‹œμ μœΌλ‘œ 직접접근은 λͺ»ν•˜μ§€λ§Œ λ¬΅μ‹œμ μœΌλ‘œ μ„ μ–Έν•œκ±Έ μœ„μ—μ²˜λŸΌ 접근이 κ°€λŠ₯ν•˜λ‹€.

즉, μž„μ‹œλ³€μˆ˜λ‘œ μ ‘κ·Όν•  μˆ˜λŠ” μ—†μ§€λ§Œ κ°„μ ‘μ μœΌλ‘œ 접근이 κ°€λŠ₯ν•œ 것이닀.

 

2) ν•¨μˆ˜μ˜ λ¦¬ν„΄κ°’μœΌλ‘œ μž„μ‹œλ³€μˆ˜ μ‚¬μš©

public static NodeData test()
{
	return new NodeData();	// μƒˆλ‘œμš΄ λ…Έλ“œλ°μ΄ν„°λ₯Ό λ§Œλ“€κ³  참쑰값을 리턴함
}

int a = (test()).getIntValue();
System.out.println(a);

 

ν•¨μˆ˜μ—μ„œ λ¦¬ν„΄ν• λ•Œ μž„μ‹œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ testλ₯Ό λΆ€λ₯΄λ©΄ λ¦¬ν„΄μœΌλ‘œλΆ€ν„° μ˜€λŠ” 참쑰값을 톡해 μž„μ‹œλ³€μˆ˜λ₯Ό μ²˜λ¦¬ν•  수 μžˆλ‹€.

 

3) ν•¨μˆ˜μ˜ νŒŒλΌλ―Έν„°λ‘œ μž„μ‹œλ³€μˆ˜ μ‚¬μš©

System.out.println((test()).getIntValue());

μž„μ‹œλ³€μˆ˜λ₯Ό λ§Œλ“€μ–΄μ„œ testλ₯Ό 만질 수 있으며, 거기에 getIntValue()의 값을 μž„μ‹œλ³€μˆ˜μ— λ„£κ³  κ·Έ λ³€μˆ˜λ₯Ό 또 μž„μ‹œλ³€μˆ˜μ— λ„£μ€λ‹€μŒμ— μ½˜μ†”λ‘œ 찍은 것이닀.

 

 

λ°˜μ‘ν˜•

λŒ“κΈ€