์๋ฐ ์์ ํ์ (8+1)
์์ ํ์
์ ๊ธฐ๋ณธ ํ์
์ด๋ค. ์๋ฐ์์ ์์ ํ์
์ด๋, ์ ์, ์ค์, ๋ฌธ์, ๋
ผ๋ฆฌ ๋ฆฌํฐ๋ด ๋ฑ์ ์ค์ ๋ฐ์ดํฐ๊ฐ์ ์ ์ฅํ๋ ํ์
์ด๋ค. ์ ๊ทผ ์๋๊ฐ ๋น ๋ฅด๊ณ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒ ์ฐจ์งํ๋ค๋ ์ฅ์ ์ด ์๋ค.

- ์๋ฃํ (data type) : ๋์๊ฒ ํ์ํ ๋ฐ์ดํฐ ํ์

Booleans
- boolean ๋ฐ์ดํฐ ํ์
์ true์ false๋ก ๋ํ๋จ.
- ์กฐ๊ฑด ํ
์คํธ(conditional testing)์ ์ฃผ๋ก ์ฐ์.
boolean isJavaFun = true; boolean isFishTasty = false; System.out.println(isJavaFun); // Outputs true System.out.println(isFishTasty); // Outputs false
Characters
- "A", "B"์ฒ๋ผ ๋จ์ผ ๋ฌธ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉํจ.
char myGrade = 'B'; System.out.println(myGrade); //B
Number
- ์ ์ ํ์ (integer types) - โ byte, โก short, โข int, โฃ long
โ byte
- (-128 ~ 127) ๊น์ง์ ์ ์๋ฅผ ๋ด์ ์ ์์.
- ํด๋น ์ซ์์ ๊ฐ์ ๊ฐ์ง๋ ํน์ ์ํฉ์์ int ๋๋ ๋ค๋ฅธ ์ ์ ํ์
๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ ์ ์์.
byte myNum = 100; System.out.println(myNum); //100
โก short
- (-32768 ~ 32767) ๊น์ง์ ์ ์๋ฅผ ๋ด์ ์ ์์.
short myNum = 5000; System.out.println(myNum); //5000
โข int
- (-2147483648 ~ 2147483647) ๊น์ง์ ์ ์๋ฅผ ๋ด์ ์ ์์.
- ๋ณ์๋ฅผ ๋ง๋ค ๋ ๊ฐ์ฅ ์ ํธํ๋ ํ์
.
int myNum = 100000; System.out.println(myNum); //100000
โฃ long
- (- 9223372036854775808 ~ 9223372036854775807) ๊น์ง์ ์ ์๋ฅผ ๋ด์ ์ ์์.
- int๋ก ์ถฉ๋ถํ์ง ์์ ๋ ์ฌ์ฉ.
- "L"๋ก ๋๋์ผํจ.
long myNum = 15000000000L; System.out.println(myNum); //15000000000
2. ์ค์ ํ์
(floating point types) - โ float, โก double
์ค์ ํ์
์ 9.99 ๋ฑ ์์์ ์ด ํ์ํ ์ซ์๊ฐ ํ์ํ ๋ ์ฌ์ฉํจ.
โ float
- (3.4eโ038 ~ 3.4e+038) ๊น์ง์ ์ค์๋ฅผ ๋ด์ ์ ์์.
float myNum = 5.75f; System.out.println(myNum); //5.75
โก double
- (1.7eโ308 ~ 1.7e+308) ๊น์ง์ ์ค์๋ฅผ ๋ด์ ์ ์์.
- "d"๋ก ๋๋์ผํจ.
double myNum = 19.99d; System.out.println(myNum); //19.99
โข ๊ณผํ์ ์ซ์ ํํ
- ์ค์ ํ์
์ 10์ ์ ๊ณฑ์ e๋ก ํํํ ์ ์์.
float f1 = 35e3f; double d1 = 12E4d; System.out.println(f1); //35000.0 System.out.println(d1); //120000.0
float์ ๋ณ์๋ 6~7 ์๋ฆฟ์๊น์ง ์ฌ ์ ์๋ ๋ฐ๋ฉด, double์ ๋ณ์๋ 15 ์๋ฆฟ์๊น์ง ์ฌ ์ ์์. ๋ฐ๋ผ์ double์ ์ฐ๋ ๊ฒ์ด ์์ ํจ.
String
- ํ
์คํธ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉํจ.
- ํ
์คํธ๋ ""๋ก ๊ฐ์ธ์ผํจ.
String greeting = "Hello World"; System.out.println(greeting); //Hello World
string ํ์
์ ์์ฃผ ์ฌ์ฉํด์ 9๋ฒ์งธ ํ์
์ด๋ผ๊ณ ๋ ๋ถ๋ฆผ. ํ์ง๋ง ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์(๋ด์ฅ ํจ์๊ฐ ์๊ธฐ ๋๋ฌธ์) ์์ ํ์
์ ์๋.
System.out.println()๋ java.lang.system ํด๋์ค ๋ด๋ถ์ ์กด์ฌํ๋ out ๊ฐ์ฒด๊ฐ printstream์ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์, printstream์ด ๊ฐ๊ณ ์๋ printIn ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์.
์ ์ด๋ฏธ์ง๋ string ์ผ๊น?
Base 64๋ก ์ธ์ฝ๋ฉํ๋ฉด ๋ฌธ์ ์ด์ ์ป์ ์ ์์.
Base 64
- Base 64๋ ๋ฐ์ดํฐ๋ฅผ 64์ง๋ฒ์ผ๋ก ๋ํ๋ด๋ ๊ฒ์ผ๋ก 0๋ถํฐ 63๊น์งABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ ์ผ๋ก ๋ํ๋.
- ์์คํค ์ฝ๋๋ก ํํํ๊ธฐ ์ํด ๋ง๋ค์ด์ง.
์ฅ์
- ์๋ฒ์ ์ด๋ฏธ์ง๋ฅผ ๋ฃ์ง ์์๋ ๋๋ฏ๋ก ๊ฐ๋จํ ๊ตฌํ ๊ฐ๋ฅ.
- ๋ ๋์, ๋ฌธ์๋ก๋ฉ๊ณผ ๊ฐ์ด ๋ก๋ฉ๋๊ธฐ์ ๋๊ธฐ์ง ์๊ณ ๋ถ๋ ค์ด.
๋จ์
- ์ฝ๋ฉ์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง.
- ์ฉ๋์ด ์ปค์ง. 256๊ฐ์ง๋ฅผ ํํํ ์ ์๋ ๋ฐ์ดํธ๋ฅผ printableํ 64๊ฐ์ง๋ฅผ ์ฌ์ฉํด์ ํํํ๊ธฐ ๋๋ฌธ. Base64 ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๋ฉด ์๋ณธ๋ณด๋ค 33%์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํจ.
์๋ฆฌ
์ปดํจํฐ๋ 2์ง์๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ด๋ฅผ 64์ง์๋ก ํํํ๊ธฐ ์ํด์ 2^6 ์ฆ, 6๋นํธ 2์ง์ ์ด์ด ํ์. ํ์ง๋ง ๋๊ฐ ์ปดํจํฐ๋ 8๋นํธ์ฉ ์ฎ์ด์ง ๋ฐ์ดํธ๋ฅผ ๊ธฐ๋ณธ ์ ๋ ๋จ์๋ก ์ฌ์ฉ. ๋ฐ๋ผ์ 6๋นํธ์ 8๋นํธ์ ์ต์ ๊ณต๋ฐฐ์ 24๋นํธ๋ฅผ ์ฌ์ฉ. ์ฆ, Base 64๋ 24๋นํธ๋ง๋ค 6๋นํธ์ฉ ์ชผ๊ฐ์ด ๋ฌธ์ 4๊ฐ๋ฅผ ๋ง๋ฆ.
๋ค๋ง, ์
๋ ฅ๋๋ ์ ๋ณด๊ฐ ๋ชจ๋ 24๋นํธ์ฉ ๋จ์ด์ง๋ค๋ ๋ณด์ฅ์ด ์์ผ๋ฏ๋ก ๋๋์ด ๋จ์ด์ง์ง ์๋ ๋ถ๋ถ์ = ๋ฌธ์๋ก ์ฑ์.

๋นํธ์ ๋ฐ์ดํธ
- 1 bit ๋ 2 ์ง์ ํ ์๋ฆฌ๋ฅผ ๋งํ๋ฉฐ ํํ๊ฐ๋ฅํ ๊ฐ์ง์๋ 2๊ฐ. ์ซ์๋ก ์น๋ฉด 0 ~ 1.
- 1 byte ๋ 8 bit๋ฅผ ๋งํ๋ฉฐ 2 ์ง์ 8 ์๋ฆฌ์ ํด๋นํ๊ณ ํํ๊ฐ๋ฅํ ๊ฐ์ง์๋ 2^8๊ฐ์ธ 256๊ฐ(์ง๋ฒ). ์ซ
์๋ก ์น๋ฉด 0 ~ 255.
- 1 byte = 8 bit = 2^8์ ๊ฒฝ์ฐ๋ก ํํ
- ์ง์๋ ์ง๋ฒ์ผ๋ก ๋ง๋ค์ด์ง ์
์์
์ด๋ค ์์ด์ฝ์ Base64๋ก ์ธ์ฝ๋ฉํ๋ฉด ์๋์ ๊ฐ์ ๋ฌธ์๊ฐ์ ์ป์ ์ ์์.
data:image/gif;base64,R0lGODlhDwAOAPYBAAAAAP///+Pj5MzS6qy33bfA4sDI5dne8I6e0JGg0Zim1Jqo1aGu2H6SyZOj0HWMxYWYytbY3V98vLG801p9ulN6u2SHw0JvtYiix8vU4TBmsDBmrx9fqyJgrEB1uGCOxRpeqoGjygdXpwlYpw5aqBVhrGOUx6C+3N/p8+/0+dzd3gBVpQNWpgtdphBgqxpmqxpnqyBqsDB1tmqbx3CfzJe62Z+/3a/K46/J4r/V6c/f7t/q9AJaoQhcpAlcpVuSwh9sqC10rF+Xv5G20cXY5cba5wxnnZu7zXKfthhxmS6EloezvVqcqFeeqJq+w1SjqYC0sajNysrh3drp4trn4fD49O/18vb6+Pf5+OXs6Pz9/Pv8+////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAPAA4AAAeYgAEBThYVFxocJCwrL4KCW0gIDxIUGyAiKys6jlMhCg0TKhgdI5kzjksGDA4RKgInLpkwglhHAwQJEBmCOrErOAFUNQcFCx4uN4IpMis/AUwrJh8lKy45gjvMLQFPmZkymwG9mT4oVU2ZMSmCNt5ARYJaUDwrNgE03kHrjgFRRisxvAnhx09KEm9DCBLMoqQHEYUKrVyBGAgAOw==
๋ฌธ์ ์ด์ ์๋ฏธ
- ๋ฌธ์์ด : ๋ฌธ์์ ์ด. ํ ๋ฌธ์๋น 2byte๋ก 10๊ธ์๋ผ๋ฉด 20byte์.
- Base 64์์์ ๋ฌธ์์ด : 64์ง๋ฒ ์์คํค ์ฝ๋๋ก ์ด๋ฃจ์ด์ง ์ด.
- ๋ฌธ์๊ฐ : 2 byte๋ก ํํํ ์ ์๋ ๋ฌธ์์ ๊ฐ. char์ 256๊ฐ์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ฐ์ง 2 byte์ด๊ธฐ ๋๋ฌธ.
๋ง์น๋ฉฐ
๋จ์ํ ์๋ฐ ์์ ํ์
์ ์ ์๋ก๋ง ๋๋๋ ๊ฒ ์๋๋ผ ์, ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง๋ฅผ ์์๋ณด์๋ค. ๋ฟ๋ง ์๋๋ผ ์ด๋ฐ ์์ ํ์
์ด ์ค์ ์นํ์ด์ง์์๋ ์ด๋ป๊ฒ ์ฌ์ฉ๋ ์ ์๋์ง ์ฌ๋ก๋ฅผ ํ์ธํ๊ณ , ๋ด๊ธด ์์ ํ์
์ ์ฌ์ฉํ ์ด์ ์ ๋ํด ๊น๊ฒ ์๊ฐํด๋ณด๋ ์๊ฐ์ด์๋ค. ํนํ, ์์คํค์ฝ๋๋ ๋นํธ์ ๋ฐ์ดํธ ๋ฑ ์ซ์์ ๋ํด ๋ ๋ง์ ์ง์์ ์๊ฒ ๋ ์ ์ด ์ข์๋ค.