๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JAVA/๊ธฐ๋ณธ ์ด๋ก 

3. ์ž๋ฃŒํ˜•(DataType)

by ๐Ÿณ Laboon 2024. 1. 2.

์ด์ „ ํฌ์ŠคํŠธ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž๋ฃŒํ˜•์ด๋ž€ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ, ์–ด๋–ค ๊ฐ’์„ ํ• ๋‹นํ•  ๊ฒƒ์ธ์ง€? ๋ฏธ๋ฆฌ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๋ณ€์ˆ˜ ํฌ์ŠคํŠธ๋ฅผ ์ž˜ ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค.

1. a = 10์„ ์ž‘์„ฑํ•˜๊ณ  ๋ฐ”๋กœ ๋‹ค์Œ์— a = 22์–ต์ด๋ผ๊ณ  ์ž‘์„ฑํ•ด ๋ด…์‹œ๋‹ค.

2. Symbol Table์—์„œ a์˜ ์ฃผ์†Œ๊ฐ€ 0x0004๋ผ๊ณ  ๊ฐ€์ •์„ ํ•ฉ์‹œ๋‹ค.

3. 0x0008 ์ฃผ์†Œ์— ์ด๋ฏธ ๋‹ค๋ฅธ ๊ฐ’์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค.

4. 0x0004์— 10์„ ์ €์žฅํ•  ๋•Œ๋Š” ์•„๋ฌด ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

5. 0x0004์— 22์–ต์„ ์ €์žฅํ•  ๋•Œ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

์ด์œ ๊ฐ€ ๋ญ˜๊นŒ์š”?

์ปดํ“จํ„ฐ์—์„œ ๊ธฐ๋ณธ์ ์ธ ์ •์ˆ˜๋Š” 4byte(32bit, ๋Œ€๋žต 21์–ต)๊นŒ์ง€ ํ‘œํ˜„์„ ํ•˜๊ณ  ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

a๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ 0x0004, 0x0005, 0x0006, 0x0007์˜ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋Š” ๊ฒƒ์ด์ฃ .

n๋น„ํŠธ๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ 2^(n-1)๊นŒ์ง€ ํ‘œํ˜„

๊ทธ๋Ÿฐ๋ฐ 22์–ต์„ ์ €์žฅํ•  ๋•Œ๋Š” 4byte๋ฅผ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค. 0x0008์˜ ๊ณต๊ฐ„๊นŒ์ง€ ๊ฑด๋“œ๋ฆฌ๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์ฃ .

๋งŒ์•ฝ 0x0008์— ์ค‘์š”ํ•œ ๊ฐ’์ด ๋“ค์–ด ์žˆ๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์ฃ .

 

๊ทธ๋ž˜์„œ ๋ฏธ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

PDT(Primitive Data Type) - ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•
๋ฐ์ดํ„ฐ ํƒ€์ž… ํฌ๊ธฐ ์ข…๋ฅ˜ ๊ธฐ๋ณธ ๊ฐ’
byte 1byte ์ •์ˆ˜ 0
short 2byte ์ •์ˆ˜ 0
int 4byte ์ •์ˆ˜ 0
long 8byte ์ •์ˆ˜ 0L
float 4byte ์‹ค์ˆ˜ 0.0f
double 8byte ์‹ค์ˆ˜ 0.0d
char 2byte ๋ฌธ์ž null
boolean 1byte ๋ถˆ๋ฆฐ false

์ž๋ฐ”์—์„œ๋Š” unicode๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— charํ˜•์ด 2byte์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.

 

์šฐ๋ฆฌ๋Š” ์ด๋Ÿฐ ์ž๋ฃŒํ˜•์„ ํ†ตํ•ด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ํ• ๋‹นํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

int myAge; // ์„ ์–ธ

myAge = 25; // ํ• ๋‹น

 

์ฐธ๊ณ ๋กœ char๋Š” 'A'์™€ ๊ฐ™์€ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋งŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Ace์™€ ๊ฐ™์€ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” String์ด๋ผ๋Š” ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ์š”.

String์€ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์ด ์•„๋‹ˆ๊ณ  Java์—์„œ ์ง์ ‘ ๋งŒ๋“  ์ž๋ฃŒํ˜•์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒƒ์„ User Define Data Type์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์ž๋ฃŒํ˜• ์™ธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋”์šฑ ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. API(Application Programing Interface)๋ผ๊ณ ๋„ ํ•˜์ฃ .

API์—๋Š” ์ถ”ํ›„์— ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๊ณ  Interface์— ๋Œ€ํ•œ ๊ธ€์€ ์—ฌ๊ธฐ์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ปดํ“จํ„ฐ์—์„œ Interface๋ž€?

๋จผ์ €, Interface์˜ ๋œป์€ ์ƒํ˜ธ ์ž‘์šฉ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (Google ๋ฒˆ์—ญ๊ธฐ) ์ƒํ˜ธ ์ž‘์šฉ์ด๋ผ๊ณ  ํ•˜๋ฉด A์™€ B๊ฐ€ ์„œ๋กœ ๋ฌผ๊ฑด์„ ์ฃผ๊ณ  ๋ฐ›๋“ , ๋Œ€ํ™”๋ฅผ ํ•˜๋“  ์‹ธ์›€์„ ํ•˜๋“ (?) ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ฌด์–ธ๊ฐ€๊ฐ€ ์„œ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด

dev-dot.tistory.com

 

UDDT(User Define Data Type) - ์‚ฌ์šฉ์ž ์ •์˜ ์ž๋ฃŒํ˜•

UDDT๋Š” Reference Data Type (์ฐธ์กฐํ˜•) ์ด๋ผ๊ณ  ๋ถ€๋ฅผ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ ํด๋ž˜์Šค๋‚˜ ๋ฐฐ์—ด ๋“ฑ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ๋” ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ฒ ์ง€๋งŒ PDT(๊ธฐ๋ณธ ์ž๋ฃŒํ˜•) ๋˜๋Š” ๋˜ ๋‹ค๋ฅธ UDDT(์‚ฌ์šฉ์ž ์ •์˜ ์ž๋ฃŒํ˜•)์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒํ˜•์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด String์€ ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ๋ฌธ์ž์—ด์€ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋“ค๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ง์€ char ์ž๋ฃŒํ˜•์œผ๋กœ String ์ž๋ฃŒํ˜•์„ ๋งŒ๋“ค์–ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

java.base/java/lang/String.java
๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ char ์ž๋ฃŒํ˜•์ž„.

 

์—ฌ๋Ÿฌ PDT๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” String UDDT

 

UDDT๋Š” Class๋ฅผ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜๋ฉด ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ง€๊ธˆ์€ ์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ์•Œ์•„๋‘๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 


์ด์ œ, ์šฐ๋ฆฌ๋Š” PDT, UDDT, Variable, Assign์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปดํ“จํ„ฐ์— ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด์ฃ .

์ถœ๋ ฅ์— ๋Œ€ํ•ด์„œ๋Š” ์•„์ง ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ง›์€ ๋ด์•ผํ•˜๋‹ˆ๊นŒ

System.out.println(value); ๋กœ ์ž๊ธฐ์†Œ๊ฐœ๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๋ฉด ์ž๋ฃŒํ˜•์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ ์ˆ˜ ์žˆ๊ฒ ๋„ค์š” 

public static void main(String[] args) {	
    String name = "dot";
    int age = 25;
    char gender = 'M';
    boolean girlFriend = false;
    
    System.out.println("์ด๋ฆ„ : " + dot);
    System.out.println("๋‚˜์ด : " + age);
    System.out.println("์„ฑ๋ณ„ : " + gender);
    System.out.println("์—ฌ์ž์นœ๊ตฌ ์—ฌ๋ถ€ : " + girlFriend);
}

 

์ž๋ฃŒํ˜•์— ๋Œ€ํ•œ ๋…ธ์…˜ ์ •๋ฆฌ์ž…๋‹ˆ๋‹ค.

https://www.notion.so/24jihwan/295b00df286d4f3f92d72119afd997ee

 

์ž๋ฃŒํ˜• | Notion

์ž๋ฃŒํ˜•์˜ ์ข…๋ฅ˜ ์•Œ์•„๋ณด๊ธฐ

24jihwan.notion.site