[Java] Ch02_3. 기본형(primitive type)

토끼는 개발개발·2022년 1월 5일
0

Java

목록 보기
10/33
post-thumbnail

📌 Chapter02. 변수(Variable)


✏️ 3. 기본형(primitive type)


3.1 논리형 - boolean

논리형은 'boolean' 한가지이며, boolean형 변수에는 true와 false 중 하나를 저장할 수 있다. 기본값은 false이다.

boolean power = true;
boolean checked = False; // 에러. 대소문자가 구분됨. true 또는 false만 가능


3.2 문자형 - char

문자형은 'char' 한가지이며, 단 하나의 문자만을 저장할 수 있다.

char ch = 'A' // 문자 'A'를 char 타입의 변수 ch에 저장
int code = (int)ch; // ch에 저장된 값을 int타입으로 변환하여 저장한다. '아스키코드'

▶ 특수문자 출력

char tab = '\t'; // 변수 tab에 탭 문자를 저장

예제 1

public class SpecialCharEx {

	public static void main(String[] args) {
		System.out.println('\'');
		System.out.println("abc\t123\b456"); // \b에 의해 3이 지워진다.
		System.out.println('\n'); // 개행(new line)문자 출력하고 개행
		System.out.println("\"Hello\"");
		System.out.println("c:\\");
	}

}

백스페이스로 3이 지워지지 않고 깨지는 현상은 이클립스 콘솔 버그 현상이다.



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

정수형에는 4개의 자료형이 있다. byte(1) < short(2) < int(4) < long(8) (단위는 byte)

  • n비트로 표현할 수 있는 정수의 개수: 2n개
  • n비트로 표현할 수 있는 부호있는 정수의 범위: -2n-1~2n-1-1
  • 1byte = 8bit

정수형 선택의 기준

byte와 short가 메모리를 조금 더 절약할 수 있지만, 연산 시 범위를 넘기 쉬우므로 대부분 int타입으로 선언하는 것이 좋다. 20억이 넘어서는 수를 다뤄야 할 경우는 long을 사용하면 된다.


오버플로우(overflow)

해당 타입이 표현할 수 있는 값의 범위를 넘어서는 것을 오버플로우라고 한다.



3.4 실수형 - float, double

실수형은 실수를 저장하기 위한 타입으로 float와 double이 있으며 실수형의 범위와 정밀도는 다음과 같다.


오버플로우와 언더플로우

실수형에서 오버플로우가 발생하면 변수의 값은 '무한대'가 된다.
언더플로우는 실수형으로 표현할 수 없는 아주 작은 값, 즉 양의 최소값보다 작은 값이 되는 경우를 말하며 이 경우 변수의 값은 0이 된다.


정밀도

float타입의 정밀도가 7자리라는 것은, '7자리의 10진수를 오차없이 저장할 수 있다는 뜻'이다.

예를 들어, float 타입의 변수f에 '9.123456789123456789'를 저장한다면, 저장된 값은 '9.12345699999999999'이 될 수 있다.
정밀도가 7자리이므로 두 값의 앞의 7자리 값만 오차없이 저장되는 것이다.


예제 2


public class FloatEx1 {

	public static void main(String[] args) {
		float f = 9.12345678901234567890f;
		float f2 = 1.2345678901234567890f;
		double d = 9.12345678901234567890d;
		
		System.out.printf("123456789012345678901234%n");
		System.out.printf("f	: %f%n", f); // 소수점 이하 6째자리까지 출력
		System.out.printf("f	: %24.20f%n", f); //전체 24자리 중 20자리는 소수점이하의 수를 출력
		System.out.printf("f2	: %24.20f%n", f2);
		System.out.printf("d	: %24.20f%n", d);

	}

}

저장 공간의 한계로 오차가 발생하여 빈자리가 공백과 0으로 채워지는 것을 볼 수 있다.



참고
자바의 정석(저자: 남궁성)


오늘의 한 줄

앞에서 다뤘던 기본형에 대해 더 자세히 다뤘다.
실수와 자릿수를 지정하는 방법이 익숙하지 않으므로 예제를 통해 더 연습해야 할 것 같다.

다음 포스팅은 형변환으로 변수 챕터의 마지막 포스팅이 되겠다.

profile
하이 이것은 나의 깨지고 부서지는 기록들입니다

0개의 댓글