※ 이클립스에서 프로젝트명 바꿔줄 때 할 것
C:\Users\bitcamp\git\bitcamp-Study\java-lang-boot\settings.gradle
C:\Users\bitcamp\git\bitcamp-Study\java-lang-boot\app\build.gradle
위 2개의 파일에서 프로젝트명을 변경해 준 후, $ gradle eclipse 명령어 사용한다.
@RestController
@RequestMapping("/lang/literal/exam5")
public class Exam5 {
@GetMapping("/test1")
public String test1() {
return "문자1: " + 'A' + '가';
//문자1: A가
}
@GetMapping("/test2")
public String test2() {
return "문자2: " + '\u0041' + '\uac00';
// 문자에 대한 유니코드 값 지정해도 됨
// 문자2: A가
}
@GetMapping("/test3")
public String test3() {
return "문자3: " + (char)0x41 + "," + (char)0xac00;
// 문자 코드를 정수값으로 지정한다. 대신 문자 코드임을 표시해야 한다.
// 문자3: A,가
}
@GetMapping("/test4")
public String test4() {
return "문자4: " + (char)65 + "," + (char)44032;
// 문자 코드값은 그냥 정수값이다
// 문자4: A,가
}
}
1) 정수
2) 부동소수점
3) 문자
1) ASCII (American Standard Code for Information Interchange)
2) ISO-8859-1 (ISO-latin-1) (8비트 크기의 번호를 부여),
3) EUC-KR (16비트 크기의 번호를 부여)
4) 조합형
5) MS949(CP949)
6) UNICODE(UCS2=UTF-16)
7) UTF-8 (유니코드 변형 포맷)
'A'라는 문자를 저장할때도, 출력할때도 무조건 같은 규칙을 따라야 한다.
7비트는 0 ~ 127의 최대 128자가 저장이 가능하다. 이중에서 95개의 공백을 포함한 출력 가능 문자와 (영어 대소문자(52), 아라비아 숫자(10), 특수문자(32), 공백(1)) 33개의 출력 불가능 제어 문자로 이루어진다.
우리나라도 영어엔 이 방식을 사용한다.
영어 프랑스어 이탈리아어 등 8bit로 이루어진다.(256자)
ASCII 128자 + 프랑스어등 128자 => 256자
한글 음절에 대한 규칙이 없다.
iso-8859-1 에 한글음절 2350자가 포함된 규칙이다. (2byte)
국제표준이어서 리눅스나 유닉스를 지원한다.
2350자가 정의될 당시엔 모든 한글이 다 정의되지 않았다. 따라서 숫자가 지정되지 않아 입출력이 되지 않는 경우가 있어 "똠방각하"의 경우 "또ㅁ방각하" 이런식으로만 써야 한다.
초성 5비트 + 중성 5비트 + 종성 5비트 = 16비트(2byte)에 저장되는 방식이다.
첫 비트는 구분용으로, 한글인 경우 첫 비트가 1로 시작한다.
Windows 3.1까지 사용했었다.
-초성, 중성, 종성에 부여된 숫자를 합해서 문자 코드를 정한다.
-가장 한글다운 방식이지만, 16비트중에서 1로 시작하는 절반의 값을 한글이 모두 사용한다. 다른 나라의 문자를 넣을 공간이 없어서 국제표준은 될 수 없다.
-국제표준이 아니므로, MS 워드등에서 사용할수 없다.
EUC-KR 에 한글을 추가하여 만든 방식이다. (한글 합쳐서 11172자)
윈도우 95 부터 사용을 시작했다.
8비트 숫자로 정의 가능한 것은 그대로 8비트를 사용한다.
ISO-8859-1 문자를 예전처럼 1바이트 사용
-> 영어권에서는 유니코드를 처리하기 위해 따로 작업할 필요가 없으며, ISO-8859-1과 호환된다.
MAC OS
WINDOWS
제어 명령을 수행하는 명령어 또한 숫자의 형태로 저장된다.
줄바꿈은 윈도우에서 0D0A,리눅스, 유닉스에서 0A로 표기되고,
전자를 CRLF (Carrage Return , & Line Feed) 후자를 LF라 한다.
CR과 LF는 타자기의 동작을 모방한 것이다.
CR : 커서가 맨 왼쪽으로 이동
LF : 줄 한 줄 아래로 감
탭, 백스페이스 등등 모두 값이 있다.
4바이트에 값을 저장하고 나면, 이걸 정수, 부동소수점, 혹은 2개의 문자로 읽는지 알 수가 없다.
메모리에 저장된 값에 대해 정보가 주어지지 않으면 어떻게 읽어야 될지 알 수 없으므로, 값을 담는 메모리인 변수로 구분한다.
int v; 4바이트, 정수
long v; 8바이트, 정수
float v; 4바이트, 부동소수점
double v; 8바이트, 부동소수점
char v; 2바이트, utf-16 코드값
boolean v; 4바이트, true & false를 가리키는 숫자
byte v; 1바이트
short v; 2바이트
boolean의 경우 1바이트가 아니다.
--java SE 17에서도 몇바이트인지 써놓지 않았음.
--JVM Spec에선 boolean을 따로 고려하지 않았음.
--하나면 JVM의 int 데이터 타입의 값을 사용
--배열로 다루면 각각의 boolean은 byte 데이터 타입의 값을 사용.