본문 바로가기

Java

[Java 기초 공부 03] 자바 자료형과 형변환

오늘은 자바에서 쓰는 자료형과 형변환에 대해 정리했다.

 

 

 

상수

- 정수형 상수  - ex) 10, 20, -60

- 실수형 상수  - ex) 1.2  , 3,14321

- 문자형 상수  - ex) 'A', 'B'

- 문자열 상수  - ex) "ABCD", "A"

- 논리형 상수  - ex) true, false

- 상수변수 : final 변수는 변수이름을 대문자로 지정한다.

 

final boolean BOOL = true; 

 

- 아스키코드 (ASCII CODE) : 1byte , .소문자, 숫자, 공백, 특수문자  'A' -> 65  |  'a' -> 97

 

System.out.printf("%c%c\n", 'A','B');  //-> AB
System.out.println('A'+'B'); //-> 131
System.out.println(""+'A'+'B'); //-> AB

char ch = 'A';
ch = 65; // 65를 할당해도 ch는 char타입이므로 문자에 맞게 출력된다.
System.out.println("문자 : " + ch); // -> 문자 : A

 

- 유니코드 (UNI CODE) : 2byte, 한글, 중국어 등 아시아권 문자는 1byte 체계로 표현불가.
   ** 자바는 유니코드 체계의 언어이다.

  유니코드('\u') 값은 16진수로 표현해야 한다.(16진수 4개필요)

 

 

 

char ch = 'A';
ch = 65; // 65를 할당해도 ch는 char타입이므로 문자에 맞게 출력된다.
ch = '\u0041'; // 유니코드(16진수 4자리)
ch = '\uAC00';
System.out.println("문자 : " + ch); //-> 문자 : 가

 

 

 

 

형변환

- 형변환을 통해 char ch일때, 잠시 정수형으로 인식하게 할 수 있다. (논리형은 불가)

 

char ch = 'a';
System.out.println((int)ch); // (int)를 붙여준다.

 

- 연산을 위해서는 기본적으로 데이터타입을 맞춰주어야 한다.

- 자료형의 크기 비교

byte < short < int < long < float < double
          char  < int < long < float < double

 

- 연산자를 기준으로 좌.우의 변수의 형이 다를 때 사용한다. 강제적형변환과 묵시적형변환 2종류가 있다.

   * 묵시적 형변환 : 두 데이터의 자료가 다를 때 따로 표기가 없으면 큰수를 따라간다.

 

System.out.println('A'+20); //-> 85 (따로(int) 안붙여도 'A'는 int를 따라간다.)
System.out.println(12.3+45); //-> 57.3 (double을 따라간다.)
double num = /*(double)*/ 12;

 

                    대입 시, 실수는 정수를 포함하므로 double 생략가능

 

 * 강제적 형변환 : 반드시 타입을 명시해야한다.

 

int num2 = (int)12.34; // 이 경우에는 정수형임을 반드시 명시해야한다.

 

 

- 인코딩방식 (메모리에 차이가 있다.)

 * EUC-KR : 유니코드 기반 [ 한글 1자를 2byte형태로 인식 ]
 * UTF-8 :
한글 1자를 3byte형태로 인식