# 복습


1. 변수란, 단 "하나"의 값을 저장할 수 있는 "메모리 공간" 이다.

2. 변수의 선언: int num;

    변수의 초기화: num = 10;



1. 변수의 명명규칙


1) 알파벳의 대소문자를 구분한다. 길이에 제한이 없다.

ex ) num ≠ Num


2) 숫자로 시작할 수 없다.

ex) 1test(X), t1est(O)


3) 특수문자는 _ , $ 두 개만을 허용한다.

    공백도 사용할 수 없다.

ex) int my money = 100; (X)


4) 예약어(키워드)는 변수명으로 사용할 수 없다.

    이클립스에서 자주빛 단어는 예약어

ex) int, class, public, static ...



# 관례


1) 패키지, 변수, 메서드명은 첫글자를 "소문자"로 시작한다.

ex) Package printex, int num


2) 클래스명은 첫글자를 "대문자"로 시작한다.

ex) Class VarTest01


3) camel 표기법 (낙타 표기법)

ex) iPhone, myMoney


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
package variableex;
 
public class VarTest04 {
    public static void main(String[] args) {
        
        /*
         * 변수명을 선언할 때 의미있는 단어의 조합으로 하며
         * 다른 사용자가 보았을 때 알 수 있도록 주석을 달아놓는 것이 좋다.
         * */
        int curPos = 0;        // 현재 위치(current position)
        int lasPos = -1;    // 마지막 위치(last position)
        
        int age = 10;
        System.out.println(age);        // 10
        System.out.println(age + 1);    // 11
        System.out.println(age);        // 10
        
        /*
         * 대입 연산자를 사용하여 연산을 해야만 값이 변경된다.
         * 위의 System.out.println(age + 1);의 경우는 일회성으로 계산이 된다. 
         * */
        age = age + 1;                    // 11
        System.out.println(age);        // 11
        
    }
}
cs




2. 자료형 (data type, 데이터 타입)


1) 기본형 타입(primitive type)

#1. 정수형

byte (1byte)

short (2byte)

int (4byte)

long (8byte)


#2. 실수형

float (4byte)

double (8byte)


#3. 문자형

char (2byte)

* C,C++에서는 1 byte


#4. 논리형

boolean (1byte)


2) 참조형 타입(reference type)

# 문자열: String



3) 데이터 타입 표



3. 숫자형


# 정수형

1) byte

- 1byte

- -128 ~ 127


2) short

- 2byte

- -32,768 ~ 32,767


3) int (*기본형)

- 4byte

- 약 ± 21억


4) long

- 8byte

- -2^63 ~ 2^63-1

- 접미사 L을 붙여야 한다.



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
31
32
33
34
package variableex;
 
public class VarTest05 {
    public static void main(String[] args) {
        
        byte b = 10;
//    byte b2 = 128;    // byte의 크기 범위: -128~127
        
        short s1 = 150;
        short s2 = 100;
        
        int i1 = 150;
        int i2 = 100;
        
        System.out.println(s1 + s2);
        System.out.println(i1 + i2);
        
        /*
         * CPU는 내부적으로 int형 정수연산을 가장 고속으로 처리하게끔 설계가 되어있다.
         * 따라서 정수형 연산을 진행할 때에는 int형으로 저장해주는 것이 좋다.
         * 
         * short형으로 선언하면 메모리 효율측에서는 좋겠지만 CPU 내에서 계산을 2번 하는 것과 같다.
         */
        
        /*
         * 접미사 (l, L)는 대소문자를 가리지 않지만 되도록 대문자를 사용하는 것을 추천!
         * 소문자 l이 다른 문자와 혼동될 수 있기 때문
         */
        
//    long l = 1000000000000;        // error!
        long l = 1000000000000L;
        
    }
}
cs



# 실수형

5) float

- 4byte

- 소수점 이하 6~7 자리 표현 가능

- 접미사 F를 붙여야 한다.


6) double (*기본형)

- 8byte

- 소수점 이하 15~16 자리 표현 가능



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package variableex;
 
public class VarTest06 {
    public static void main(String[] args) {
        
        float f = 3.14F;
        
        double d = 1.5;
        
        double d1 = 1.00001;
        double d2 = 2.00002;
        
        // 실수 연산에 있어서는 컴퓨터도 오차범위가 있음
        System.out.println(d1 * d2);
        
    }
}
cs



# 접미사 (ex. int)

- 접미사는 대소문자를 가리지 않지만 되도록 대문자를 사용하는 것을 추천!


# short VS int

1) CPU는 내부적으로 int형 정수연산을 가장 고속으로 처리하게끔 설계가 되어있다.

    따라서 정수형 연산을 진행할 때에는 int형으로 저장해주는 것이 좋다.


2) short형으로 선언하여 사용하면 메모리 효율 측에서는 좋겠지만

    CPU 내에서 계산을 2번 하는 것과 같다. 


# 자바에서는 unsigned 타입을 제공하지 않음. 

- 즉, 숫자형은 무조건 부호를 갖고 있음.


# 데이터형에 따른 크기와 범위





4. 문자형


- char

- 2byte

- 문자는 홑따옴표로 표현한다.

- char 타입은 문자를 내부적으로 숫자로 저장한다.

- 때문에 연산이 가능하다.

- 아스키코드

'0' = 48

'A' = 65

'a' = 97


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package variableex;
 
public class VarTest07 {
    public static void main(String[] args) {
        
        char ch1 = 'A';
        System.out.println(ch1);
        
        char ch2 = 'A' + 32;    // 65 + 32 = 97
        System.out.println(ch2);
        
        boolean b1 = true;
        boolean b2 = false;
        
        System.out.println(3<4); // true
        System.out.println(3>4); // false
        
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
package variableex;
 
public class VarTest08 {
    public static void main(String[] args) {
        
        String strNum1 = "10";
        String strNum2 = "20";
        System.out.println(strNum1 + strNum2);
        
    }
}
cs


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
31
32
33
34
35
36
37
38
39
40
package variableex;
 
/*
 * 책 정보를
 * 알맞은 자료형과
 * 적절한 변수명을 활용하여 저장 및 출력해보세요.
 * 
 * 제목  : 그림으로 배우는 자바
 * 저자  : Mana Takahashi
 * 가격  : 18000원
 * 크기  : 14.1 X 20.5
 * 출판사: 영진닷컴
 * */
 
public class VarTest09 {
    public static void main(String[] args) {
        
        String title = "그림으로 배우는 자바";
        System.out.printf("제목  : %s\n", title);
//        System.out.println("제목  : " + title);
        
        String author = "Mana Takahashi";
        System.out.printf("저자  : %s\n", author);
//        System.out.println("저자  : " + author );
        
        int price = 18000;
        System.out.printf("가격  : %d원\n", price);
//        System.out.println("가격  : " + price + "원");
        
        double width = 14.1;
        double height = 20.5;
        System.out.printf("크기  : %.1f X %.1f\n", width, height);
//        System.out.println("크기: " + width + " X " + height);
        
        String company = "영진닷컴";
        System.out.printf("출판사: %s\n", company);
//        System.out.println("출판사: " + company);
        
    }
}
cs




5. 논리형


- boolean

- 1 byte

- 참(true)과 거짓(false)


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
package variableex;
 
public class VarTest10 {
    public static void main(String[] args) {
        
        /*
         * 삼각형과 사각형의 면적을 구하는 공식
         * 길이 = 20cm / 높이 = 10cm
         * 
         * (20 * 10) / 2;
         * 20 * 10;
         * */
        
        int width = 20;
        int height = 10;
        
        int triArea = (width * height) / 2;
        int recArea = width * height;
        
        System.out.println("삼각형의 면적: " + triArea);
        System.out.println("사각형의 면적: " + recArea);
        
        /* 변수의 필요성
         * 변수는 데이터에 의미있는 이름을 붙여 코드의 이해와 수정을 쉽게 만들어준다.
         */
        
    }
}
cs




# 변수의 필요성


변수는 데이터에 의미있는 이름을 붙여 코드의 이해와 수정을 쉽게 만들어준다.

#day03_workspace > VarTest10.java

'JAVA > JAVA1' 카테고리의 다른 글

JAVA1_day04 | 추가공부  (0) 2017.12.12
JAVA1_day04 | 데이터 형변환  (0) 2017.12.12
JAVA1_day03 | 추가공부  (0) 2017.12.12
JAVA1_day02 | 출력문2, 변수  (0) 2017.12.08
JAVA1_day01 | 출력문1  (0) 2017.12.07