본문 바로가기
국비학원 전 강의 필사/점프 투 자바

#03-01 숫자 (Number) - <점프 투 자바>

by kkooHan 2022. 8. 24.

 

출처 : https://wikidocs.net/book/31

 

 

점프 투 자바

**초보 프로그래머를 위한 자바 입문서** 이 책은 문법위주의 지식보다는 이해중심의 지식을 전달하는 것을 주 목적으로 한다. 예를 들어 자바에서 잘 파악하기 힘든 개념 ...

wikidocs.net

 

 

 

 

 

 

필사 :

 

 1. 정수

 2. 실수

 3. 8진수와 16진수

 4. 숫자연산

 5. 증감연산(++. --)

 

 

 

숫자 자료형은 숫자 형태로 이루어진 자료형으로

우리가 이미 익숙히 알고 있는 것들이다.

123과 같은 정수, 12.34같은 실수,

드물게 쓰이긴 하지만 8진수나 16진수 같은 것들도 있다.

 

 

이런 숫자들을 자바에서 어떻게 사용하는지 알아보자.

 

 

 

 

정수

자바의 정수를 표현하기 위한 자료형은 int, long이다.

(byte, short 등도 있지만 잘 사용하지 않는다.)

 

 

int와 long의 차이는 표현할 수 있는 숫자의 범위이다.

 

 

자료형과 표현범위

int : -2147483648 ~ 2147483647

long : -9223372036854775808 ~ 9223372036854775807

 

 

다음과 같이 사용한다

int age = 10;
long countOfStar = 8764827384923849L;

long 변수에 값을 대입할 때는 대입하는 숫자 값이 int 자료형의 최대값인

2147483647 보다 큰 경우 87648227384923849L과 같이 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의 제곱을 의미한다.

즉 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

023과 0xC에 해당되는 십진수 값은 각각 19, 12이다.

 

 

 

 

숫자연산

자바의 사칙연산은 실생활에서 일반적으로 사용되는 사칙연산과 다를 바가 없다.

자바는 +, -, *, / 기호를 이용하여 두 숫자간 사칙연산을 수행한다.

 

 

다음과 같이 사칙연산을 수행하는 자바 프로그램을 작성 해 보자.

 

 

Samplejava

public class HelloWorld {
    public static void main(String[] args) {
        int a = 10;
        int b = 5;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);
    }
}

 

 

프로그래밍을 접해 본 적이 없는 독자라면 %연산자는 본 적이 없을 것이다.

%는 나머지 값을 반환하는 연산자이다.

 

7을 3으로 나누면 나머지는 1이 될 것이고

3을 7로 나누면 나머지는 3이 될 것이다.

 

 

다음의 예로 확인해 보자.

public class HelloWorld {
    public static void main(String[] args) {
        int a = 10;
        int b = 5;
        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값이 참조되기 전에 증가된 것을 확인 할 수 있다.

 

 

-- 연산자도 ++ 연산자와 동일한 규칙을 따른다.

 

 

 

 

 

느낀점 : 

 

++i도 있는지 처음 알았다.

 

8진수, 16진수는 어릴 때 배운 것 같은데 까먹어서

자료검색을 해보았다.

 

 

<8진법, 16진법 참고자료>

https://kin.naver.com/qna/detail.naver?d1id=11&dirId=1103&docId=336975156&qb=MuynhOuylSA47KeE67KVIDE27KeE67KV&enc=utf8&section=kin.ext&rank=1&search_sort=0&spq=0 

 

 

점프 투 자바에서 넣어준 링크 (위키백과) 참고.

 

팔진법 :

8을 밑으로 하는 기수법.

 

0~7까지의 숫자 사용.

 

2진법으로부터

오른쪽 끝 숫자부터 시작해

연속되는 3자리 숫자를 묶음으로써 만들어질 수 있다.

 

컴퓨팅에서 십육진법 대신 쓰인다.

 

 

 

십육진법 :

16을 밑으로 하는 기수법.

 

0~9까지의 숫자, A에서 F까지의 로마 문자 사용.

 

이진법 4자리와 십육진법 한자리가 일대일 대응.

 

이진수가 많이 쓰이는 컴퓨터에서

이진수를 대신해 많이 쓰이고 있다.

 

1바이트는 8비트, 즉 이진수 8자리이므로

십육진수 두 자리로 표현할 수 있다.

 

 

 

 

댓글