안녕하세요! 오늘은 Java 자료형과 변수에 대해서 알아보겠습니다.
자바의 자료형
기본형과 참조형
자바의 자료형은 크게 기본형과 참조형으로 분류합니다. 기본형은 다시 논리형, 문자형, 정수형, 실수형으로 나뉘고, 참조형은 배열, 클래스, 인터페이스로 나뉩니다. 기본형으로 사용되는 자료형은 8가지 키워드이고 참조형은 사용자가 직접 생성할 수 있어 다양한 이름이 사용됩니다. 기본형은 변수의 저장공간에 값 자체가 저장되고 참조형은 변수의 저장공간에 참조 값이 저장됩니다. 참조 값은 C언어의 주소와 같이 실제 값이 저장된 객체를 가리키는 참조 값을 의미합니다.
구분 | 분류 | 키워드 |
기본형 | 논리형 | boolean |
문자형 | char | |
정수형 | byte, short, int, long | |
실수형 | float, double | |
참조형 | 배열 | int [], float [] 등 다양 |
클래스 | String, Date 등 다양 | |
인터페이스 | Runnable, Enumeration 등 다양 |
자료형 크기
정수와 실수를 표현하는 자료형이 다양한 이유는 그 표현 범위가 다르기 때문입니다. 문자형과 정수형은 크게 보면 모두 정수를 표현하는 같은 유형의 자료형이라고 볼 수 있지만 문자형은 문자 코드 값인 양수만을 2바이트로 표현하며, 정수형은 음수와 양수 모두를 표현할 수 있습니다. 그러므로 char와 short는 크기는 같더라도 표현 범위는 다릅니다.
분류 | 키워드 | 크기 | 상대적 크기 비교 | 최소 ~ 최대 | 지수형태 범위 |
논리형 | boolean | 1byte | ■ | true, false | |
문자형 | char | 2byte | ■■ | \u0000 ~ \uffff, [0 ~ 65,535] | 0 ~ 216-1 |
정수형 | byte | 1byte | ■ | -128 ~ 127 | -27 ~ 27-1 |
short | 2byte | ■■ | -32,678 ~ 32,767 | -215 ~ 215-1 | |
int | 4byte | ■■■■ | -2,147,483,648 ~ 2,147,483,647 | -231 ~ 231-1 | |
long | 8byte | ■■■■■■■■ | -263 ~ 263-1 | -263 ~ 263-1 | |
실수형 | float | 4byte | ■■■■ | (+, -)1.4E-45 ~ 3.4028235E38 | |
double | 8byte | ■■■■■■■■ | (+, -)4.9E-324 ~ 1.7976931348623157E308 |
자료형 byte는 크기가 1바이트로 -128에서 127까지 표현이 가능합니다. 자료형 int는 음수와 양수로 약 21억 정도까지 표현이 가능합니다. 예를 들어 지구에서 태양까지 거리인 약 1500억 m를 저장하려면 자료형 long을 사용해야 합니다. 마찬가지로 실수에서보다 크거나 정밀한 실수를 사용하려면 4바이트인 float보다 8바이트인 double을 사용해야 합니다.
상수와 표현
상수
프로그램에서 상수란 소스에 그대로 표현할 수 있는 다양한 자료 값을 말합니다. 예로 5, 32.5와 같은 숫자, "Hello Java!"와 같은 문자열이 있습니다. 상수는 논리, 문자, 정수, 실수, 문자열 등이 있고 정수 상수에서 숫자 앞의 0은 8진수를, 0x이나 0X는 16진수를 나타내고 0b1011과 같이 0과 1로만 구성되는 수 앞에 0b를 붙이면 이진수 표현 방법으로 사용할 수 있습니다.
분류 | 자료형 | 상수 | 비고 |
논리형 | boolean | true, false | 2개 이외에는 없음 |
문자형 | char | 'A', '가', '%', '\', '\n', '\23'(8진수 코드값), '\u2344'(16진수 코드 값) |
작은 따옴표로 표기 |
정수형 | int | 10, 50(십진수), 0b0101(이진수0101), 020(8진수 20), 0x1d(16진수 1d) |
0X1D와 같이 대문자도 가능 |
long | 32l, 220000000L | 정수 뒤에 l이나 L표기 | |
실수형 | float | 3.14f, 5.25F | 반드시 실수 뒤에 f나 F 표기 |
double | 2.98e2(2.98 * 102) 5.8E-2(5.8 * 10-2)> 3.75, 3.2d, 5.78D |
e와 E모두 가능 실수 뒤에 d나 D도 사용 가능 |
|
문자열 | String | "안녕하세요 자바!!" | 큰 따옴표로 표기 |
숫자에 사용하는 밑줄 _
숫자 상수를 표현하는 중간에 밑줄 _은 자릿수를 구분하는 구분자로 사용할 수 있습니다. 일상생활에서 쉼표를 사용하여 53,432처럼 사용하듯이 53_432처럼 사용할 수 있습니다. 이 밑줄은 어느 위치에서나 사용될 수 있습니다.
long creditCardNumber = 1234_5656_7890_1004L;
long socialSecurityNumber = 999_99_9999L;
short sh = 32_767;
float pi = 3.14_15F;
특수문자
인쇄할 수 없는 문자나 특수한 문자를 표현하고자 하는 경우는 역슬래시(\)를 쓰고 문자나 숫자를 써서 나타낼 수 있습니다. 아래 표는 자바에서 표현되는 다양한 문자 표현 방법입니다. 자바는 유니코드를 지원하기 때문에 한글 문자 '가'는 유니코드 표현 방식인 '\uac00'으로 표현할 수 있습니다.
문자표현 | 이름 | 의미 |
\n | New line | 새로운(다음) 행으로 이동 |
\t | Tab | 탭만큼 이동 |
\b | Back space | 하나 뒤로 이동 |
\r | Carriage return | 현재 행의 처음으로 이동 |
\f | Form feed | 새 페이지의 처음으로 이동 |
\\ | Back slash | \(역슬래시) 문자 |
\' | Single quote | '(작은 따옴표) 문자 |
\" | Double quote | "(큰 따옴표) 문자 |
\ddd | d는 8진수의 한 자릿수 | \0에서 \377(\u00ff)까지, 8비트의 정보만 입력가능 |
\udddd | d는 16진수의 한 자릿수 | 반드시 4자리를 기술 |
변수 선언과 초기화
변수 선언과 초기화
변수는 자료 값을 저장하는 공간입니다. 변수를 사용하기 위해서는 먼저 변수 선언 과정이 필요한데 변수 선언은 자료형과 변수 이름을 나열하여 표시합니다. 선언된 변수에 자료 값을 저장하려면 대입연산의 기호인 =를 사용합니다. 예를 들어 변수 선언문은 int year; 와 같고 변수 대입문은 year = 2020; 와 같이 할 수 있습니다. int는 변수의 자료형, year은 변수의 이름, 2020은 저장 값이 됩니다. 변수를 선언한 이후에는 반드시 값을 저장하도록 해야 합니다. 이를 변수의 초기화라고 하며 변수를 선언하면서 바로 초기 값을 저장하는 방법은 int year = 2020;와 같습니다.
여러 변수의 선언
하나의 변수선언 문장으로 여러 개의 변수를 선언할 수 있습니다. 변수 선언 문장에서 자료형 키워드 이후에 여러 변수를 콤마로 구분하여 나열하며 각각 초기 값 저장도 가능합니다.
int a, b, c; //여러 변수 선언
int x, y = 1, z = 2; //변수 선언 하면서 일부 초기화
int age1 = 21, age2 = 24; //변수 선언 하면서 모두 초기화
소속변수와 지역변수, 변수의 기본 값
소속변수의 기본 값
자바의 변수는 지역변수와 소속변수로 나눌 수 있습니다. 소속변수는 클래스 내부에 소속된 변수로서 대부분의 메소드에서 사용할 수 있으며, 필드라고도 부릅니다. 반면 지역변수는 메소드 내부에서 선언되는 변수로, 선언된 메소드 안에서만 사용할 수 있습니다. 소속변수에 대한 내용은 자바의 문장과 구조에 대한 포스팅에서 다뤘었습니다. 소속변수는 선언 시 초기 값을 저장하지 않아도 기본 값이 아래 표와 같이 저장 됩니다.
자료형 | byte, short, int | long | float | double | char | boolean | 참조 자료형 |
기본 값 | 0 | 0L | 0.0F | 0.0D | '\u0000' | false | null |
지역변수의 초기 값 미지정 오류
필드와 달리 지역변수는 변수 선언 시 초기 값을 저장하지 않고 사용하면 컴파일 오류가 발생합니다. 때문에 지역변수는 선언 후 사용 전에 반드시 초기 값을 저장한 후에 사용해야 합니다.
public static void main(String[] args) {
int n; //지역변수 선언
System.out.println(n);
}
위의 코드는 지역변수를 선언하고 초기화를 해주지 않았기 때문에 컴파일 오류가 발생합니다.
출처 : 강환수, 조진형「절대 JAVA 자바프로그래밍의 기초부터 안드로이드까지」, 인피니티북스
감사합니다.
'Language > Java' 카테고리의 다른 글
[JAVA]자바 자료의 입력과 출력 (0) | 2020.12.02 |
---|---|
[JAVA]자바 문자열 출력하기 - println (0) | 2020.11.25 |
[JAVA]자바 구조와 문장 (0) | 2020.11.25 |
[JAVA]자바 시작하기(JDK, eclipse 설치) (0) | 2020.11.22 |