[Java] 변수 사용과 변수 타입 별 특징

[변수]

컴퓨터 메모리(RAM)는 값을 저장할 수 있는 수많은 번지(주소)들로 구성되어 있다.

 

변수는 값을 저장할 수 있는 메모리의 특정 번지에 붙이는 이름이다. 프로그램은 변수를 통해 메모리의 특정 번지에 값을 저장하고 읽을 수 있다. 따라서 메모리에 값을 저장하고 싶으면 변수를 써야 하며, 이 변수를 메모리의 어디에 저장하고 어떤 방식으로 저장할지는 프로그래밍 언어와 운영체제가 정한다. 자바의 경우는 JVM이 한다.

 

[변수 사용]

변수 명으로 예약어는 쓸 수가 없는데 예약어는 이미 해당 프로그래밍 언어에서 의미를 갖고 사용되는 단어이다. 만약 사용하면 컴파일 에러가 발생한다. 

※ 예약어 ex) boolean, true, try, void, return, private, class, import, final, package

 

변수 명은 어떤 값을 저장하고 있는지 쉽게 알 수 있도록 지어주는 것이 좋으며, 길어도 상관없다. 또 한 변수 명에 한글은 안쓰는 것이 좋다.

자바에서 변수는 값이 저장되지 않으면 변수가 생성되지 않는다. 변수에 최초로 값이 저장될때 변수가 생성되고, 이것을 변수 초기화 라고 한다.

 

변수는 자신이 선언된 위치에서 자신이 속한 블록 내부까지만 사용이 가능하고 밖에서는 사용할 수 없다.

 

[기본 타입]

변수를 선언할 때 주어지는 타입에 따라 변수에 저장할 수 있는 값의 종류와 허용 범위가 달라진다.

자바는 정수, 실수, 논리값을 저장할 수 있는 기본(primitive) 타입을 제공하고, 총 8가지를 제공 한다. 메모리 사용크기 는 알아둘 필요가 있다.

 

정수 타입 : byte(1 byte), short(2 byte) , char(2 byte) , int(4 byte) , long(8 byte)

실수 타입 : float(4 byte), double(8 byte)

논리 타입 : boolean(1 byte)

 

소스코드에서 프로그래머에 의해 직접 입력된 값을 리터럴(literal) 이라고 부르는데 입력된 리터럴이 정수면 정수 리터럴 이라고 한다. 따라서 정수 리터럴은 정수 타입 변수에 담아야 한다.

 

2진수 : 0b 또는 0B로 시작하고 0과 1로 구성된다 ex)0b1011 -> 11

8진수 : 0으로 시작하고 0~7 숫자로 구성된다. ex)013 -> 11

10진수 : 소수점이 없는 0~9 숫자로 구성된다.

16진수 : 0x 또는 0X로 시작하고 0~9숫자와 A,B,C,D,E,F 또는 a,b,c,d,e,f로 구성된다.

public class IntegerLiteralExample {
    public static void main(String[] args) {
        int var1 = 0b1011;      //2진수
        int var2 = 0206;        //8진수
        int var3 = 365;         //10진수
        int var4 = 0xB3;        //16진수

        System.out.println("var1: " + var1); //11
        System.out.println("var2: " + var2); //134
        System.out.println("var3: " + var3); //365
        System.out.println("var4: " + var4); //179
    }
}

 

[long 타입]

long 타입은 수치가 큰 데이터를 다루는 프로그램에 사용되고, 대표적으로 은행, 과학 관련된 프로그램들이다.

기본적으로 컴파일러는 정수 리터럴을 int 타입으로 간주하기에 정수 리터럴이 int 허용 범위를 벗어나면 컴파일 에러가 난다. 그래서 정수 리터럴 뒤에 소문자 l 이나 대문자 L을 붙여야 한다.

 

 

[Char 타입]

하나의 문자를 작은따옴표(')로 감싼 것을 문자 리터럴이라고 한다. 문자 리터럴은 유니코드로 변환된다. 유니코드는 세계 각국의 문자를 2byte(0~65535)로 매핑한 국제 표준 규약 이다. 이 유니코드를 저장할 수 있는 타입이 Char 타입이다.

 

char 타입에 문자리터럴, 정수 리터럴 둘다 넣어도 된다. 어차피 문자 리터럴은 정수로 변환되기 때문이다. 그래서 int 타입에 문자 리터럴을 저장 할 수 있다.

char var1 = 'A';
int var2 = 'A';

System.out.println(var1);  //A를 출력
System.out.println(var2);  //65를 출력

 

 

[String 타입]

여러개의 문자를 저장할 때는 큰따옴표(")로 감싸야 하며 이것을 문자열 리터럴 이라고 한다.  문자열 리터럴에서 역슬래쉬가 붙은 문자를 사용할 수 있는데 이것을 이스케이프(escape) 문자라고 한다.

public class EscapeExample {
    public static void main(String[] args) {
        /**
         * \t : 탭만큼 띄움
         * \n : 줄 바꿈(라인 피드)
         * \r : 캐리지리턴
         * \" : " 출력
         * \' : ' 출력
         * \\ : \ 출력
         */

        System.out.println("번호\t이름\t직업");
        System.out.print("1행 단위 출력\n");
        System.out.print("2행 단위 출력\r");
        System.out.println("우리는 \"개발자\" 입니다.");
        System.out.print("봄\\여름\\가을\\겨울");
    }
}

 

[실수 타입]

float 타입은 소수점 7자리 까지 저장할 수 있고, double은 소수점 15자리 까지 저장할 수 있다. 

정수형의 int 처럼 일반적으로 실수 리터럴은 double 타입으로 인식한다. 그래서 실수 리터럴을 float에 저장하려고 할때 에러가 나며 뒤에 f나 F를 붙여줘야 한다.

 

알파벳 e또는 E가 포함되어 있는 숫자 리터럴은 지수가 가수로 표현된 소수점이 있는 10진수 실수로 인식한다.

314e-2  = 314 * 0.01

314e2 = 314 * 100

 

 

참고 : 혼자 공부하는 자바 / 신용권  https://www.yes24.com/Product/Goods/74269939  

댓글

Designed by JB FACTORY