JAVA - 02

Hyeongho·2022년 10월 25일

JAVA

목록 보기
2/4

1. 자료형

  • double : 8byte 실수 자료형
public class VariableDecl {

	public static void main(String[] args) {
		
		double num1, num2;	// 두 개의 변수 동시 선언
		double result;
		
		num1 = 1.0000001;
		num2 = 2.0000001;
		
		result = num1 + num2;
		System.out.println(result);
		
		/*
		 * result의 결과는 3.0000002 가 아닌
		 * 3.0000001999999997 가 출력됨
		 * 이유는 실수 표현에 오차가 존재하기 때문
		 */
	}
}

실수를 사용한 연산을 수행할 때 오차가 생기는 이유

두 실수 사이에서 표현될 수 있는 실수는 무한하기 때문

실수 표현을 메모리상에 올려야하는데 메모리는 유한, 실수는 무한함
무한인 실수를 메모리에 올리기 위해 유한으로 만드는 과정에서

메모리에 올라 갈 수 있는 실수의 MAX값, MIN값(=근사값)이
일정한 간격으로 고정되어 지정되어있다.

근사값으로 표현하기 때문에 정확성이 떨어져
오차가 발생할 수 밖에 없다.

///

  • int : 4byte 정수 자료형
public class VariableDecl {

	public static void main(String[] args) {
		
		int num3, num4;
		int result2;
		
		num3 = 2100000000;
		num4 = 2100000000;
		
		result2 = num3 + num4;
		System.out.println(result2);
        
        /*
         * 컴파일 에러는 발생하지 않음
		 * result2의 출력 결과는 -94967296
		 */
	}
}

int + int 의 계산 결과로 int 자료형의 최대값을 초과하는 경우

int 자료형 값을 서로 더해서 int의 최대허용값을 넘었을 경우
컴파일 에러가 뜨지 않는 이유는

연산 자체는 컴파일러가 아니라 CPU가 하는것이기 때문이다.

result2의 값이 int 자료형의 최대 허용값을 넘었기 때문에
원치 않은 이상한 값이 출력된다.

///

  • short : 2byte 정수 자료형
public class OperatePromotion {

	public static void main(String[] args) {
		
		short num1 = 11;
		short num2 = 22;
		
		short result = num1 + num2;
        // result를 short로 지정하면 에러 발생
		System.out.println(result);
	}
}

short + short 의 계산 결과의 자료형을 short로 지정하는 경우

자료형이 short인 num1과 num2를 더한 값이 33 임에는 변함이 없지만
CPU에서 + 연산을 진행한 후 그 값이 정수일 경우에는

int 자료형의 형태로 리턴시키기 때문에 결과값 변수의 자료형이
short인 경우 자료형끼리의 충돌이 일어나 error가 발생한다.

///

  • char : 2byte 문자 자료형
public class CharTypeUnicode {

	public static void main(String[] args) {
		
		char ch1 = '헐';
		char ch2 = '확';
		
		char ch3 = 54736;	// 문자 '헐'의 유니코드 값
		char ch4 = 54869;	// 문자 '확'의 유니코드 값
		
		char ch5 = 0xD5D0;
		char ch6 = 0xD655;
		
		System.out.println(ch1 + " " + ch2);
		System.out.println(ch3 + " " + ch4);
		System.out.println(ch5 + " " + ch6);	
	}
}

///

  • boolean : 1bit 논리 자료형
public class Boolean {

	public static void main(String[] args) {
		
		boolean b1 = true;
		boolean b2 = false;
		
		System.out.println(b1);
		System.out.println(b2);
		
		int num1 = 10;
		int num2 = 20;
		
		System.out.println(num1 < num2);
		System.out.println(num1 > num2);
	}
}

2. 내용 복습

1. 주석이란 무엇이며, 종류는?

2. 주석은 컴파일시 어떻게 되는가?

3. 들여쓰기는 왜 해야 되는가?

4. 변수란 무엇인가?

5. 변수선언의 의미는 무엇인가?

6. 8형제(자료형)을 써보세요(feat.외우세요).

7. int 형 범위는 어떻게 되는가?

8. int num; 을 메모리로 설명해 보세요.

9. 문자가 뿌려지는 원리에 대하여 설명하시오.

10. 아스키 코드에 대하여 설명하시오.

11. 2의 보수법이란?

12. 컴퓨터에서 음의 정수 표현 방법에 대하여 설명하시오.

13. -5의 컴퓨터 에서의 2진수 값을 나타내시오.

14. 실수에서 오차가 생기는 원인은 무엇인가?

15. 실수의 표현법(고정소수법, 부동소수법)을 설명하시오.
profile
Koguma

0개의 댓글