정수
자바의 정수를 표현하기 위한 자료형은 int, long이다. (byte, short 등도 있지만 잘 사용하지 않는다.)
int와 long의 차이는 표현할 수 있는 숫자의 범위이다.
자료형 | 표현 범위 |
int | -2147483648 ~ 2147483647 |
long | -9223372036854775808 ~ 9223372036854775807 |
// 사용 방법
int age = 10;
long countOfStar = 8764827384923849L;
long 변수에 값을 대입할 때는 대입하는 숫자 값이 int 자료형의 최대값인 2147483647 보다 큰 경우 8764827384923849L과 같이 L 접미사(또는 소문자 l, 소문자 'l'은 숫자 1과 비슷하게 보이므로 추천하지 않는다.)를 붙여 주어야 한다. 만약 큰 숫자에 'L'과 같은 접미사를 누락하면 컴파일 에러가 발생한다.
실수
자바의 실수를 표현하기 위한 자료형은 float, double 이다.
float와 double의 차이 역시 표현할 수 있는 숫자의 범위이다.
자료형 | 표현 범위 |
float | -3.4 * 10의38승 ~ 3.4 * 10의38승 |
double | -1.7 * 10의308승 ~ 1.7 * 10의308승 |
// 사용 방법
float pi = 3.14F;
double morePi = 3.14159265358979323846;
자바에서 실수형은 디폴트가 double이므로 위의 예에서 보듯이 float 변수에 값을 대입할 때에는 3.14F 와 같이 F접미사(또는 소문자 f)를 꼭 붙여 주어야 한다. float 자료형에 값을 대입할 때 접미사를 누락하면 컴파일 에러가 발생한다.
또는 과학적 지수 표현식으로 다음과 같이 사용할 수 있다.
double d1 = 123.4;
double d2 = 1.234e2;
d1과 d2의 값은 123.4로 같다. d2의 e2는 10의 제곱(10의2승)을 의미한다. 즉 1.234∗10의2승 이 되어 123.4 가 되는 것이다.
8진수와 16진수
8진수와 16진수는 int 자료형을 사용하여 표시한다.
0(숫자 '0')으로 시작하면 8진수, 0x(숫자 '0' + 알파벳 'x')로 시작하면 16진수가 된다.
int octal = 023; // 십진수: 19
int hex = 0xC; // 십진수: 12
숫자연산
자바의 사칙연산은 실생활에서 일반적으로 사용하는 사칙연산과 다를 바가 없다. 자바는 +, -, *, / 기호를 이용하여 두 숫자간 사칙연산을 수행한다.
public class Sample {
public static void main(String[] args) {
int a = 10;
int b = 5;
System.out.println(a+b); // 15
System.out.println(a-b); // 5
System.out.println(a*b); // 50
System.out.println(a/b); // 2
}
}
%는 나머지 값을 반환하는 연산자이다. 7을 3으로 나누면 나머지는 1이 될 것이고 3을 7로 나누면 나머지는 3이 될 것이다.
// 예
public class Sample {
public static void main(String[] args) {
System.out.println(7 % 3); // 1 출력
System.out.println(3 % 7); // 3 출력
}
}
증감연산 (++, --)
자바는 ++, -- 기호를 이용하여 값을 증가하거나 감소시킬 수 있다. 이러한 ++, -- 기호를 증감 연산자라고도 한다.
int i = 0;
int j = 10;
i++;
j--;
System.out.println(i); // 1 출력
System.out.println(j); // 9 출력
++는 값을 1만큼 증가시키고 --는 값을 1만큼 감소시킨다.
++, --등의 연산자의 위치에 따라 다르다.
int i = 0;
System.out.println(i++); // 0 출력
System.out.println(i); // 1 출력
System.out.println(i++) 의 출력값은 i가 1만큼 증가되어 1 이 출력되어야 할 것 같지만 0 이 출력되었다. 그렇다면 변수 i의 값이 증가되지 않은것일까? 그 다음 문장인 System.out.println(i) 의 출력값을 확인 해 보니 1이 나온다.
그렇다면 i의 값은 증가된 것이다.
이런 결과가 나오는 원인은 변수 ++ 연산자의 위치 때문이다. 즉 i++ 와 같이 ++ 연산자가 변수명 뒤에 붙으면 해당 코드가 실행되는 순간에는 i 값이 변경되지 않는다. 다만 i++ 문장이 실행된 이후에 i값이 증가하게 된다. 이와는 반대로 i++ 대신 ++i라고 사용하게 되면 i 값이 먼저 증가된 후에 해당 코드가 실행된다.
- i++ : 값이 참조된 후에 증가
- ++i : 값이 참조되기 전에 증가
int i = 0;
System.out.println(++i); // 1 출력
System.out.println(i); // 1 출력
++i에 의해서 i값이 참조되기 전에 증가된것을 확인 할 수 있다.
--연산자도 ++연산자와 동일한 규칙을 따른다.
'Language > Java' 카테고리의 다른 글
[Java] 문자 (char) (0) | 2022.07.31 |
---|---|
[Java] 불리언 (boolean) (0) | 2022.07.31 |
[Java] 명명 규칙 (0) | 2022.07.31 |
[Java] 자바 기초 (0) | 2022.07.31 |
[Java] 로또 번호 만들기 (0) | 2022.07.30 |