[Java] 자료형과 증감연산자 이해하기
- Language/Java
- 2019. 8. 25.
정수
자바의 정수를 표현하기 위한 자료형은 int, long 이다. (byte, short등도 있지만 거의 사용하지 않는다.)
int와 long의 차이는 표현할 수 있는 숫자의 범위이다.
다음과 같이 사용한다.
int age = 10;
long countOfStar = 8764827384923849L;
long 변수에 값을 대입할 때는 대입하는 숫자 값이 int 자료형의 최대값인 2147483647 보다 큰 경우 8764827384923849L과 같이 L 접미사(또는 소문자 l, 소문자 'l'은 숫자 1과 비슷하게 보이므로 추천하지 않는다.)를 붙여 주어야 한다. 만약 'L'과 같은 접미사를 누락하면 컴파일 에러가 발생한다.
실수
자바의 실수를 표현하기 위한 자료형은 float, double 이다.
float와 double의 차이 역시 표현할 수 있는 숫자의 범위이다.
다음과 같이 사용한다.
자바에서 실수형은 디폴트가 double이므로 위의 예에서 보듯이 float 변수에 값을 대입할 때에는 3.14F 와 같이 F접미사(또는 소문자 f)를 꼭 붙여 주어야 한다. float 자료형에 값을 대입할 때 접미사를 누락하면 컴파일 에러가 발생한다.
또는 과학적 지수 표현식으로 다음과 같이 사용할 수 있다.
d1과 d2의 값은 123.4로 같다. d2의 e2는 10의 제곱(102102)을 의미한다. 즉 1.234∗1021.234∗102 이 되어 123.4 가 되는 것이다.
8진수와 16진수
8진수와 16진수는 int 자료형을 사용하여 표기할 수 있다.
0(숫자 '0')으로 시작하면 8진수, 0x(숫자 '0' + 알파벳 'x')로 시작하면 16진수가 된다.
다음과 같이 사용된다.
023과 0xC에 해당되는 십진수 값은 각각 19, 12가 될것이다.
프로그래밍을 접해 본 적이 없는 독자라면 %연산자는 본 적이 없을 것이다. %는 나머지 값을 반환하는 연산자이다. 7을 3으로 나누면 나머지는 1이 될 것이고 3을 7로 나누면 나머지는 3이 될 것이다. 다음의 예로 확인해 보자.
※ 앞으로의 예제 중 아래와 같이 main 메소드가 없는 예제는 아래의 코드를 main 메소드에 구현한 후 실행하도록 하자.
결과는 다음과 같다.
1
3
증감연산 (++, --)
자바는 ++, -- 기호를 이용하여 값을 증가하거나 감소시킬 수 있다. 이러한 ++, -- 기호를 증감 연산자라고도 한다.
다음의 예를 보자.
System.out.println(i);
System.out.println(j);
i에 0, j에 10을 대입한 후 i에는 ++ 연산을, j에는 -- 연산을 하였다니 다음과 같은 결과가 나왔다.
++는 값을 1만큼 증가시키고 --는 값을 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 : 값이 참조되기 전에 증가
다음의 예제로 결과값을 확인 해 보자.
결과값은 다음과 같다.
1
1
++i 에 의해서 i값이 먼저 증가되는 것을 확인 할 수 있다.
-- 연산자도 ++ 연산자와 동일한 규칙을 따른다.
한 개의 문자 값에 대한 자료형은 char 를 이용한다.
다음과 같이 사용한다.
char a1 = 'a';
주의할 점은 위와같이 문자값을 '(단일 인용부호)로 감싸주어야 한다는 점이다.
char 자료형은 사실 프로그램 작성 시 그리 많이 사용되는 편이 아니다. 어쩌면 거의 사용 할 일이 없을 정도로 활용성이 적다.
char는 문자값을 표현하는 방식 때문에 가끔 혼란을 주기도 한다.
다음과 같은 소스코드를 작성하고 실행해 보자.
세가지 모두 'a'라는 문자를 출력할 것이다. 즉 'a'라는 문자값을 위와 같이 'a', 97, '\u0061'과 같이 값을 설정해도 모두 같은 것이라는 말이다.
첫번째는 문자값, 두번째는 아스키코드값, 세번째는 유니코드값으로 표현한 것이다.
'Language > Java' 카테고리의 다른 글
[Java] JDK 환경변수 설정 이유와 세팅 방법 (4) | 2020.01.16 |
---|---|
[Java] Network 기초 용어 설명과 InetAddress 클래스를 활용하여 IP와 도메인 이름 다뤄보기 (0) | 2019.08.29 |
[Java] Java,이클립스(Eclipse) 다운방법과 Compile 과정이해하고 실습해보기 (0) | 2019.08.25 |
[Java] 추상클래스(Abstract Class)와 인터페이스(Interface) 이해하기 (0) | 2019.04.23 |
[Java] 클래스(Class)와 인스턴스(Instance)의 이해 (0) | 2019.04.23 |