키보드워리어

【자바】정수형 integer 타입 본문

JAVA/입문

【자바】정수형 integer 타입

꽉 쥔 주먹속에 안경닦이 2022. 11. 19. 12:48
728x90

안녕하세요 【키보드 워리어】

 

⌨🗡🧑


블로그 방문자 여러분, 안경닦이입니다.

 

오늘은 정수형 타입에 대해 알아볼게요

 


 

 

8진수 | 16진수

 

8진수와 16진수
8진수와 16진수

자바와 문자가 ‘8진수’와 ‘16진수’를 지원하기 때문에 8진수 표현법에서 10은 8 즉 010은 8입니다.

 

0으로 시작하면 8진수고 0x로 시작하는 건 무조건 16진수이죠.

 

자바는 2진수, 10진수, 8진수 ,16진수 체계를 지원합니다. 통상적으론 10진수 체계가 사용되지만요.

 

예를 들어보자면 8진수 체계에서 0부터 7까지의 숫자만 있습니다.

 

16진수는 0부터 9까지 이후는 A,B,C,D,E,F까지 설정해서 16진수이죠. A는 10, F는 15입니다.

Int fifteen(15)를 0xf로 설명 가능합니다 F는 15를 뜻하니까요!

 

8진수로 시작하기 위해서는 0을 붙이는데 08도 에러가 나죠

8진수는 0과 7사이의 수자만 가능하지 8이나 9는 안되거든요.

 

Oxbbaacc같은 것도 전혀 숫자 같지 않지만 16진수에서는 숫자가 맞아요.

 

이건 자바의 체계를 이해시켜드리기 위함으로 쓰는 것이지 일반적으로 코드를 작성할 때는 쓰지 마세요. 보는 사람만 헷갈립니다. ㅎㅎ;;;

 

 

 

형 변환 다시 한번 해보기

 

short는 32767 이하 값만 가능해요

그럼 int 3000의 값은 short형 s의 넣을 수 있을까요?

 

답은 ‘불가’입니다.

 

int는 크기는 4바이트고 short는 2 바이트기 때문이에요.

 

이럴 때는 explicit형 변환을 해야 해요.

 

형 변환하는 법은 지난 포스팅을 참고해주세요!

2022.11.17 - [JAVA 완전정복!!/JAVA section 9 - 기본자료형] - 【자바】기본 자료형 소개 및 ,형(type)변경 하는 법

int형 변환해서 short형에 넣기
int형 변환해서 short형에 넣기

i를 short그릇에 담아 3000을 넣었지만  (explicit)

i가 300000같이 short형에서 담을 수 없는 데이터가 될 땐 short형에 넣으면 안 되네요.

 

implicit형 변환은 자동으로 되지만 explicit형 변환은 수동으로 해주어야 한다는 사실만 알고 있으시면 되겠습니다.

 

 

 

 

마지막으로 증감 연산자의 사전 증감과 사후 증감에 대해 알아보겠습니다.

 

사전증감 | 사후증감

 

사후증감
사후증감

사후 증감자에서는 연산자 i부터 실행됩니다.

 

JSHELL을 통해 보시면

j가 i의 증가 발생 전 값인 10을 받고 이후에 i가 11 값을 받게 됩니다.

 

 

사전증감
사전증감

사전 증감에서는 m과 n모두 11로 증가합니다,

 

이게 사전 증감과 사후 증감의 차이입니다.

 

사전 증가에선 값이 배정되기 전에 증가가 먼저 시작되기 때문입니다.

 

 

이렇게 정수 데이터 유형에 사용하는 다양한 연산과 변환 implicit와 explicit 형 변환을 살펴보았고

 

증감 연산자에 대해 배우고 정수 데이터의 특정 타입들을 크기가 작은 타입에 담아 보았습니다.

 

 

실습해보기

[실습 문제]  해당 코드를 보고 직접 BiNumber클래스를 만들어 봅니다.

실습해보기
실습해보세요

 

 

[정답]

public class BiNumber {

private int number1;

private int number2;



public BiNumber(int number1, int number2) {

this.number1 = number1;

this.number2 = number2;

}



int add() { // add 메소드

int number = getNumber1() + getNumber2();

return number;

}



int multiply() { // multiply 메소드

int number = getNumber1() * getNumber2();

return number;

}



void doubleValue() { // 키워드는 메소드로 사용하지 못하기 때문에 이렇게 변주를 줍니다.



number1 *= 2;

number2 *= 2;



}



public int getNumber1() {

return number1;

}



public int getNumber2() {

return number2;

}



public void setNumber1(int number1) {

this.number1 = number1;

}



public void setNumber2(int number2) {

this.number2 = number2;

}

}



//Console

//5
//6
//4
//6

 

 

보너스) 이클립스의 마법!

[cmd] + [1]을 누르면 이클립스는 대안으로 만들 코드들을 제시해줍니다.

 

(참고로 cmd + d는 전체 지우기입니다.)

 

이클립스가 여러 해결법을 제시하고 메서드의 코드도 거의 다 자동 생성하는 게 효율적인 프로그래머로 거듭나는 길이에요.

728x90