본문 바로가기
공부/<자바의 정석>

<자바의 정석> ch2 변수

by 푸딩코딩 2023. 8. 9.
728x90
반응형

 

1. 변수

변수(variable)는 값을 저장하기 위한 공간으로, 초기화가 필요하다.

 

 

2 변수의 타입

2.1 기본형

변수는 8개의 자료형 타입을 가진다.

 

논리형:

-boolean: 1바이트

문자형:

-char: 2바이트

정수형:

-byte: 1바이트

-short: 2바이트

-int: 4바이트

-long; 8바이트

실수형:

float : 4바이트

double: 8바이트

 

 

int는 정수의 기본 자료형, double은 실수의 기본 자료형

int는 약 -20억~ 20억의 크기의 정수를 표현할 수 있다. 

 

 

2.2 상수와 리터럴

 

상수(constant)란 변경할 수 없는 값으로, 코드에서 값을 변경하고 싶을 때 상수만 바꾸면 되기에 편리하다.

변수 타입 앞에 final을 붙이면 된다. 상수의 이름은 모두 대문자로 하고, 여러 단어로 이어져있는 경우 _로 이어준다.

 

리터럴(literal)은 그 자체의 값을 의미하며 상수의 다른 이름이다. 

접미사, 접두사를 붙일 수 있다.

접미사의 경우 주로 정수형long에 L, 실수형float에 f를 붙인다. double에 d를 붙일 수 있으나 기본 실수 자료형이기에 생략가능하다. int도 붙이지 않는다.

접두사의 경우 8진수 표현시 0, 16진수 표현시 0x, 2진수 표현시 0b를 붙인다.

 

변수에 저장하는 값과 변수 타입이 같지 않아도, 저장범위가 넓은 타입에 좁은 타입의 값을 저장할 수 있다.

 

 

2.3 형식화된 출력 printf()

 

printf()를 사용하면 변수의 출력 형식을 %d, %f등으로 지정할 수 있다. 또한 줄바꿈이 되지 않기에 \n 혹은 %n(권장)으로 설정해주어야한다.

 

2.4 화면에서 입력받기 Scanner

import java.util.*; //Scanner 클래스 추가

Scanner xcanner = new Scanner (System.in); //Scanner 클래스 객체 생성

String input=scanner.nextLine(); //입력받은 내용을 input에 저장

 

값을 입력받을 때 사용

 

3. 진법

 

https://pudingcoding.tistory.com/45

 

2진수, 8진수, 16진수 정리

CS 공부를 하다보면 여러가지 진수에 대해 접하게 된다. 2진법은 0~1의 2개 8진법은 0~7의 8개 16진법은 0~9의 10개의 숫자와 A~F의 6개의 문자를 사용한다. 10진수란 우리가 알고있는 기본적인 숫자다 0

pudingcoding.tistory.com

2진수, 8진수, 16진수에 대해 정리했던 글!

 

3.1 10진법과 2진법

10진법은 우리가 일반적으로 사용하는 수 표현법,

2진법은 1과 0으로 표현하는 방법

 

 

3.2 비트(bit)와 바이트(byte)

1바이트=8비트

한 자리의 2진수를 비트(bit, binary digit)라고 하며, 1비트는 computer가 값을 저장할 수 있는 최소단위.

 

word는 CPU가 한 번에 처리할 수 있는 데이터의 크기로, CPU의 성능에 따라 달라진다.

ex) 32비트 CPU: 4바이트 word

      64비트 CPU: 8바이트 word

 

n비트는 2^n 만큼의 수를 표현할 수 있다. 

 

3.3 8진법과 16진법

8진수는 2진수 3자리를, 000-> 0

16진수는 2진수를 4자리를 0000 -> 0

각각 한자리로 표현할 수 있다.

-> 이거 알아두면 변환시에 유용하다. 관련 문제 첨부 

 

https://pudingcoding.tistory.com/46

 

백준 1212번 8진수 2진수 파이썬 풀이

8진수 2진수 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 256 MB 42719 14382 11915 35.800% 문제 8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오. 입력 첫째 줄에 8진수가

pudingcoding.tistory.com

 

 

3.4 정수의 진법 변환

10진수를 n진수로 변환시,

10진수를 n으로 나누어주어 그 몫이 나누는 값 n보다 작을 떄까지 나누어

그 각각의 나머지를 최신것부터 적어주면됨

 

n진수를 10진수로 변환시,

각 자리의 수에 해당 단위의 값을 곱해서 모두 더하면 됨.

ex) 8진수 1460은,

8^3*1 + 8^2*4 + 8^1*6 + 8^0*0 = 512*1 + 64*4 + 8*6 + 0*0 = 512 + 256 + 48 + 0 = 816

 

2진수, 16진수도 마찬가지

 

 

3.5 실수의 진법변환

 

10진 소수점수-> 2진 소수점수

10진 소수에 2를 곱하고, 소수부에만 2를 곱하는 과정을 소수부가 0이 될 때까지 반복하여, 

정수분만을 과거순으로 적고 앞에 0.을 붙인다.

 

2진 소수점수-> 10진 소수점수

0.101이라면

소수부 처음 기준으로 2^-1,2^-2, 2^-3.. 이런 순이기에 각각 곱해주면

0.5+0.125=0.625 이렇게 구할 수 있다.

 

3.6 음수의 2진 표현 - 2의 보수법

 비트의 맨 앞이 1이면 음수, 0이면 양수로 표현할 때 부호를 알 수 있다.

2의 보수법을 사용하면 0의 부호를 신경쓰지 않고 덧셈할 수 있게 된다. 

n의 보수더했을 때 n이 되는 수를 의미한다. 

ex) 7의 10의 보수는 3, 3의 10의 보수는 7 이때 3와 7은 10의 보수의 관계 

 

2진수에서 2의 보수 관계의 두 2진수를 더하면, 자리올림이 발생하여 제일 왼쪽의 1이 버려지고 0이 된다!!!

ex) 0101  10진수로 5

 +   1011   10진수로 -5

------------

     10000 (자리올림 발생, 크기가 4비트라 맨 왼쪽의 1 버려짐)

 

2의 보수를 간단하게 구하는 법= 1의보수 + 1

1의 보수는 0을 1로, 1을 0으로 바꾸면 된다. 

ex) 2의 보수를 구하자, 먼저 2진수 0101의 1의 보수는 1010 , 여기에 1을 더하면 1011로 '2의 보수'가 된다.

0101은 10진수로 5이고, 1011은 10진수로 -5를 의미함!! 

 

4. 기본형

기본형의 세부적인 내용 서술

4.1 논리형 - boolean

불대수 true/ false  = 1/0

 

4.2 문자형 char

단 하나의 문자만을 저장할 수 있다. 

char ch = 'A' ; 

char ch = 65;

65는 A의 유니코드로, 둘은 동일한 결과를 가진다. 

 

char는 2바이트로 16비트로 값을 표현할 수 있다. 0~2^16 -1 까지의 값을 표현한다. 

 

4.3 정수형 

byte 1

short 2

int 4

long 8

 

n비트로는 2^n개의 정수를 표현하고, 표현가능 한 정수의 범위는 -2^n ~ 2^n-1

 

일반적으로는 int를 사용하고, int의 범위 -20억~ +20억 이상의 수를 표현할 때는 long을 사용한다.

 

오버플로우란 타입이 표현할 수 있는 값의 범위를 넘어서는 것을 의미한다. 

오버플로우가 발생한다고 에러가 발생하는 것은 아니나, 결과가 달라질 수 있다. -> 적절한 크기의 자료형을 미리 선택하자.  

부호 없는 정수를 2진수로 0000이 될 때, 부호 있는 정수는 부호비트가 0에서 1이 될 때 오버플로우가 발생한다. 

 

4. 4 실수형

float 4

double 8

 

실수형에서는 오버플로우가 발생하면 값이 무한대가 된다.

실수형으로 표현할 수 없는 작은 값이 되는 경우에 언더플로우가 발생하기도 하는데, 이 때 값은 0이 된다. 

 

double이 float보다 정밀도가 높고, float는 double보다 연산속도와 메모리가 이득이다. 

 

부호, 지수, 가수 부분을 구분하여 저장하는 부동소수점 형식으로 값을 저장한다. 

 

 

5. 형변환

5.1 형변환이란?

변수 또는 상수의 타입을 다른 타입으로 변환하는 것, casting

 

5.2 형변환 방법

int a  = (int) 6.3; 

-> a에는 6이 저장된다.

 

 

5.3 정수형간의 형변환

큰타입->작은 타입의 경우 loss가 발생할 수 있다. 반대의 경우에는 발생하지 않고 대신 빈 공간이 0이나 1로 채워진다. 

일반적으로는 0으로 채워지나 변환하려는 값이 음수일 때 1로 채워진다. 

 

5.4 실수형 간의 형변환

double-> float loss발생가능

float-> double 가수 부분의 남은 자리를 0으로 채운다

5.5 정수형 <-> 실수형 간의 형변환

정수형-> 실수형 경우 딱히 문제x

실수형-> 정수형 경우 소수점 자리가 날아가게 된다. 

5.6 자동 형변환

작은 범위-> 큰 범위의 경우 생략 가능함

ex) double d= 1.0+ 4;

이렇게 선언했을 때 4부분은 int고, 알아서 4.0으로 변환되어 

double d= 5.0; 의 결과가 된다. 

728x90
반응형

'공부 > <자바의 정석>' 카테고리의 다른 글

<자바의 정석> ch1 자바를 시작하기 전에  (0) 2023.08.01