Feel It First

[Do it! 자바 프로그래밍 입문] 02 변수와 자료형 본문

IT

[Do it! 자바 프로그래밍 입문] 02 변수와 자료형

csongin 2022. 5. 21. 16:09
728x90
컴퓨터는 데이터를 어떻게 표현할까?
변수란 무엇일까?
변수가 저장되는 자료의 특성, 자료형
상수와 리터럴
형 변환

컴퓨터는 데이터를 어떻게 표현할까?

컴퓨터는 0과 1로만 데이터를 저장한다. (2진수)

따라서 숫자나 문자도 0과 1의 조합으로 표현된다.

그러나 2진수로만 표현되면 너무 길어지므로, 8진수와 16진수를 사용하기도 한다.

int num = 10; // 10
int bNum = 0B1010; // 10
int oNum = 012; // 10
int hNum = 0XA; // 10
//4개의 변수 모두 10을 가르킨다.

비트(bit) : 컴퓨터가 표현하는 데이터의 최소단위로 2진수 하나의 값을 저장할 수 있는 크기를 말한다.
※ 바이트(byte) : 1byte = 8bit를 의미한다.

변수란 무엇일까?

프로그램에서 사용되는 자료를 저장하기 위한 공간

할당 받은 주소 대신에 부르는 이름 

프로그램 사용 중에 값 변경 가능

사용되기 이전에 선언되어야 함

영어로 variable 이라고 부름

 

변수 선언과 초기화

int level; //level이라는 이름의 변수를 선언
int level = 0; //level 이라는 이름의 변수를 0으로 초기화

변수 선언시 유의점

변수의 이름은 알파벳과 숫자로 구성되며, 특수문자는 _ (언더바), $(달러)만 허용된다. (공백은 허용하지 않음.)

변수의 이름은 숫자나 특수문자로 시작할 수 없고, 소문자(관례적)를 시작으로 이후 단어의 첫 알파벳은 대문자로 구분한다.

키워드도 변수의 이름으로 사용할 수 없다.

※ 변수의 이름을 정할 때는 변수의 역할에 어울리는 의미 있는 이름을 지어야 한다.

 

변수가 저장되는 자료의 특성, 자료형

  정수형 문자형 실수형 논리형
1byte byte - - boolean
2byte short char - -
4byte int - double -
8byte long - float -

변수를 사용할 공간의 크기와 특성에 따라 자료형을 사용하여 변수를 선언한다.

 

byte

동영상, 음악 파일 등 실행 파일의 자료를 처리 할 때 사용하기 좋은 자료형

byte bNum; // 1byte

short

주로 c/c++ 언어와의 호환시 사용

short sNum; // 2byte

int

자바에서 사용하는 정수에 대한 기본 자료형

프로그램에서 사용하는 모든 숫자(리터럴)는 기본적으로 int로 저장됨

int iNum; // 4byte

long

가장 큰 정수 자료형

값의 끝 부분에 L을 명시하여 long형임을 표시해야 함

long lNum = 100L; // 숫자 마지막의 L입력 8byte

※ 소문자 l을 써도 되지만 숫자 1과 구분하기 위해 대문자 사용을 권장함

 

char

컴퓨터에서는 문자도 내부적으로는 비트의 조합으로 표현

각 문자의 특정한 숫자 값을 부여하여 변환(인코딩)

ex) 'A', 65 'B' 66

char ch1 = 'A'; // 2byte
char ch2 = 65; // 'A' 출력

※ 인코딩 : 각 문자에 따른 특정한 숫자 값(코드 값)을 부여

※ 디코딩 : 숫자 값을 원래의 문자로 변환

 

float, double

부동 소수점 방식 : 실수를 지수부와 가수부로 표현, 무한의 실수를 표현하기 위함.

실수는 기본적으로 double 형을 사용함

float 형으로 사용하는 경우 값 마지막에 f 또는 F를 명시함.

double dNum = 3.14; // 4byte
float fNum = 3.14F; // 8byte

boolean

논리값 true(참), false(거짓)을 표현하는 자료형

boolean isMarried1 = true; // 참 
boolean isMarried2 = false; // 거짓
// 1byte

자료값 없이 변수 사용하기

지역 변수 자료형 추론(local variable type inference)

변수에 대입되는 값을 보고 컴파일러가 추론

var num = 10; // int
num = 10.0 // 오류발생
var dNum = 10.0; // double
dNum = 10 // 10.0 출력

※ 최초의 선언된 자료형 변경 안됨.

 

상수와 리터럴

상수

변하지 않는 값

상수를 선언

final 키워드 이용

final double PI = 3.14;
PI = 3.15; // 에러발생
final int MAX_NUM = 100;

final 로 선언된 상수는 다른 값을 대입할 수 없음.

프로그램에서 변경되지 않아야 하는 값을 상수로 선언한 후 변경이 필요할 때에는 상수의 값을 수정

 

리터럴

프로그램에서 사용되는 모든 문자, 숫자, 논리 값

ex) 10, 3.14, 'a', true

리터럴에 해당되는 값은 특정 메모리 공간인 상수 풀(constant pool)에 있음.

필요한 경우 상수 풀에서 가져와서 사용

상수 풀에 저장할 때 정수는 int, 실수는 double를 저장

long이나 float 값으로 저장하는 경우 식별자(L, l, F, f)를 명시해야 함.

 

형 변환

자료형은 각각 사용하는 메모리 크기와 방식이 다름 

서로 다른 값이 대입되는 경우 형 변환이 일어남

 

묵시적 형변환

작은 수에서 큰 수로 덜 정밀한 수에서 정밀한 수로 대입되는 경우

byte bNum = 10; // 1byte
int iNum = bNum; // 4byte
     
System.out.println(bNum); // 10
System.out.println(iNum); // 10

명시적 형변환

묵시적 형 반대의 경우 

반환되는 자료형을 명시해야 함(자료의 손실이 발생할 수 있음)

double dNum1 = 1.2; // 8byte
float fNum2 = 0.9F; // 4byte

int iNum3 = (int)dNum1 + (int)fNum2;
int iNum4 = (int)(dNum1 + fNum2);

System.out.println(iNum3); // 1
System.out.println(iNum4); // 2
반응형
Comments