2022-12-30 금 / JAVA

권혁현·2022년 12월 30일
0

Java

목록 보기
6/44
post-thumbnail

리터럴(Literals)

ex) int num1 = 5 + 7;
5와 7을 메모리로 보낼때 데이터타입 int의 크기의 공간에 리터럴 상수로 각각 할당된다.

  • long형 상수(리터럴)의 표현 방법 -> 3147483648L

ex) double num2 = 3.3 + 4.5;
3.3이랑 4.5를 메모리로 보낼때 데이터타입 double의 크기의 공간에 리터럴 상수로 각각 할당된다.

  • float형 상수(리터럴)의 표현 방법 -> 3.0004999F

  • 실수형 상수의 e 표기법
    3.4e3 -> 3.4X10^3 = 3400.0
    3.4e-3 -> 3.4X10^-3 = 0.0034

10진수 외 리터럴의 표현 방식

  • 2진수
    0B111 -> 10
  • 8진수
    0123 -> 83
  • 16진수
    0x123 -> 291

형 변환

  • 정수형 데이터 타입중 int 밑의 데이터타입들은 연산시 int로 자동 형변환 됨

  • 정수형과 실수형이 연산하게 되면 실수형으로 나옴.

명시적 형 변환

  • 명시적 형 변환 과정에서 실수형을 정수에 담을 때 소수점 아래의 값은 버림 처리 됨

  • 명시적 형 변환 과정에서 데이터 타입이 더 큰것을 작은걸로 형 변환 할때는 오버플로우가 발생하여 이상한 값이 출력된다.

면접 족보

1. 상수란 무엇이며 변수와의 차이는?

  • 상수는 초기화 후 값이 변하지 않는 수, 변수는 계속 바뀌는 수

2. 초기화란 무엇인가?

  • 데이터 값을 최초로 넣는 것

3. 리터럴이란 무엇인가요?

  • 데이터타입이 정해지지 않은 값이 메모리에 할당될 때 정수면 int 크기, 실수면 double 크기의 공간에 상수로 저장되는 값

4. 아래의 내용이 에러가 나는 이유와 수정 방법은?

System.out.println(3147483647 + 3147483648); //에러남
  • 리터럴 값이 메모리에 할당될 때 기본적으로 int 크기의 공간에 할당 되는데, 리터럴 값이 int의 크기보다 큰 값 이므로 메모리에 할당을 할 수 없어서 에러가 남

5.자동 형변환과 명시적 형변환에 대하여 설명하시오.

  • 자동 형변환
    서로 다른 데이터 타입끼리 연산시 작은 데이터 타입을 큰 데이터 타입에 맞춰 늘리는 것.

  • 명시적 형변환
    형변환 필요시 개발자가 원하는 데이터 타입으로 형변환을 하는 것

6.아래의 에러가 나는 이유를 설명하고 수정 하시오.

int a = 3;
int b = 4; 

double c = a / b;
System.out.println(c);
  • 정수형 int의 연산값은 소수점 아래의 값을 버리기 때문에 실제 사람이 기대한 값인 0.75가 아닌 0으로 연산이 된다. 그 후 0을 double 에 대입시켜도 당연히 0이 나오게 된다.
    원하는 값인 0.75가 나오게 하려면 아래와 같이 정수형인 int를 실수형인 double로 형변환을 해주어야 한다.
int a = 3;
int b = 4; 

double c = (double)a / b;
System.out.println(c);

7. 아래의 출력 결과를 확인하고, 130이 나오는 이유를 설명하시오.

System.out.println('A'); 
System.out.println('A' + 'A');
  • 'A'만 출력하면 char형으로 인식해 A가 나오지만, 연산하는 과정에서 자동 형변환이 일어나 int로 바뀌게 되므로 아스키코드상 A의 값인 65+65가 되어 130이 나온다.

0개의 댓글