Post

[Java] 04. 변수(2)

[Java] 04. 변수(2)

1. 기본형과 참조형

img

위 이미지에 있는 8개의 종류가 데이터의 가장 기본이 되는 타입으로 “기본형”이라고 불립니다
기본형 변수는 실제 값을 저장하며, 크게 [논리, 문자, 정수, 실수]형으로 분리됩니다

  • 논리형 : boolean
  • 문자형 : char
  • 정수형 : byte, short, int, long
  • 실수형 : float, double


1-1. 메모리에 값이 저장되는 과정

img

1
2
byte b;
b = 3;

byte b;를 선언하면서 1바이트 크기의 메모리를 사용하게 되고, 그 자리의 주소는 “b”라고 명칭하게 됩니다

위 이미지처럼 변수 b에 10진수 3을 저장하면 컴퓨터는 이를 2진수로 변환하여 메모리에 저장합니다
타입마다 위처럼 값이 저장되는 형식이 있어서 그 형식에 맞게 변환되어 저장됩니다


1-2. 문자가 저장되는 과정

img

문자를 표현하기 위해 문자와 숫자를 매칭하는 아스키 코드를 만들어졌습니다

char c='A'라고 작성한다면 메모리에 2byte의 크기에의“c”라는 이름을 가진 주소를 사용하게 되면서
‘A’를 아스키 코드에 매칭한 ‘65’라는 값이 c에 저장하게 됩니다

추가로 문자코드는 음수를 사용할 필요가 없기 때문에 char의 범위에는 부호가 없습니다



2. 오버플로우와 형변환


2-1. 오버플로우 (Overflow)

img

1
2
3
4
short sMax = 32767;
sMax += 1;  // sMax의 값에 1 더하기

System.out.println(sMax);   // 결과 : -32768

short타입의 범위는 2바이트로 -32,768 ~ 32,767의 값을 사용할 수 있습니다
하지만 범위를 넘어가는 연산을 해버리면 해당 값이 타입의 범위 내에서 순환되어버립니다

따라서 자료형(=타입)을 사용할 때 사용하려는 숫자의 범위를 파악한 뒤에 자료형을 알맞게 사용하는 것을 권장합니다
하지만 어쩔 수 없이 사용하던 자료형에서 다른 자료형으로 넘겨 사용해야 하는 경우에는 “캐스팅”으로 해결할 수 있습니다


2-2. 형변환

1
2
3
4
5
6
7
8
String str = "127";
int strToNum = Integer.parseInt(str);       // 문자열을 숫자로 변환

int num = 120;
String numToStr = Integer.toString(num);    // 숫자를 문자열로 변환

System.out.println(strToNum); // 숫자 127 출력
System.out.println(numToStr); // 문자 "120" 출력

아스키 코드값이나 문자열은 숫자로 또는 그 반대로 변환할 수 있습니다
intInteger을 사용하며 다른 기본형은 Float, Double, Byte 등으로 사용하면 됩니다

3. 참조형

String, System, …

기본형을 제외한 나머지 타입은 참조형이라 하며, 참조형 변수는 null 또는 메모리 주소를 저장합니다

  • null은 “어떠한 객체의 주소도 저장되지 않음”을 뜻합니다
  • 타입에 상관없이 변수의 크기가 항상 4byte 입니다 (JVM이 64bit일 경우 8byte)
This post is licensed under CC BY 4.0 by the author.