Java - Wrapper

2020. 6. 30. 22:34Java

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
 
public class Ex {
 
    public static void main(String[] args) {
        
        /*
         * Wrapper 클래스
         * -기본 데이터 타입 8개에 대응하는 클래스들의 모음
         * - byte,short,int , long, float, double, boolean, char 에 대응하는
         * Byte, Short, Integer, Long, Float, Double, Boolean, Character 클래스를 제공
         * -java.lang 패키지에 위치하므로 별도의 import 필요없음!@#@$^ㅛ^%#!@^&%*(^$
         * -기본데이터 타입 데이터를 둘러싸서 객체 형태로 변환하여
         * 클래스가 제공하는 변수 및 메서드를 통해 효율적 데이터 처리를 도와주는 클래스
         * 
         * 기본데이터타입-> 참조데이터타입(객체)로 변환하는것을 박싱(Boxing)이라고 하며
         * 참조데이터타입->기본데이터타입으로 변환하는 것을 언박싱(Unboxing) 이라고 함
         * -JDK 1.5 부터는 이 두 과정을 자동으로 처리해줌 (오토박싱,오토언박싱)
         */
        
        //Wrapper 클래스에서 제공하는 상수(public static final)
        System.out.println("byte 타입 최소값 : "+Byte.MIN_VALUE);
        System.out.println("byte 타입 최대값 : "+Byte.MAX_VALUE);
        System.out.println("short 타입 최소값 : "+Short.MIN_VALUE);
        System.out.println("short 타입 최대값 : "+Short.MAX_VALUE);
        System.out.println("int 타입 최소값 : "+Integer.MIN_VALUE);
        System.out.println("int 타입 최대값 : "+Integer.MAX_VALUE);
        System.out.println("long 타입 최소값 : "+Long.MIN_VALUE);
        System.out.println("long 타입 최대값 : "+Long.MAX_VALUE);
        System.out.println("float 타입 최소값 : "+Float.MIN_VALUE);
        System.out.println("float 타입 최대값 : "+Float.MAX_VALUE);
        System.out.println("double 타입 최소값 : "+Double.MIN_VALUE);
        System.out.println("double 타입 최대값 : "+Double.MAX_VALUE);
        System.out.println("char 타입 최소값 : "+(int)Character.MIN_VALUE);
        System.out.println("char 타입 최대값 : "+(int)Character.MAX_VALUE);
        
        System.out.println("----------------------------------");
        
        int num1=10,num2=20;
        System.out.println("기본형 데이터 num1 = "+num1+", num2 = "+num2);
        //기본 데이터 타입-> 참조데이터타입으로 변환하는 방법
//        //1. 정석적인 방법(Wrapper 클래스 타입 인스턴스 생성하여 파라미터로 전달) 
//        Integer n1=new Integer(num1);//int(기본형) ->Integer(참조형) 로 변환됨======박싱(Boxing)!@#!@##@%@#%
//        System.out.println("참조형데이터 n1 = "+n1.toString());//Integer 객체의 정수값
//        System.out.println("참조형데이터 n1 = "+n1);//toSTring() 생략가능
//        
        //2.오토박싱(Auto Boxing)을 활용한 자동변환
        Integer n1=num1;
        System.out.println("참조형 데이터 n1 = "+n1);
        
        Integer n2=num2;
        System.out.println("참조형 데이터 n2 = "+n2);
        
        //문자열 형태의 수치데이터를 전달할 수 있음.
//        Integer n3="20";//문자열을 Integer 타입 변수에 전달 불가
        Integer n3=new Integer("20");
        System.out.println(n3);
        
        //---------참조데이터타입-> 기본데이터타입으로 변환(언박싱)하는 방법-------
        //1.정석적인 방법
//        int num3=n1.intValue();//Wrapper 클래스 타입 객체의 XXXValue() 메서드 호출
//        System.out.println("기본형 데이터 num3 = "+num3);
        
        //2. 오토 언박싱(Auto Unboxing) 을 활용한 자동 변환
        int num3=n1;
        System.out.println("기본형 데이터 num3 = "+num3);
        System.out.println("------------------------");
        
        //double 타입<->Double 클래스 타입 상호 변환
        double d1=3.14;
//        Double double1=new Double(3.14);//박싱
        Double double1=d1;//오토박싱
        System.out.println("d1 = "+d1+", double1 = "+double1);
        
//        double d2=double1.doubleValue();//언박싱
        double d2=double1;//오토 언박싱
        System.out.println("d2 = "+d2+", double1 = "+double1);
        
        //기본형 , Wrapper 클래스 타입 객체 간의 비교 연산등도 가능
        //Wrapper 클래스 타입 객체를 언박싱을 통해 기본형으로 변환하여 연산 수행
        if(d1==double1) {
            System.out.println("기본형 d1과 참조형 double1은 같다!");
        }
        
        Double double2=d1;
        //Wrapper 클래스 타입 객체간의 비교를 수행하는 경우 동등비교는 주소값 비교함.
        if(double1==double2) {//두 객체는 주소값이 다르므로 false
            System.out.println("double1, double2 가 같다.");
        }else {
            System.out.println("double1, double2 가 다르다");
        }
        
        //객체 내의 값을 비교해야할 경우 equals() 메서드가 오버라이딩 되어 있으므로
        //equals() 메서드를 통해 비교해야함.
        if(double1.equals(double2)) {//두 객체의 저장된 값이 같으므로 true
            System.out.println("double1, double2 가 같다.");
        }else {
            System.out.println("double1, double2 가 다르다");
        }
 
    }
 
}
 
 
public class Ex2 {
 
    public static void main(String[] args) {
        
        /*
         * Integer 클래스
         * 정수를 활용하여 수행 가능한 다양한 메서드 및 상수 제공
         * 주로 Integer.XXX() 형태로 static 메서드를 호출하여 기능 사용
         */
        
        int num1=10,num2=20;
        System.out.println("num1,num2 중 큰 값 : "+Integer.max(num1,num2));
        
        System.out.println(num1+" -> 2진수 : "+Integer.toBinaryString(num1));
        System.out.println(num1+" -> 8진수 : "+Integer.toOctalString(num1));
        System.out.println(num1+" -> 16진수 : "+Integer.toHexString(num1));
        
        //String(문자열)타입 정수->수치데이터로 변환
        String strNum="100";
        
        //1. Integer 타입으로 변환하는 방법
        Integer n1=new Integer(strNum);//생성자를 활용
//        Integer n1=Integer.valueOf(strNum);//메서드를 활용
        System.out.println(n1+99);
        
        
        //2. int 타입으로 변환하는 방법
        int num3=Integer.parseInt(strNum);
        System.out.println(num3+99);
        
        //정수->String (문자열) 타입 변환
        //1. Integer->String
        Integer n2=10;
//        String strNum2=Integer.toString(n2);
        String strNum2=n2.toString();
//        String strNum2=n2+"";
        System.out.println(strNum2);
        
        //2. int->String
//        String strNum3=Integer.toString(num3);
        String strNum3=num3+"";
        System.out.println(strNum3);
        
        
        
        
    }
 
}
 
 
public class Ex3 {
 
    public static void main(String[] args) {
        
        /*
         * Charactor 클래스
         * -문자데이터에 대한 다양한 처리를 위한 상수 및 메서드를 제공
         * 
         * 
         */
        
        
        char ch='A';
        System.out.println("ch = "+ch);
        System.out.println("ch 는 대문자인가? "+Character.isUpperCase(ch));
        System.out.println("ch 는 소문자인가? "+Character.isLowerCase(ch));
        System.out.println("ch 는 문자인가? "+Character.isLetter(ch));
        System.out.println("ch 는 숫자인가? "+Character.isDigit(ch));
        
        
        System.out.println("ch 는 공백문자인가? "+Character.isSpace(ch));
        //=> Deprecated로 표시되는 메서드. 사용가능하나 isWhitespace() 메서드로 대체됨
        System.out.println("ch 는 공백문자인가? "+Character.isWhitespace(ch));
        
        
        //toXXX()메서드 : 특정 대상 타입으로 변환
        System.out.println(ch+"-> 대문자로 변환 : "+Character.toUpperCase(ch));
        System.out.println(ch+"-> 소문자로 변환 : "+Character.toLowerCase(ch));
        
//        String str=ch;//char-> String  타입 변환 불가능
        String str=Character.toString(ch);
//        String str=ch+"";
        System.out.println(str);
 
        
    }
 
}
 
cs

 

wrapper 클래스에 대해 알아보았는데

기본 데이터 타입 8가지에서 앞글자를 대문자로 바꿔주면 바로 사용 가능하였고 int만 Integer로 변형이 있었다.

참조데이터타입으로 변환을 해주면 Wrapper  클래스에서 제공하는 상수들을 사용 가능한데 데이터 타입 뒤에 .(마침표)만 찍으면 상수가 바로 보이기 때문에 편리하게 사용이 가능하다. 그리고 상수는 항상 대문자로만 정의를 하기 때문에 구별도 쉽고 사용하기도 편리하다. 기본 데이터 타입에서 참조 데이터 타입으로 형 변환은 따로 다른 형식을 사용하지 않고 대입 연산자만 사용하여도 자동으로 박싱이 이루어 지기 때문에 선생님이 왜 대입 연산자만 써도 바로 적용이 되는가만 알고 있으면 된다고 하셨다. 그리고 참조 데이터 타입에서 기본 데이터 타입으로의 변환도 자동으로 언박싱이 되기 때문에

편리하였다. 여러 가지 상수를 사용하여 여러가지 연산 등을 할 수 있기 때문에 잘 알아두어야 할 것 같다.

'Java' 카테고리의 다른 글

Java - BigInteger,BigDecimal  (0) 2020.06.30
Java - StringBuilder & StringBuffer  (0) 2020.06.30
Java - DAO,DTO활용  (0) 2020.06.29
Java - DAO  (0) 2020.06.29
Java - DTO  (0) 2020.06.29