자바 원시 타입(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이기 때문.
마치며
단순히 자바 원시 타입을 정의로만 끝나는 게 아니라 왜, 어떻게 사용되는지를 알아보았다. 뿐만 아니라 이런 원시 타입이 실제 웹페이지에서는 어떻게 사용될 수 있는지 사례를 확인하고, 담긴 원시 타입을 사용한 이유에 대해 깊게 생각해보는 시간이었다. 특히, 아스키코드나 비트와 바이트 등 숫자에 대해 더 많은 지식을 알게 된 점이 좋았다.