본문 바로가기
Programming Language/Java

[Java] 자바의 자료형 (식별자, 자료형, 래퍼클래스, 형변환)

by Baest 2021. 5. 27.

이제 Java 진도가 거의 마무리되고 있어서 포스팅하며 전반적으로 정리해보려고 한다.

정리는 학원에서 강사님이 나눠주신 자료 위주로..

 

1. 식별자

- 사물 등 모든 것에 대해 구별할 수 있는 이름(구성요소를 구별하는 이름)

- 식별자로는 클래스명, 메서드명, 변수명이 있음

- 식별자 정의 규칙

(1) 첫 글자는 '_', '$', 영문 대문자,소문자 (한글 가능/숫자로 시작하지 않음)

(2) 공백문자 및 특수문자 사용 불가

(3) 아래와 같은 예약어 사용 불가

(자바 예약어는 소문자로 이루어져 있고 대소문자를 구분하므로 TRUE, FALSE,NULL은 자바 예약어가 아님)

출처: 강사님 pdf 자료

2. 클래스 

FYI: 클래스는 추후 자세히 정리할 예정

- 첫 문자 항상 대문자여야함(첫 문자를 '_' 나 '&' 이외의 특수문자로 시작 불가)

- 하나 이상의 단어가 모여 클래스명 지정할 때, 단어의 첫 문자들만 대문자로 표현

- 클래스 이름은 반드시 파일명과 같아야함

- 숫자로 시작 불가, 공백 포함 불가, 예약어 사용 불가.

- 파스칼 케이스 기법으로 작성(첫글자가 대문자). 예를 들어 CustomerManager

 

3. 주석

- 주석문은 실제 프로그램에 영향을 주지 않으며 단지 소스코드의 기능이나 동작을 설명하기 위해 사용

- 원시코드(java파일)의 컴파일 단계에서 제외되기 때문에 bytecode(class파일)에는 영향 주지 않음

- 프로그래머 본인 혹은 다른 개발자들이 소스코드를 분석하기 쉽게 하기 위함

- 참고: 주석 컴파일 할 때 javadoc Filename 이용

 

4. 상수와 변수의 개념

- 상수 : 고유 data 값이며 항상 동일한 의미 지님 = 한 번만 값을 저장할 수 있는 변수(변경 불가능)

- 변수 : 상수를 저장 및 보관(변경 가능)

- 리터럴 = 기존의 상수: 그 자체로 값을 의미하는 것(Java에서 정한 상수의 의미와 구별하기 위해 리터럴이라고 지칭)

- 변수명 : 변수의 특정 이름

- 자료형 : 변수의 크기 규정지어 미리 만들어 둔 크기의 약속(예를 들어 int, double, char 등)

 

출처: 유튜브 남궁성의 정석코딩

 

5. 기본 자료형 및 참조 자료형

(1) 기본 자료형(primitive data type): 자바 컴파일러에 의해 해석되는 자료형

(2) 참조 자료형(reference data type)

- 기본자료형이 값을 직접 저장한다면, 참조 자료형은 메모리에 저장된 위치정보를 저장

- 자바 API에서 제공되거나 프로그래머에 의해서 만들어진 클래스를 자료형으로 선언하는 경우(배열, 클래스, 인터페이스)

- 기본 자료형 이외 모든 자료형들이 참조자료형에 속함

 

6. 자바의 자료형

 

(1) boolean

- 유일한 논리 자료형

- 1 byte이지만 1 bit만 사용하며 false, true 값을 가짐

 

(2) byte

- 크기: 1 byte

- 자료형 입출력범위: -128 부터 127 까지

- C언어에서는 초기값이 -129이면 127이지만 Java 에서는 안정성 때문에 컴파일 시 error 발생

하지만 초기화 후 증감연산에 대해서는 C언어와 같음

 

(3) short

- 크기: 2 byte

- 자료형 입출력범위: -32768 부터 32767 까지

 

(4) char

- 크기: 2 byte

(주로 UNICODE 사용 - ch= 65, ch='A', ch='\n'

- 아스키코드: 1 byte 문자를 표현, 0 ~ 255 문자범위

- 유니코드(세계문자표준): 2 byte 문자를 표현, 0 ~ 65535 문자범위

유니코드는 세계 여러 국가의 문자들을 표현하는데 어려움이 있어서 1 byte를 추가 할당해서 표현 

 

(5) int (정수 자료형의 기본)

- 크기: 4 byte 

 

(6) float, double: 실수형 (double이 실수 자료형의 기본)

- float 크기: 4 byte (double 보다 크기 작지만 표현할 수 있는 값의 범위가 넓음. 다만 오차 있을 수 있으며, 정밀도는 double이 더 높음)

- double 크기: 8 byte

FYI: 기본적으로 실수는 8 byte 사이즈의 double 에 저장되며, 이에 따라 4 byte 사이즈의 float 에는 저장되지 않아 오류 발생.

4 byte로 저장하기 위해 식별자 F 혹은 f 사용해야함(대부분 소문자 f 사용하는 것 같음)

예를 들어 float f = 3.14f 

 

7. Wrapper Class

- 기본 데이터형을 Class화 해줌

- 기본 자료타입(Primitive type)을 객체로 다루기 위해 사용하는 클래스들을 래퍼 클래스라고 함

- 래퍼 클래스로 감싸진 기본 타입값은 외부에서 변경할 수 없음

- 다른 것들은 첫글자만 대문자 사용하면 되는데, int와 char 는 Integer와 Character 로 사용해야함

- 래퍼 객체 내부의 값을 비교하기 위해 == 연산자를 사용할 수 없음. == 는 내부 값을 비교하는게 아니라 래퍼 객체의 참조 주소를 비교하기 때문이다. 따라서 equals 를 사용해야함

- 래퍼 클래스와 기본 자료형의 비교를 원한다면  == 연산과 equals 연산 모두 사용 가능함

- 예시 (8번부터 15번 line)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.lang.*;
public class WrapperEx{
 
    public static void main(Stirng[] args) {
        byte a min = Byte.MIN_VALUE;
        byte a max = Byte.MAX_VALUE;
        char a min = Byte.MIN_VALUE;
        char a max = Byte.MAX_VALUE;
        int a min = Byte.MIN_VALUE;
        int a max = Byte.MAX_VALUE;
        float a min = Byte.MIN_VALUE;
        float a max = Byte.MAX_VALUE;
 
        System.out.println("byte = " + a_min + " ~ " + a_max);
        System.out.println("char = " + (int) b_min + " ~ " + (int) b_max);
        System.out.println("int = " + c_min + " ~ " + c_max);
        System.out.println("float = " + d_min + " ~ " + d_max);
    }
 
}
 
cs

 

출처: coding-factory.tistory.com

 

아래 블로그에 자세히 설명되어 있고 박싱, 언박싱 / 자동박싱, 자동언박싱에 대한 설명도 나와있음!

[Java] 래퍼 클래스(Wrapper Class)란 무엇인가? (박싱, 언박싱) (tistory.com)

 

[Java] 래퍼 클래스(Wrapper Class)란 무엇인가? (박싱, 언박싱)

 래퍼 클래스란(Wrapper Class)? 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어집니다. 대표적으로 기본 타입은 char, int, float, double, boolean 등이 있고 참조..

coding-factory.tistory.com

 

8. 형 변환

매번 형변환하는건 비효율적 -> 이럴 때 사용하는게 Generic(제네릭)..! 

FYI: 추후 포스팅 예정이나, 제네릭 관련해서 미리 공부하고 싶다면 아래 블로그 참고. 재미있게 작성하신 것 같음

[Java] #8-3 자바 Generic과 W.. : 네이버블로그 (naver.com)

 

[Java] #8-3 자바 Generic과 Wrapper class - 1

본 포스팅은 국비지원으로 모바일앱을 수강하며 배웠던 수업 내용을 기록한 포스팅입니다. 언어를 배우고 ...

blog.naver.com

 

(1) 프로모션(자동/묵시적 형변환 =업캐스팅): 작은 타입이 큰 타입으로 들어감

- 묵시적 변환: 자료형의 크기가 서로 다른 자료의 연산 결과는 크기가 큰 자료형으로 자동 변환

(2) 디모션(강제/명시적 형변환 = 다운캐스팅): 큰 타입이 작업 타입으로 들어감

- 프로그래머가 cast연산자를 이용해 그 순간만 필요한  자료형으로 변경할 수 있음 = casting = 형변환

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
//프로모션 (자동)
short a,b;
a = b = 10;
int c = a + b;
 
//디모션 (명시해야함)
int c = 0;
short s = 10;
c = (int)(10+3.5f);
 
cs

 

(3) 숫자 -> 문자열

- String ss = String.valueOf(number);

 

(4) 문자열 -> 숫자

- byte b = Byte.parseByte(str);

- short s = Short.parseShort(str);

- int i = Integer.parseInt(str);

- long lo = Long.parseLong(str);

- float f = Float.parseLong(str);

- double d = Double.parseDouble(str);