Wrapper 클래스


Byte, Short, Integer, Long, Double, Float, Character

기본자료형(원시형)과 달리 Wrapper 클래스는 데이터 저장, 4칙연산, 메서드 기능이 제공된다.

 

//아스키코드에서 A 는 "65", a 는 "97" 이다. 즉, 대문자와 소문자 차이는 32 이다.

 

Wrapper클래스.toUpperCase()

Wrapper클래스.toLowerCase()

 

영문자에서 소문자를 대문자로 또는 대문자를 소문자로 바꾸려는 경우에 사용한다.

 

Wrapper클래스.isUpperCase()

Wrapper클래스.isLowerCase()

Wrapper클래스.isDigit()

 

( ) 안의 값이 대문자, 소문자, 숫자인지 여부를 확인하는 경우에 사용한다.

 

1
2
3
4
5
6
7
8
9
Character chr = new Character('a');
System.out.println("cha => "+chr); 
System.out.println(chr+1); 
System.out.println((char)(chr-32));  //'A'
System.out.println((char)('a'-32));  //'A'
System.out.println(Character.toUpperCase('a'));  
System.out.println(Character.toLowerCase('A'));
System.out.println(Character.toUpperCase(97));
System.out.println(Character.toLowerCase(65));
cs

 

char ch1 = sc.nextLine().charAt(0);  

 

입력받은 값에서 첫 번째 index 값을 char로 변경하고자 할 때이다. index 값은 0부터 시작하며, 위와 같이 줄여서 사용할 수 있다는 것을 알아두자.

 

Boxing과 UnBoxing

 

기본형 자료 타입을 객체형인 Wrapper 클래스 형태로 변환하는 것을 Boxing(박싱)이라고 한다. 반대로 Wrapper 클래스에서 기본형 자료 타입으로 변환하는 것은 UnBoxing(언박싱)이다. 그리고 각각의 변환시에 간단하게 코드를 줄여서 작성하게 되면 Auto를 붙여 오토박싱, 오토언박싱이라고 한다.

 

박싱은 기본형자료를 Wrapper 클래스 객체를 새로 선언하여 대입해주는 것이다. 이 때, 매개변수 값이 기본형 자료를 대입한다.

오토박싱은 Wrapper 클래스에 기본형 자료를 선언하여 대입하는 것으로 축약된 형태이다.

 

언박싱은 Wrapper 클래스 객체의 값을 .intValue() 또는 .DoubleValue() 와 같은 메서드를 이용하여 기본형 자료에 대입한다. 

오토언박싱은 기본형 자료에 만든 Wrapper 클래스 객체를 대입하는 것으로 축약된 형태이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int a1 = 10;
Integer a2 = new Integer(a1);  // Boxing(박싱)
System.out.println("a2 => "+a2);  //10
        
int b1 = 10;
Integer b2 = b1;  // Auto Boxing(오토박싱)
System.out.println("b2 => "+b2);  //10
            
Integer a3 = new Integer(20);
int a4 = a3.intValue();           //UnBoxing(언박싱)
System.out.println("a4 => "+a4);  //20
 
int a5 = new Integer(20);           //Auto UnBoxing(오토언박싱)
System.out.println("a5 => "+a5);  //20
        
Double db1 = new Double(21.2345);
double db2 = db1.doubleValue();           //UnBoxing(언박싱)
System.out.println("db2 => "+db2);  //21.2345
        
double db3 = new Double(21.2345);         //Auto UnBoxing(오토언박싱)
System.out.println("db3 => "+db3);  //21.2345
cs

 

Math 클래스


Math.round( )    Math.ceil( )    Math.floor( )   Math.abs( )

 

순서대로 반올림, 올림, 내림, 절대값을 구하고자 할 때 사용되는 메서드이다.

 

특정 소수부에서의 반올림

 

특정 소수부에서 반올림하고자 한다면 반올림하고자 하는 소수점까지의 값을 정수로 만들 수 있도록 해당하는만큼 10의 자리수를 곱하고 다시 나누어 계산한다.  즉, 소수 1자리까지 나타내고 싶으면 Math.round(db1*10)/10.이렇게 작성한다. 다시 나눌 때는 실수 값이 나올 수 있도록 .0을 넣어야 함에 유의한다. 

 

1
2
3
4
5
6
7
8
9
10
11
double db1 = 93.45678, db2 = 86.87654;
        
// == 특정 소수부 자리에서 반올림을 하고자 한다. ==
        
System.out.println("\n === 소수 첫째 자리까지 나타내면서 반올림 한 후 ===");
System.out.println("db1 => "+Math.round(db1*10)/10.0+ ", db2 => " +Math.round(db2*10)/10.0);
//db1 => 93.5, db2 => 86.9
        
System.out.println("\n === 소수 둘째자리까지 나타내면서 반올림 한 후 ===");
System.out.println("db1 => "+Math.round(db1*100)/100.0+ ", db2 => " +Math.round(db2*100)/100.0);
//db1 => 93.46, db2 => 86.88
cs

 

if, else if 문


문자열의 비교

 

문자열을 비교(==)시 기본형처럼 선언한 문자열은 값만을 비교한다. 하지만 String 클래스 객체 선언으로 만든 문자열 비교시에는 그 문자열이 속해 있는 데이터 주소 값을 비교한다.  하지만 a.equals(b) 를 이용하면 주소 값이 아닌 데이터 값 자체를 비교할 수 있다.

 

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package my.day05.c.IF;
 
import java.util.Scanner;
 
public class CalcMain {
 
    public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
        
        try {
            
            System.out.print("첫번째 정수 입력 => ");
            int num1 = Integer.parseInt(sc.nextLine());
            
            
            System.out.print("두번째 정수 입력 => ");
            int num2 = Integer.parseInt(sc.nextLine());
            System.out.print("사칙연산자 선택 (+ - * /) => ");
            String operator = sc.nextLine();
            
            String result = "";
            
            if("+".equals(operator)) {
                result = String.valueOf(num1 + num2);
            } else if ("-".equals(operator)) {
                result = String.valueOf(num1 - num2);
            } else if ("*".equals(operator)) {
                result = String.valueOf(num1 * num2);
            } else if ("/".equals(operator)) {
                if(num2 == 0
                    result = ">>> 분모에는 0 이 올 수 없습니다! <<<";
                else
                    result = String.valueOf((double)num1 / num2);
            } else {
                System.out.println(">> 사칙연산(+ - * /)만 선택하세요. <<"); 
                sc.close();
                return;
            }
                    
            //***삼항연산자
            result = ("/".equals(operator) && num2==0)? result : num1+"+"+num2+"="+result;
            
            System.out.println(result);
            
        } catch (NumberFormatException e) {    
            
            System.out.println(">>> 정수로 입력해주세요! <<<");
            e.getStackTrace();
                        
        }
 
        sc.close();
    }
    
        
}
 
 
cs

 

switch 문


1
2
3
4
5
6
7
8
switch (key) {
        case value:
            
            break;
 
        default:
            break;
        }
cs

 

switch 문의 구성은 위와 같다. if와 같은 조건문으로 key 와 value 는 비교하려는 값으로 값은 같아야 한다. value 값은 String, byte, int, short, char 타입만 가능하다.

하지만, if문과 달리 value 에는 범위 형태로 작성할 수 없다. case 의 value 를 '또는'으로 작성하고 싶은 경우, case : 를 연달아 작성해서 표현한다. 그리고 case 값이 여러 개인 경우에는 중간에 break; 문을 지워서 값을 출력할 수도 있다.

 

삼항연산자를 이용한 return값 출력

 

(조건식)? 참 : 거짓

조건식이 true 이면 참의 값을 false 이면 거짓의 값을 반환한다. 

1
result = ("/".equals(operator) && num2==0)? result : num1+"+"+num2+"="+result;
cs

 

할당연산자를 이용한 return값 출력

 

gift의 값을 하나씩 줄여나가면서 출력하는 경우. "A"의 값은 "놀이공원이용권, 치킨, 피자, 아이스크림" 으로 학점이 낮을 수록 순차적으로 값이 하나씩 줄어든다. "A"는 break 문을 만나기 전까지 계속 값을 더해간다(+=).

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
String gift() {
        
        String gift = "";
        
        switch (grade()) {    //switch() 속에는 String, byte, int, short, char 타입만 가능
            case "A":
                gift += "놀이공원이용권, ";        
    
            case "B":
                gift += "치킨, ";        //할당연산자
                
            case "C":
                gift += "피자, ";            
                
            case "D":
                gift += "아이스크림";        
                break;
                
            default:
                gift = "꿀밤3대";
                break;
        }        
        return gift;
cs

'Java' 카테고리의 다른 글

[Java] For 문 응용, 다중 For문  (0) 2021.01.15
[Java] For 문, 예제  (0) 2021.01.13
19 [인강] 자바의정석 ch09  (0) 2021.01.12
[Java] Scanner문, 유효성 검사  (0) 2021.01.11
[Java] Java의 설치와 기본 개념  (0) 2021.01.09
댓글