컴퓨터에서 문자 표현 원리 문자가 모니터 까지 보이게 까지의 원리
아스키 코드를 이용한 문자와 숫자의 일대일 매칭
문자를 숫자로 변형 (인코딩)
숫자를 문자로 변형 (디코딩)
아스키코드는 1byte로 127개만 표현되어있다.
컴퓨터는 기본적으로 연산할때 절대 자료형을 한가지로 맞춘다.
1. 아래가 의도하지 않는 결과를 출력한다 이유와 고치는 방법을 설명하시오.
int num1 = 3;
int num2 = 4;
double result = num1 / num2;
System.out.println(result);
double result = num1 / num2; 에서의 연산값은 이미 타입 형이 int 인 상황에서의 0.75로 받아져있고, int형이기 때문에 0 인 상황에서 double 변수에 저장되어 그대로 출력된 값인 0.0이 출력되어진다.
즉 이를 해결하기 위해서는
int num1 = 3;
int num2 = 4;
double result = (double) num1 / num2;
System.out.println(result);
이처럼, 캐스팅을 해주어야 double 형으로 변환되어 값이 올바르게 저장될 수 있다.
2. 상수란 무엇이며 변수와의 차이는?
변수 지정은 몇번이고 재 할당하여 사용하는 값이기 때문에, 여러번 값을 할당할 수 있지만 상수는 그렇지 않고 한번의 변수 선언에 딱 한번만 값을 할당한 값들을 의미한다.
자바에서의 일반적인 상수 변수에 값을 딱 한 번만 할당할 수 있으면 그것은 상수 한 번 할당된 값은 변경이 불가능함
변수지정 앞에 final을 붙여주는 식으로 지정할 수 있다.
final int num1 = 1;
리터럴 (상수)
자료형을 기반으로 표현이 되는 상수 반드시 int형으로 인식하기로 약속되어 있음 리터럴이라는 표현은 상수라는 표현으로 대신하는 경우가 많음 5 , 7 따위는 ' 정수형 리터럴 ' 이라고 하고, 3.3 따위는 ' 실수형 리터럴 ' 이라고 한다
3. 상수를 이름 짓는 방법은?
상수의 이름은 관례적으로 모두 대문자로 작성하며, 이름이 두 단어 이상으로 지어질 경우 _ (언더바)를 이용하여 연결한다.
final static void class JAVA_CLASS
4. 초기화란 무엇인가?
변수를 선언한 후에, 처음으로 값을 저장하는 것을 변수의 초기화라고 한다.
5. 리터럴이란 무엇인가요?
자료형을 기반으로 표현이 되는 상수를 의미한다, 정수형 리터럴, 상수형 리터럴로 나누어져 있고 ' 상수 '라는 표현으로 대신하는 경우가 많다
6. 아래의 내용이 에러가 나는 이유와 수정 방법은?
System.out.println(3147483647 + 3147483648);
자바 계산시, 기본적으로 int형으로 계산이 진행되는데, int형의 범위를 넘어서서 에러가 발생한다, 해결하기 위해서는
System.out.println(3147483647L + 3147483648L);
숫자 뒤에 명시적 형 변환을 하여 계산해 주어야 한다. 함수허용값의 최대치를 넘어가는 것을 오버플로우(overflow) 라고 한다.
integer number too large 라는 오류메시지는 정수의 기본 표현 타입형(int)의 범위를 넘어가면 생긴다. 이를 해결하기 위에서는 큰 범위의 숫자뒤에 L 을 붙이면 int형이 아닌 long형으로 표현해 달라는 요청이다.
7. 자동 형변환과 명시적 형변환에 대하여 설명하시오.
자동 형변환은 정해진 규칙이 존재한다. 자료형의 크기가 큰 방향으로 형 변환이 반드시 일어나며 크기에 상관없이 정수 자료형보다 실수 자료형을 우선적으로 적용시킨다.
자동 형 변환
두 피연산자의 자료형이 일치해야 동일한 방법을 적용하여 연산을 진행할 수 있다, 피연산자의 자료형이 일치하지 않으면 형의 변환을 통해서 일치를 시켜주어야 한다.
자동 형 변환 법칙
byte short
int long float double
char
int 이하에서는 모두 int로 치환시켜 연산되고, long - float 경우는 실수 자료형이 우선으로 적용되어 long형이 float형으로 치환되어서 연산된다.
명시적 형 변환
double pi = 3.14;
int cunt = (int)pi;
자료형의 크기가 큰 방향으로 형 변환이 일어난다. 자료형의 크기에 상관없이 정수 자료형보다 실수 자료형이 우선이다.
8. 아래의 출력 결과를 확인하고, 130이 나오는 이유를 설명하시오.
System.out.println('A'); //char형으로 인식, 메모리에 올라갈 때 65값이 들어감
System.out.println('A' + 'A'); //char형으로 65메모리에 올리고, int형으로 자동형변환
결과
A
130
System.out.println('A');
의 출력값은 char 형으로 출력되어서 문자 그대로 출력이 된다.
System.out.println('A' + 'A');
의 출력값은, 연산을 진행할 때 자동으로 int형으로 변환되는데 'A'의 아스키코드값은 65이기 때문에, 두 형의 계산은 int형의 값으로 치환된 65 + 65가 더해져 130이 출력된다.
'SpringBoot > Java' 카테고리의 다른 글
22.04.13 족보 5일차 (0) | 2022.04.13 |
---|---|
22.04.12 족보 4일차 (0) | 2022.04.12 |
22.04.08 족보 2일차 (0) | 2022.04.08 |
22.04.07 족보 1일차 (0) | 2022.04.07 |
22.04.07 백준 11720번 Java (0) | 2022.04.07 |