본문 바로가기

프로그래밍 공부/Java

Java - 데이터 타입과 기초

Java에서 다루는 데이터 타입

정수형

데이터 타입 크기 범위
byte 1 byte -128 ~ 127
short 2 byte -32768 ~ 32767
int 4 byte -(2^31) ~ (2^31)-1
long 8 byte -(2^63) ~ (2^63)-1

실수형

데이터 타입 크기 범위
float 4 byte -3.4E38 ~ 3.4E38
double 8 byte -1.7E308 ~ 1.7E308

문자형

데이터 타입 크기 범위
char 2 byte unicode

논리형

데이터 타입 크기 범위
boolean 1 byte true / false

정수형, 실수형, 문자형 그리고 논리형 데이터 타입은 기본 타입(Basic type)으로 특징으로는 크기가 정해져 있다는 것이다.

레퍼런스 타입(참조형 / Reference type)

  1. 배열에 대한 참조
  2. 클래스에 대한 참조
  3. 인터페이스에 대한 참조

문자열

기본 데이터 타입에 속하지 않고 'String' 클래스를 이용해 선언한다. 문자열 표현은 ""(큰 따옴표)로 표현한다. 문자열과 문자열 간의 연결은 + 연산을 이용해 연결한다.

변수 선언

int i;
double d;
char c1, c2;

JavaScript와 비슷하나 Java에서는 각각의 데이터 타입이 존재한다. JavaScript에서는 var, let 그리고 const의 3가지를 사용하나 Java에서는 반드시 데이터 타입에 입각한 변수명의 형태로 선언하여야 한다.

리터럴(Literal)

1. 정수 리터럴

Java에서 정수 리터럴은 int 타입으로 컴파일 된다. long 타입으로 지정하고자 할 때는 숫자 뒤에 L 또는 l을 붙인다.
예시 : int i = 100; 또는 long l = 100L;

2. 실수 리터럴

실수 리터럴은 double 타입으로 컴파일 되고 숫자 뒤에 F 또는 f를 붙이면 float 타입, D나 d를 붙이면 double 타입으로 강제 변환된다.
예시 : double d1 = 1.23; 또는 double d2 = 1.23D; 또는 float f = 1.23F;
*위의 세 가지 예시는 모두 1.23을 표현한 것이다.

3. 문자 리터럴

''(작은 따옴표)로 문자를 표현하거나 '\n'다음에 유니코드 값을 입력해 표현한다.
예시 : char c1 = 'A'; 또는 char c2 = '\uac00'; 또는 char c3 = '\n';
*char c2 = '\uac00';은 '가'라는 문자를 표현한 유니코드이다.
*char c3에서 '\n'은 JavaScript의 이스케이프 문자이다. Java에서는 이스케이프 시퀸스(Escape sequence)라고 한다.

4. 논리 리터럴

예시 : boolean b1 = true; 또는 boolean b2 = 5 < 3;
*boolean b2 = 5 < 3;은 결과적으로 false이다.
*Java에서는 1와 0을 true와 false로 사용할 수 없다. 따라서 boolean b = 1;을 입력하면 오류가 발생하므로 주의 해야한다.

5. 문자열 리터럴

""(큰 따옴표)로 문자열을 묶어 표현한다.
예시 : String str = "Hello Java!";
*주의할 점으로 문자열은 기본 데이터 타입에 포함되지 않는다.

자동 타입 변환

수식내에서 =(대입 연산자)의 좌/우의 피연산자 간의 자료형이 일치하지 않을때 발생한다.

자료형의 우선순위

byte short / char int long float double
<- 데이터 손실이 발생한다.(범위가 좁다.) 데이터 손실이 발생하지 않는다.(범위가 넓다.) ->

범위가 넓은 데이터를 범위가 좁은 데이터로 변환시 데이터의 손실이 발생하고 '컴파일 오류'가 발생하므로 주의해야 한다.

강제 타입 변환

의도적으로 형 변환 연산자를 사용해 강제로 타입을 변환하는 방법이다. 다른 말로 캐스팅(Casting)이라고 부른다.
예시 : int i = (int)12.345;
*12가 출력이 된다. int 정수형이기 때문에 소수점 부분의 데이터 손실이 발생한다.

 

 

'프로그래밍 공부 > Java' 카테고리의 다른 글

Java - 반복문으로 별찍기 예제  (0) 2020.01.23
Java - 반복문  (0) 2020.01.21
Java - 조건문  (0) 2020.01.21
Java - 연산자  (0) 2020.01.21
Java - 출력과 입력  (0) 2020.01.21