Programming/JAVA

자바의 변수와 타입

뽀삐쓰 2019. 12. 13. 14:11

1. 변수(variable)

: 변수는 값을 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간 즉, 하나의 값을 저장할 수 있는 메모리의 공간을 의미한다.

 

 

-변수의 선언

변수 사용을 위해 먼저 어떤 타입의 데이터를 저장할 것인지, 변수 이름이 무엇인지를 결정하여 선언하고 초기화한다.

변수 선언 방법에는 두 가지 방법이 있다.

 

 

1. 변수의 선언만 하는 방법

int age;		// 정수 값을 저장할 수 있는 age 변수 선언
double pie;		// 실수 값을 저장할 수 있는 pie 변수 선언

int x, y, z;	// 같은 타입의 변수는 ,(콤마)를 이용해 한꺼번에 선언 가능

 

 

2. 변수의 선언과 동시에 초기화하는 방법

 

int age = 19;
double pie = 3.14;

int x = 10, y = 20, z = 40;

-> 변수에 값을 저장할 때에는 대입 연산자(=)를 사용하는데 같다는 의미가 아닌 우측의 값을 좌측 변수에 저장한다는 의미를 가진다.

 

 

 

※ 변수 선언, 초기화 오류의 경우 

  1. 변수 선언 후 초기화를 하지 않았을 경우
  2. 같은 타입의 변수를 동시에 선언 후 동시에 초기화 할 경우
  3. long 또는 float 초기화 할 때 뒤에 long의 약자 L 또는 l, float의 약자 F, f를 생략했을 경우
int age;	// 변수의 선언
System.out.println("age = " + age);		// 변수 선언 후 초기화를 해주지 않았기 때문에 오류 발생

int a, b;		// 같은 타입의 변수 동시에 선언
a = 5, b = 7;	// 이미 선언된 여러 변수를 동시에 초기화는 할 수 없다.

flaot number = 354.5; // 354.5f로 초기화해주어야 한다.  

 

 

※ 변수 사용 시 주의사항

  1. 첫 번째 글자는 문자이거나 '$', '_'이어야 하고 숫자로 시작할 수 없다.
  2. 영어 대소문자가 구분된다.
  3. 자바 예약어(int, public, void, new,  true 등)는 사용 불가하다.
  4. 연산자(+, -, *, /, %)를 포함하면 선언 불가하다.

 

-상수(constant)

: 이름을 가지고 있는 메모리 공간으로 변수와 달리 프로그램이 실행되는 동안 메모리에 저장된 데이터를 변경할 수 없다.

final float INCH = 2.54f;

-> final 필드는 최종적인 필드란 뜻으로 초기값이 저장되면 이것이 최종적인 값이 된다.

final 필드를 사용시에는 선언과 동시에 초기값을 주거나 생성자에서 주는 방법밖에 없다. 

* 자바에서는 상수의 이름은 주로 대문자를 사용하여 선언하며 여러 단어로 이루어진 경우에는 언더스코어(_)를 사용하여 구분한다.  

 

 

-리터럴(literal)

: 그 자체로 값을 의미하는 것 즉, 변수와 상수와 달리 데이터가 저장된 메모리 공간을 가리키는 이름을 갖지 않는다.

 

int height = 183;		// 183이 정수 리터럴
final float INCH = 2.54f;	// 2.54가 실수 리터럴

char ch = '\n';			// '\n'(escape 문자)이 문자 리터럴
String korea = "대한민국"	// "대한민국"이 문자열 리터럴

boolean b = true;		// true가 논리 리터럴

 

 

※문자 리터럴 (escape 문자) 

: char만이 문자 리터럴을 저장할 수 있다.

이스케이프 문자 용도
't' 수평 탭
'n' 줄 바꿈
'r' 리턴
'"' "(큰 따옴표)
''' '(작은 따옴표)
''
'u16진수' 16진수에 해당하는 유니코드

 

 

2. 타입(Type)

 

-데이터 타입

기본형(primitive) 타입

: 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입으로 실제 연산에 상용되는 변수

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

 

참조형(reference) 타입

: 객체(Object)의 번지를 참조하는 타입

 

 

*String (클래스)

: String 변수는 참조 변수로 String 객체가 생성되고 String 변수는 String 객체의 번지 참조한다. 

 -> char타입은 단 하나의 문자만 저장하기 때문에 문자열 저장을 위해 String 타입을 많이 사용한다.

 

 

 

-타입 변환

: 데이터 타입을 다른 데이터 타입으로 변환하는 것 즉, byte 타입을 int 타입으로 반대로 int 타입을 byte 타입으로 변환하는 행위이다.

타입 변환에는 두 가지 종류가 있다.

 

1. 자동(묵시적) 타입 변환 (Promotion)

: 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것으로 작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생

 

자동 타입 변환

더보기

※ 크기별 타입 정리

byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)

 -> 4byte인 float이 int와 long보다 더 큰 타입으로 표현된 것은 float이 표현할 수 있는 값의 범위가 더 크기 때문

byte byteValue = 10;
int intValue = byteValue;		// 자동 타입 변환

 

 

 

2. 강제(명시적) 타입 변환

: 강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개어서 저장하는 것

 

 

int intValue = 103029770;
byte byteValue = (byte) intValue;	// 강제 타입 변환 (casting)


/*연산식에서의 강제 타입 변환*/ 
int intValue = 10;
double doubleValue = 5.5;
int result = intValue + (int)doubleValue;	// result에 15가 저장