(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

자료형 변환이란 데이터 형식(Type)을 변환하는 것으로 자동 형 변환(Implicit Conversion)과 강제 형 변환(Explicit Conversion)으로 나누어 진다.

■ 자동 형 변환(Implicit Conversion) : 자동적으로 발생하는 형태의 변환으로 묵시적 형 변환이라고도 한다.

1) 대입 연산에서의 자동 형 변환

- 대입 연산시, =의 왼쪽 값이 기준이 되고, 이항 연산자(=, +,-, *, /)는 양쪽 모두의 자료형과 결과까지 같아야 한다.

2) 산술 연산 과정의 자동 형 변환

- 산술 연산 과정에서의 형 변환은 데이터 손실이 최소화되는 방향(범위가 큰쪽)으로 진행된다.

(long은 8바이트 float의 크기는 4바이트지만, 정수보다 실수의 표현범위가 더 크기 때문에 float로 변환된다.)

 

1
2
3
4
5
6
public class Main {
    public static void main(String[] args) {
        double d = 7;
        int i = 'A';
    }
}
cs

Line 3 : int 형이 double 형으로 변환

Line 4 : char 형이 int 형으로 변환

 

■ 강제 형 변환(Explicit Conversion) : 프로그래머가 명시적으로 형 변환을 요청하는 형태의 변환으로 명시적 형 변환이라고도 한다.

1
2
3
4
5
6
7
8
9
public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
 
        double f = a / b;
        double g = (double)a / b;
    }
}
cs

Line 6 : int형 a / b의 결과인 0이 double형으로 자동 형변환 되어 f에 0.0 저장

Line 7 : int형 a를 double형으로 강제 형변환하여 10.0이 되고, b도 a와 연산을 하면서 double로 자동 형변환 되어 10.0 / 20.0의 계산 결과가 g에 저장

'Java' 카테고리의 다른 글

자바(Java) 비트 연산자  (0) 2020.06.24
자바(Java) 연산자(Operator)  (0) 2020.06.23
자바(Java) 상수  (0) 2020.06.18
문자 인코딩(Character Encoding) ASCII, ANSI, Unicode, UTF  (0) 2020.06.17
자바(Java) 변수  (0) 2020.06.17

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

값을 변경하지 못하는 데이터를 상수라고 한다. 상수는 이름을 가지지 않는 리터럴(Literal) 상수와 이름을 가지는 심볼릭(Symbolic) 상수로 나누어 진다.

 

■ 리터럴(Literal) 상수

10이나 20과 같이 이름이 붙지 않은 고유의 값을 리터럴(Literal) 상수라고 한다. 이름이 없기 때문에 메모리 공간의 접근 자체가 불가능하며, 존재 의미가 없어지면 메모리에서 바로 소멸된다. 기본적으로 모든 정수형 상수는 int형, 실수형 상수는 double형으로 표현 및 저장된다.

1
2
3
4
5
public class Main {
    public static void main(String[] args) {
        int num = 100;
    }
}
cs

Line 3 : 변수 num에 대입하는 값인 100이라는 숫자 자체는 상수

 

■ 심볼릭(Symbolic) 상수

- 변수와 같이 이름이 부여된 변하지 않는 값을 심볼릭(Symbolic) 상수라고 한다. 심볼릭(Symbolic) 상수를 사용하는 가장 큰 이유는, 사용자가 임의로 값을 변경할 수 없도록 하기 위해서이다. final 키워드를 통해 심볼릭(Symbolic) 상수를 정의할 수 있다.

1
2
3
4
5
6
public class Main {
    public static void main(String[] args) {
        final double PI = 3.14;
        //PI = 10
    }
}
cs

Line 3 : PI라는 이름의 상수를 선언하고, 값을 3.14로 고정

Line 4 : PI라는 상수의 값을 변경하려고 시도하여 에러 발생

'Java' 카테고리의 다른 글

자바(Java) 연산자(Operator)  (0) 2020.06.23
자바(JAVA) 자료형 변환  (0) 2020.06.18
문자 인코딩(Character Encoding) ASCII, ANSI, Unicode, UTF  (0) 2020.06.17
자바(Java) 변수  (0) 2020.06.17
자바(Java) 정수, 실수의 표현방식  (0) 2020.06.17

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)

 

문자 인코딩(Character Encoding)이란 문자나 기호들의 집합을 컴퓨터에 저장하거나 사용할 목적으로 부호화하는 방법을 말한다. 자바(Java)는 유니코드(Unicode)에 기반하여 문자를 표현한다.

 

■ 아스키(ASCII)

- bit(비트) 문자 인코딩으로 0(0x00) ~ 127(0x7F)까지 총 128개의 부호가 사용

- 영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 부호 체계

- 한글과 같은 2바이트 이상의 코드를 표현 불가능

■ ANSI

- 영어 이외의 문자를 표현하기 위해 사용

- 2바이트 문자와 1바이트 ASCII 문자를 혼용하는 가변길이 인코딩

- 한글은 표현되지만 더 많은 문자들을 인코딩하지는 못함

 

■ Unicode

- 전 세계의 모든 문자를 일관되게 표현할 수 있도록 설계된 산업 표준

- 모든 글자를 2바이트로 표현

- 자바(Java)에서 사용하는 방식

 

■ UTF-8

- 유니코드 인코딩 중에 하나로 문자열을 8Bit 기반으로 저장

- ANSI 문자는 그대로, 아시아 문자는 3바이트로 가변 표기

 

■ UTF-16

- 문자열을 16Bit 기반으로 저장

- 한글을 2바이트로 저장할 수 있어서 영어와 한글을 함께 처리할 경우 편리

- ANSI와 호환이 안된다는 단점

'Java' 카테고리의 다른 글

자바(JAVA) 자료형 변환  (0) 2020.06.18
자바(Java) 상수  (0) 2020.06.18
자바(Java) 변수  (0) 2020.06.17
자바(Java) 정수, 실수의 표현방식  (0) 2020.06.17
2진수(Binary), 8진수(Octal), 16진수(Hex)  (0) 2020.06.16

+ Recent posts