1. 변 수( variable ) 



간단한 프로그래밍을 한다고 가정해봅시다. 

간단한 경우라면 숫자 값을 바로 입력해서 계산을 진행 할 수있습니다.

하지만 계산이 길어지거나 똑같은 숫자값의 반복이 계속되는 경우가 생긴다면 어떻게 될까요?

계산식이 고차원화 된다면 어떻게 될 까요?

이미 계산된 값을 쓰고 싶어도, 그 계산된 값이 저장되어 있지 않으니 처음부터 계산을 수행해야합니다. 


그렇기 때문에 변수를 사용합니다. 더 효율적이고, 어찌보면 바람직합니다.


변수란, 값을 저장할 수 있는 메모리 공간을 말합니다. 



자! 그러면 변수에 값을 저장하여 프로그래밍을 하려면 어떻게 해야 할 까요?


변수를 선언(생성) 하고 값을 저장(초기화) 해주어야 합니다.


1
2
3
4
5
6
7
8
9
10
11
public class JavaVariableExample {
    public static void main(String[] args) {
        
        int number; 
        // int 형 변수 number 선언
 
        int number1 = 30;
        // int 형 변수 number1 선언하고 숫자값 30 
    }
}
 
cs


위의 경우는 2가지 형식으로 변수를 선언하는 것을 보여줍니다.


첫번째는 int 형식을 저장하기위해  number 라는 이름의 변수를 선언한 것입니다.

즉, int (변수타입) number (변수이름) 라고 볼 수있습니다. 

참고로 선언 후 ; 라는 따옴표를 붙여주어야 합니다. (문장끝냄의 의미)


두번째는 number1 이라는 변수를 선언과 동시에 30이라는 숫자값을 저장(초기화)한 것입니다.

이제 number1 변수 안에는 30이라는 숫자값이 담겨있습니다. 


** 사용하는 이클립스를 열어서 클래스를 하나 만들어 봅시다. 그런 다음 변수를 하나 만들어 보세요.


1
2
3
4
5
6
7
8
9
public class JavaVariableExample {
    public static void main(String[] args) {
        
        int number1 = 200//변수에 값 저장
        
        System.out.println(number1);  //출력
    }
}
 
cs


위의 코드를 컴파일하면 200 이라는 값을 얻을 수 있습니다. 


결과

1
200                                                                
cs




위와 같은 방법을 통해 여러분은 변수를 생성하고 값을 초기화(저장) 할 수 있습니다.

그렇다면 아래와 같은 궁금증이 생깁니다. 


질: 변수이름은 내가 원하는 대로 아무렇게나 지어도 상관없나요?


답: 사실 변수이름을 선언하는 데에도 몇가지 규칙이 있습니다.



어떤 규칙이 있는지 살펴보도록 합시다.



 대소문자가 구분된다.

 길이에 제한이 없다.

 변수명에 예약어가 올 수 없다.

 숫자로 시작할 수 없다.

 특수문자는 _(언더바)와 $만 가능하다.

 상수는 모두 대문자로 작성한다. 

 여러단어로 이루어진 경우 단어의 첫글자를 대문자로 한다.  EX) VariableExample

 한글로도 작성가능하나, 영어를 원칙으로 한다.


예약어는 키워드라고도 하며, 시스템상에서 이미 쓰이는 단어를 말합니다. 위와 같은 명명규칙을 참고하여 이름을 짓도록 합시다.




2. 데이터 타입 


1장에서 int 형식의 변수를 만들어 봄을 통해 변수타입에도 여러종류가 있다는 것을 간접적으로 추측 할 수 있었습니다. 

이런 변수의 타입 즉, 값을 저장할 수 있는 데이터의 타입은 9개가 있습니다.


크게는 기본형(primitive type)참조형(reference type)와 같이 2 분류로 나누어 집니다.

기본형은 8가지이고, 참조형은 기본형을 제외한 나머지타입을 말합니다.




먼저 기본형을 살펴보도록 합시다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class JavaVariableExample { 
    public static void main(String[] args) {
        
        boolean booleanType;
        
        char charType;
        
        byte byteType;
        
        short shortType;
 
        int intType;
        
        long longType;
        
        float floatType;
        
        double doubleType;
        
    }
}
cs



기본형 8가지를 분류하면 논리형, 문자형, 정수형, 실수형과 같이 4가지로 분류가 가능합니다. 

 

논리형 => true, false 2가지 중 하나의 값을 가지며, 계산 시 참인지 거짓인지를 판단할 시 사용합니다.
문자형 => 문자를 저장할 때 사용합니다.
정수형 => 정수(양수에서 음수까지)값을 저장하는데 사용합니다.
실수형 => 실수 값을 저장하는데 사용합니다.


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
27
28
29
30
public class JavaVariableExample {
    public static void main(String[] args) {
        
        //논리형
        boolean booleanType = true;
        
        //문자형
        char charType ='a';
        
        //정수형 int, long, byte(이진데이터를 위한), short
        byte byteType = 127;
        short shortType = 32767;
        int intType = 2147483647
        long longType = 9223372036854775807L;
        
        // 실수형 float, double
        float floatType = 3.4028235E38F;
        double doubleType = 1.7976931348623157E308;
        
        System.out.println(booleanType);
        System.out.println(charType);
        System.out.println(byteType);
        System.out.println(shortType);
        System.out.println(intType);
        System.out.println(longType);
        System.out.println(floatType);
        System.out.println(doubleType);
        
    }
}
cs



기본형을 연습해 보기위해 위와 같이 작성하고 컴파일 해봅시다.


결과

1
2
3
4
5
6
7
8
true
a
127
32767
2147483647
9223372036854775807
3.4028235E38
1.7976931348623157E308                                  
cs





논리형에는 boolean 한가지 밖에 없습니다. 저장 값도 true, false 두가지 뿐입니다. 

기본값은 false입니다. boolean은 논리식, 조건식등에 주로 사용됩니다.


문자형에도 char 한가지 뿐입니다. 

char형은 2byte크기를 가지고 있고, 65536개의 값을 표현할 수 있습니다.

참고로 문자형도 사실 문자는 저장한다기 보다는 문자를 나타내는 정수값이 저장되고 출력이 문자로 표현된다고 이해하시면 됩니다. 컴퓨터의 모든데이터는 숫자로 표현되기 때문이죠.


정수형에는 byte, short, int, long 이렇게 4가지 타입이 있습니다. 크기는 long이 가장 크고, 그 다음 int, short, byte 순입니다. 보통 int 형과 long 형을 많이 씁니다. 또한 long형을 쓸 때는 long longType = 9223372036854775807L; 처럼 맨뒤에 영문자 L을 붙여야 합니다. 대소문자 상관없이 엘(L) 자를 붙여주여야 합니다. 일종의 표시라고 이해하시면 쉽습니다.


실수형에는 float과 double 형 2가지가 있습니다. float과 double은 크기가 각각 4byte, 8byte로 int, long형과 동일합니다.하지만 크기만 같을 뿐 좀 더 넓은 표현이 가능합니다. 소수점이 표현되기 때문이지요.


위의 정수형에서 long타입은 저장하려는 값끝에 L을 붙여야 한다고 했습니다.

실수형에서 float에도 저장하려는 값 뒤에 F를 붙여주어야 합니다. float이라는 표시라고 이해하시면 쉽습니다. 

double 형에는 뒤에 따로 붙이지 않으니 그냥 써주시면 됩니다.  






참조변수는 프로그래머가 직접 만들어서 사용할 수 있으므로 기본형처럼 수가 정해져 있지는 않습니다.

또 기본형이 실제 계산값을 저장하는 변수타입이라면, 참조형은 어떤 값이나 형식이 저장되어있는 주소를 값으로 가집니다.

단순히 주소값을 가진다고 이해하시면 쉽습니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
public class JavaVariableExample1 {
    public static void main(String[] args) {
        ReferenceType referenceTypeRt;
        
    }
}
 
 class ReferenceType{
    
    private void showTalk() {
        
    }
}
cs




살펴보면 처음만든 JavaVariableExample1 클래스가 있고, 그 아래 ReferenceType 클래스가 있는 것을 알 수 있습니다.

main 메소드안에 ReferenceType 클래스 타입의 referenceTypeRt라는 변수를 만들었습니다.

여기서 referenceTypeRt는 변수이긴한데 계산을 위한 값이 저장되기 보다는 ReferenceType 클래스내용을 참조하기 위한 주소가 저장되기에 참조변수라고 불립니다.

그렇기에 참조변수는 사용자에 따라서 무수히 많이 생성될 수 있습니다.


기본형과는 다른 차이가 있다는 게 느껴지시나요?

기본형 변수와 참조형 변수의 차이를 잘 기억하시기 바랍니다.


+ Recent posts