public class DoubleTest {
public static void main(String[] args) {
double dNum = 3.14;
float fNum = 3.14F;
System.out.println(dNum); // 3.14
System.out.println(fNum); // 3.14
}
}
자바에서 실수는 기본적으로 double을 자료형으로 사용합니다. => double dNum = 3.14;
다른 실수 자료형인 float도 사용할 수도 있는데 그때는 값뒤에 f, F 식별자 넣어서 사용해야 합니다.
자바에서는 실수는 부동 소수점 방식을 사용하여 표현합니다.
부동 소수점 방식은 가수부부과 지수부를 따로 나누어서 저장하기 때문에 아주 넓은 범위에 실수를 표현 할 수 있지만 0을 제대로 표현 못하기에 약간의 오차가 생기는 문제가 있습니다.
public class DoubleTest2 {
public static void main(String[] args) {
double dNum = 1;
for(int i = 0; i <10000; i++) {
dNum = dNum + 0.1;
}
System.out.println(dNum); //1001.000000000159
}
}
위에 예제에서 dNum = 1001 이어야 하지만 소숫점자리수가 생기는 오차가 발생합니다. 이것이 부동소수점의 오차이지만 자바에서는 이 정도의 오차를 감수하고 더 넓은 실수범위를 표현할 수 있는 부동소수점 방식을 사용합니다.
수학에서의 명제와 같이 true, false 값만 나타내는 자료형입니다. 그래서 1byte만 사용는 자료형입니다.
public class BooleanTest {
public static void main(String[] args) {
boolean isMarried = false;
System.out.println(isMarried); //false
var i = 10;
System.out.println(i); // 10
}
}
논리자료형은 boolean 자료형으로 표현되고 그 값으로는 true와 false만 올 수 있습니다.
자바와 같은 컴파일 언어는 항상 자료형을 명확히 쓰지만 자바10부터 지역변수(중괄호 안에서 선언되는 변수)의 한에서 지역 변수 자료형 추론(local variable type inference)으로 자료형 없이 변수를 선언 할 수 있습니다.
위에 var i = 10; 처럼 int가 아닌 var으로 변수를 선언해도 자바에서 알아서 int로 자료형을 추론하여 에러가 나지 않고 값이 출력되는 것을 볼 수 있습니다.