※ 변수 : 변할 수 있는 값이 저장된 메모리 공간
javascript는 대입되는 값에 따라 자료형*이 바뀜
java는 변수의 자료형을 미리 결정한다. ex) int i = 1; 정수만 가능
* 자료형
- 기본형(primitive date type) : 직접 값을 갖는 구조, 자료형에 따라 1~4byte
기본 자료형 예약어가 8개(숫자, 문자, 논리형)
· 숫자형
▷ 정수형 : byte(1 byte 메모리, 숫자 127까지), short(2 byte 메모리), int(4 byte 메모리), long(8 byte 메모리 확보)
뒤로 갈수록 더 큰 값 표현, 작은 자료형은 큰 자료형으로 자동 형변환된다. 거꾸로는 강제 형변환 해야함.
강제형변환(casting)은 s=(short) i; 이 연산자를 cast 연산자라고 함.
롱타입은 long l = 12만 쓰면 int로 인식해서 long l = 12L/12l 로 써줘야함
▷ 실수형 : float(4 byte 메모리), double (8 byte 메모리 확보), 뒤로 갈수록 더 큰 값 표현
float f = i, i = (int) f; 강제형변환
float f1 = 12.3 double 타입이기 때문에 float f1=12.3F/12.3f로 써야함.
float f = i; 더 작은 메모리공간이지만 long 타입은 float로 자동형변환 가능,
float은 실수(지수)를 사용해서 정수보다 큰 값 표현 가능
float f = i; f=l; l=(long)f;
float는 long 타입으로 자동형변환 불가능.
ex) s o p(123); 컴파일러는 123을 int로 인식 = 연산을 할 때 4byte는 있어야함, 정수형은 int가 default다
ex) s o p(123.4); 컴파일러는 123.4을 double로 인식 = 실수는 double이 default다
s o p(System.out.println)
· 문자형
▷ char : 'A', '1', '' 안에 들어가면 문자 charcter라고 읽지X charcter는 따로 있음, 2byte메모리, 16비트 유니코드 체계
■ 문자조합
- ASCII (1byte)
: 키보드로 입력해서 컴퓨터로 보낸 값을 1byte(8bit) 메모리로 기억을 시킴, 영문자, 숫자형문자, 특수문자
- Multi byte CharSet (2byte) 체계의 문자조합
: EUC-KR 2byte 국가차원에서 만든 문자조합
: SHIFT-JIS 2byte 일본어 국가차원에서 만든 문자조합
: MS949 2byte 마이크로소프트에서 만든 문자조합
→ 다양한 Multi byte CharSet을 표준화한게 UNICODE
- UNICODE (2byte)
: 다국적언어를 처리하는 표준화된 문자조합
: 영어 1byte도 가능한데 굳이 2byte로 처리하다 보니 1byte 메모리 낭비하는 문제점 발생
: Java는 기본 유니코드 체계를 채택
- UTF-8 (1~3byte)
: 유니코드 텍스트 포맷(유니코드의 한 종류)
: 영어의 경우 1byte만 사용
: 다국적언어의 경우 최대 3byte까지 사용
※ 안드로이드앱 - 자바 웹 서버
안드로이드앱에서 UTF-8로 '가' 3byte, 'A' 1byte
이걸 UNICODE 쓰는 자바웹서버로 보내면 2글자라 4byte로 보내야하는데 이미 안드로이드 앱의
3byte '가' 1byte 모자라서 깨짐, 앞에서 모자란 1byte가 뒤로 와서 'A'도 깨짐
→ 처음부터 맞춰주던가 encoding을 해서 맞춰줘야 글씨가 안깨짐
■ 아스키 코드표
- enter : 아스키코드에선 10 LF(LineFid), 아스키코드에선 13 CH, 10+13 합쳐진 형태 3개 중 하나를 사용
- 0 : 아스키코드에선 48
- 1 : 아스키코드에선 49
- A : 아스키코드에선 65
- a : 아스키코드에선 97
· 논리형
▷ boolean : 1byte 메모리, TRUE/FALSE 예약어만 사용 가능, 다른 자료형과 형변환 불가능함
- 참조형 : 기본형을 제외한 모든 자료형, 4바이트의 메모리 확보, 주소값을 받음
'언어 > Java' 카테고리의 다른 글
if 조건문, Math.random() 함수 (0) | 2023.07.25 |
---|---|
IDE 아닌 방법으로 Java 사용할 때 경로 지정하기 (0) | 2023.07.25 |
연산자 (0) | 2023.07.24 |
IDE 아닌 방법으로 Java 사용해보기 (0) | 2023.07.24 |
Java란? (0) | 2023.07.24 |