Ⅰ. 변수(Variable)

변수의 3가지 특징


첫째, 임시기억장소이다.


둘째, 반드시 변수선언을 해야 한다. 


셋째, 반드시 초기화를 해야한다.


1. 임시기억(저장)공간

컴퓨터에서 임시기억 공간은 메모리(램, 주기억장치)를 의미한다.

+ (더하기) 는 숫자끼리 있을 때는 덧셈이고 문자끼리 있을 때는 문자화 된다.
문자가 있을 때 숫자를 연산해주려면 숫자끼리 괄호를 쳐 주면 된다.

class Var1{
    public static void main(String[] args){
        System.out.println("***급여관리 프로그램***");
        System.out.println("*****************");
        System.out.println("기본급 : " + 10000);
        System.out.println("세금 : " + 10);
        System.out.println("보너스 : " + 100);
        System.out.println("총급여 : " + (10000 - 10 + 100));
    }
}


이런 급여관리 프로그램이 있을 때 값이 변한다면 프로그래머는 항상 그 값을 바꾸어주어야 한다. 
유지보수와 관리가 어렵기 때문에 다른 방법을 생각해냈다.

'변수(variable)'는 프로그래밍에서 값을 임시로 저장하기 위한 공간이다.
절대로 변할 일이 없는 실제값 '상수(literal)'라면 변수를 쓰지 않는다.

class Var1{
    public static void main(String[] args){
        // 왼쪽에는 값을 저장할 수 있는 메모리가 와야하고 오른쪽에는 값이 나와야한다.
        // '=' 오른쪽에 있는 값을 왼쪽에 있는 창고에다가 대입하겠다.
        // 'pay' 변수, 저장창고
        int pay = 10000;
        
        System.out.println("***급여관리 프로그램***");
        System.out.println("*****************");
        System.out.println("기본급 : " + pay);
        System.out.println("세금 : " + 10);
        System.out.println("보너스 : " + 100);
        System.out.println("총급여 : " + (pay-10+100));
    }
}


2. 변수선언과 초기화

변수선언이란 ? 
메모리를 쓰겠다고 선언한 것.
변수선언을 해야만 메모리를 쓸 수 있다.

변수선언 신고양식

방법1.
데이터타입 변수명; 
변수명 = 값;

방법2.
데이터타입 변수명 = 값;

변수는 반드시 초기화해야한다.

초기화처음 변수에 어떤 값을 넣는 것을 의미한다.

초기값이란 변수가 태어나자 마자 가장 첫번째로 들어간 값이다.

class Var2{
    public static void main(String[] args){
        byte var;
        var=127;
        //var = 128; 에러확인
        
        char var2 = 'a';
        var2= '가';
        //var2 = "a";
        
    }
}

3. 반드시 변수가 선언된 곳에서만 사용할 수 있다.(유효범위)

변수의 유효점위는 변수가 선언된 곳이다.
변수가 선언된 범위 밖을 벗어난다면 변수를 사용 할 수 없다.

프로그램에서 가장 중요하게 염두해 두어야 할 것은 Data이다.
변수는 Data를 보관하기 위한 기본적인 방법이다. 그래서 매우 중요하다. 

Ⅱ. 데이터타입 Data Type

Data Type을 왜 쓸까?
만약에 누군가가 땅을 사려고 한다면 
땅 주인에게 두 가지는 말해주어야 한다.

1. 어떤 용도로 쓸 것인가?
2. 얼마만큼의 크기를 쓸 것인가? 

컴퓨터도 마찬가지이다.
Data Type은 컴퓨터에게 메모리 공간을 어떤 용도로 얼마나 쓸지 알려준다. 

변수에 타입을 선언한 뒤 해당 타입보다 
큰 값을 변수에 넣으면 컴파일 에러가 난다.

아래 '기본 데이터 타입표'를 보자.

1. 기본 Data Type (비객체 Data Type)

용도                           크기
--------                       --------
정수형                       byte (1byte)
                                short (2byte)
                                int(4byte) - default
                                long(8byte)
실수형                       
                                float (4byte)
                                double (8byte) - default
문자형                       
                                char(2byte)
논리형
                                boolean - true, false
                                (다른 값으로 대체할 수 없음. 오직 true, false 만 가능)

컴퓨터 정보표현 단위
bit(0,1) < byte(8bit) < kb(1024byte) < Mb(1024byte) < Gb(1024Mb) < Tb(1024Gb)

java의 최소단위, bite
컴퓨터에서 bit는 정보를 표현할 수있는 최소단위이다.
bit는 정보를 저장할 수 있는 단위가 아니라 표현할 수 있는 단위이다.
byte 부터가 정보를 저장할 수 있는 최소단위이다.
10byte는 영문자 10개를, 한글은 5개를 저장 할 수 있다.

C나 C++은 최소단위가 bit인데 반해, Java는 최소단위가 bite이다.
이는 영어를 제외한 다른 문자도 저장 할 수 있도록 한 것이다.

ASCⅡ(아스키코드)와 유니코드
ASCⅡ(아스키코드)는 영어 밖에 입력 할 수 없다.
아스키코드는 128개(a~z, A~Z, 특수문자)라는 
영미권에서 필요한 문자를 모아놓았다. 

ASCⅡ(아스키코드) + 1 byte = 유니코드
유니코드는 아스키코드에 1byte를 더 확장하여 
세상의 모든 문자를 담을 수 있는 코드방식이다.

C, C++아스키코드방식이고 Java유니코드방식이다.






2. 객체 Data Type
1. 객체 Data Type은 사용자 정의 데이터 타입이다.
2. 객체 Data Type은 class로 작성한다.
   - 이 때 class는 데이터타입을 만드는 용도로 사용한다.

'문자'와 '문자열'은 다르다!
문자 : 1문자, '  '
문자열 : 1문자 이상, '' "

왜 데이터타입을 써야 되는지 생각하자
변수를 선언하기 위해서 데이터타입이 필요하다. 

{ } 중괄호와 중괄호 사이를 '블럭'이라고 말한다.
이 { } 블럭은 데이터타입과 변수를 사용할 수 있는 범위를 지정해준다. 

class Var3{
    public static void main(String[] args){
        int a = 10;
        {
            int b = 20;
            {
                int c = 30;
                System.out.println("c=" + c);
                System.out.println("a=" + a);
                System.out.println("b=" + b);
            }
            System.out.println("b=" + b);
        }
        System.out.println("a=" + a);
        //System.out.println("b=" +b); 에러확인
    }

}

※ 결과값
c=30
b=20
b=20
b=20
a=10

여기에서 주석으로 표시된 System.out.println("b=" +b) 코드를 

주석을 풀고 실행하면 에러가 난다.

그 이유는 int b = 20; 가 해당하는블럭 {} 의 범위를 벗어났기 때문이다.

+ Recent posts