티스토리 뷰

Java

java -2) 타입

kingsubin 2020. 7. 8. 01:22

변수(Variable)

데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미한다.

즉, 변수란 데이터를 저장할 수 있는 메모리 공간을 의미하며, 저장된 값은 변경될 수 있다.

 

- 이름 생성 규칙

1. 영문자,숫자,언더스코어,달러로만 구성 가능

2. 숫자로 시작 불가능

3. 공백 불가능

4. 미리 정의된 키워드 불가능

 

- 변수의 종류

1. 기본형(primitive type) 변수

2. 참조형(reference type) 변수

 

- 정수형 : byte, short, int ,long

- 실수형 : float, double

- 문자형 : char

- 논리형 : boolean

 

- 변수의 선언

1. 변수의 선언만 하는 방법

2. 변수의 선언과 동시에 초기화 하는 방법

 


상수(constant)

상수란 변수와 마찬가지로 데이터를 저장할 수 있는 메모리 공간이다.

하지만 상수가 변수와 다른 점은 프로그램이 실행되는 동안 저장된 데이터를 변경할 수 없다는 점이다.

 

상수를 만드는 일반적인 방식은 final 키워드를 사용하는 것이다.

ex) final int AGES = 30;

 

일반적으로 상수는 모두 대문자를 사용하여 선언한다.

 

- 리터럴

정수형, 실수형, 논리형, 문자형, 문자열, null

리터럴 타입을 명시해주는 접미사를 리터럴 타입 접미사 (literal type suffix)라고 한다.

long -> L or l

float -> F or f

double -> D or d (생략 가능)

 


기본타입(primitive type)

타입은 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 역할을 한다.

자바에서는 여러 형태의 타입을 미리 정의하여 제공하는데, 이것을 기본타입 이라고 한다.

기본타입의 종류는 모두 8종류이며, 크게는 정수형, 실수형, 문자형, 논리형 타입으로 나눌 수 있다.

해당 타입이 표현할 수 있는 범위를 벗어난 데이터를 저장하면, 오버플로 (overflow)가 발생해 전혀 다른값이 저장될 수 있다.

또한, 언더플로우(underflow)란 해당 타입이 표현할 수 있는 최소 범위보다 작은 수를 저장할 때 발생하는 현상이다.

 

- 실수형타입

기본형은 double이다.

 

- 문자형타입

C, C++에서는 아스키코드(ASCII) 를 사용하여 문자를 표현한다.

아스키코드는 영문 대소문자를 사용하는 7비트의 문자 인코딩 방식이다.

문자 하나를 7비트로 표현하므로, 총 128개의 문자를 표현할 수 있다.

 

하지만 자바에서는 유니코드(unicode)를 사용하여 문자를 표현한다.

아스키코드는 영문자와 숫자밖에 표현 못하지만, 유니코드는 각 나라의 모든 언어를 표현할 수 있다.

유니코드는 문자 하나를 16비트로 표현하므로, 총 65,536개의 문자를 표현할 수 있다.

 

- 논리형타입

논리형인 true, false 둘 중 한 가지 값만을 가질 수 있는 불리언 타입을 의미한다.

자바의 기본 타입 중 논리형 타입은 boolean이고 기본값은 false이다.


실수의 표현

컴퓨터에서 실수를 표현하는 방법은 정수에 비해 훨씬 복잡하다.

왜냐하면, 컴퓨터에서는 실수를 정수와 마찬가지로 2진수로만 표현해야 하기 때문이다.

실수를 표현하기 위한 방법들로 현재는 다음과 같은 방식이 사용되고 있다.

 

1. 고정 소수점 (fixed point)방식 

실수는 보통 정수부와 소수부로 나눌 수 있다.

따라서 실수를 표현하는 가장 간단한 방식은 소수부의 자릿수를 미리 정하여, 고정된 자릿수의 소수를 표현하는것 이다.

 

ex) 32 bit 의 경우

하지만 이 방식은 정수부와 소수부의 자릿수가 크지 않으므로, 표현할 수 있는 범위가 매우 적다는 단점이 있다.

 

2. 부동 소수점(floating point)방식

실수는 보통 정수부와 소수부로 나누지만, 가수부와 지수부로 나누어 표현할 수도 있다.

부동 소수점 방식은 이렇게 하나의 실수를 가수부와 지수부로 나누어 표현하는 방식이다.

 

부동 소수점 방식은 다음 수식을 이용하여 매우 큰 실수까지도 표현할 수 있다.

 

현재 대부분의 시스템에서는 부동 소수점 방식으로 실수를 표현하고 있다.

 

- 부동 소수점 방식의 오차

부동 소수점 방식에 의한 실수의 표현은 항상 오차가 존재한다는 단점을 가지고 있다.

이 공식을 사용하면 표현할 수 있는 범위는 늘어나지만, 10진수를 정화갛게 표현할 수는 없게 된다.

따라서 컴퓨터에서 실수를 표현하는 방법은 정확한 표현이 아닌 언제나 근사치를 표현하는 것이다.

 

이는 자바뿐만 아니라 모든 프로그래밍 언어에서 발생하는 기본적인 문제이다.


타입 변환(type conversion)

하나의 타입을 다른 타입으로 바꾸는 것을 타입 변환이라고 한다.

자바에서는 boolean형을 제외한 나머지 기본 타입 간의 타입 변환을 자유롭게 수행할 수 있다.

 

- 타입 변환의 종류

1. 묵시적 타입 변환(자동 타입 변환)

2. 명시적 타입 변환(강제 타입 변환)

 

-묵시적 타입 변환(자동 타입 변환, implicit conversion)

묵시적 타입 변환이란 대입 연산이나 산술 연산에서 컴파일러가 자동으로 수행해주는 타입 변환을 말한다.

자바에서는 데이터의 손실이 발생하지 않거나, 데이터의 손실이 최소화되는 방향으로 묵시적 타입 변환을 진행한다.

또한, 자바에서는 데이터의 손실이 발생하는 대입 연산은 허용하지 않습니다.

 

 

- 명시적 타입 변환(강제 타입 변환, explicit conversion)

명시적 타입 변환이란 사용자가 타입 캐스트 연산자 () 를 사용하여 강제적으로 수행하는 타입 변환을 말한다.

 

변환시키고자 하는 데이터의 앞에 괄호(())를 넣고, 그 괄호 안에 변환할 타입을 적으면 된다.

자바에서는 이 괄호를 타입 캐스트(type cast) 연산자라고 한다.

 

 

※출처

tcpschool.com/java/java_datatype_variable

'Java' 카테고리의 다른 글

JPA - 6. 프록시와 연관관계 관리  (0) 2020.07.25
JPA - 5. 상속관계 매핑  (0) 2020.07.25
java - 6) 클래스  (0) 2020.07.20
java - 5) 배열  (0) 2020.07.19
java - 1  (0) 2020.07.05