1. Final (상수)


# 상수를 사용하지 않은 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package dateex;
 
public class FinalTest01 {
    public static void main(String[] args) {
 
        int grade = 3;
        int sale = 0;
        
        switch(grade) {
        case 1: sale = 30break;
        case 2: sale = 20break;
        case 3: sale = 10break;
        case 4: sale = 5break;
        }
        
        System.out.print(sale + "%할인");
        
    }
}
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
package dateex;
 
public class FinalTest02 {
    
    public static final int PLATINUM_MEMBER = 1;
    public static final int ROYAL_MEMBER = 2;
    public static final int GOLD_MEMBER = 3;
    public static final int SILVER_MEMBER = 4;
    
    public static void main(String[] args) {
 
        int grade = GOLD_MEMBER;
        int sale = 0;
        
        switch(grade) {
        case PLATINUM_MEMBER: sale = 30break;
        case ROYAL_MEMBER: sale = 20break;
        case GOLD_MEMBER: sale = 10break;
        case SILVER_MEMBER: sale = 5break;
        }
        
        System.out.print(sale + "%할인");
        
    }
}
cs



2. wrapper 클래스 


# wrapper 클래스란, 기본형 8가지를 클래스로 정의한 것이다.


1) 기본형 타입 wrapper class


    



2) 박싱(Boxing)과 언박싱(Unboxing)


* JDK 1.5부터 박싱과 언박싱은 자동으로 이루어진다.

Integer ten = 10;        // auto boxing

int n = ten;                 // auto unboxing


int > Integer     // auto boxing

Integer > int     // auto unboxing


# wrapper 클래스 연습하기 (1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package wapperex;
 
public class WrapperTest01 {
    public static void main(String[] args) {
 
        Integer num1 = new Integer(100);
        Integer num2 = new Integer("100");
        
        System.out.println(num1);                   // toString의 오버라이딩 
        System.out.println(num1 == num2);
        System.out.println(num1.equals(num2)); // equals의 오버라이딩 
        
    }
}
 
# 실행 결과
100
false
true
cs


# wrapper 클래스 연습하기 (2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package wapperex;
 
public class WrapperTest01 {
    public static void main(String[] args) {
 
        String str = "10";
        // int num3 = (int)str;    // Cannot cast from String to int
        int num3 = Integer.parseInt(str);
        System.out.println(num3 + 100);
        
    }
}
 
# 실행 결과
110
cs

# 설명

Line 7: 문자열을 정수형으로 명시적 형변환을 하여도 처리할 수 없다.

Line 8: 대신 Integer 클래스의 parseInt() 메소드를 사용하여 정수형으로 형변환을 할 수 있다. 


# wrapper 클래스 연습하기 (3)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package wapperex;
 
public class WrapperTest01 {
    public static void main(String[] args) {
 
        Integer it = new Integer(100);
        int num4 = it; // JDK 1.5이후부터 가능 
        int num5 = it.intValue(); // JDK 1.4까지 이렇게 사용
 
        System.out.println("Integer.MIN_VALUE: " + Integer.MIN_VALUE);
        System.out.println("Integer.MAX_VALUE: " + Integer.MAX_VALUE);
        System.out.println("Long.MIN_VALUE: " + Long.MIN_VALUE);
        System.out.println("Long.MAX_VALUE: " + Long.MAX_VALUE);
        
    }
}
 
# 실행 결과
Integer.MIN_VALUE: -2147483648
Integer.MAX_VALUE: 2147483647
Long.MIN_VALUE: -9223372036854775808
Long.MAX_VALUE: 9223372036854775807
cs

# 설명

Line 7: JDK 1.5 이후부터 박싱과 언박싱을 사용할 수 있으며, Line 7의 코드는 언박싱의 경우이다. 

Line 8: JDK 1.4 까지는 Integer 클래스의 intValue() 메소드로 int형으로 형변환해야한다. 

Line 10~13: Integer 클래스와 Long 클래스의 최대값, 최소값을 출력한다.


# 1부터 100까지의 곱 구하기 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package wapperex;
 
import java.math.BigInteger;
 
public class WrapperTest02 {
    public static void main(String[] args) {
 
        BigInteger result = BigInteger.ONE;
        
        for(int i=1; i<=100; i++) {
            result = result.multiply(BigInteger.valueOf(i));
        }
        
        System.out.println(result);
        
    }
}
 
# 실행 결과
93326215443944152681699238856266700490715968264381621
46859296389521759999322991560894146397615651828625369
7920827223758251185210916864000000000000000000000000
cs

# 설명

- long형의 최대값으로도 담을 수 없는 연산 결과는 BigInteger 클래스를 사용하여 다룬다.


Line 8: BigInteger 클래스를 이용하여 변수 result를 선언하고 BigInteger.ONE(1)로 초기화한다. 

Line 11: BigInteger 클래스의 연산은 메소드를 통하여 처리하는데 곱셈은 multiply();로 다룬다.

누적해서 곱해야하는 int i는 BigInteger result와 연산할 수 없으므로,

BigInteger 클래스의 valueOf() 메소드를 통하여 형변환한 후 곱한다. 



3. 버전 선택하여 컴파일하기


# Window: Window - Preferences - Java - Compiler - Configure Project(파란색) - Use Compilance Execution ... 체크 해제 - 버전 선택(JDK 1.4)