본문 바로가기

-Java

Wrapper 클래스, Java 버젼별 차이점

반응형

1) Wrapper 클래스

일반자료형을 감싼 객체

쓰는목적: 콜렉션을 배우는데 콜렉션은 객체만 허용!

Un boxing> 참조자료를 일반자료로 바꿔줌 


■ Java 버젼별 차이점


Java 8 IOT

Java 7 부터 클라우드도입      (Thread.group) X

Java 6

Java 5  -> Auto Boxing [K1] : 자동으로 Wrapper Class[K2] 화 시켜주는 기능  //Un

1.4..



 [K1]jdk5부터 암시적 객체생성을 Autoboxing 이라함

Auto boxing >일반자료형을 참조자료형 안으로 넣어주는것

Un boxing> 참조자료를 일반자료로 바꿔줌

 

ex) Integer aa=20; 오토박싱 

 [K2]일반 자료형

boolean char byte short int long float double

 

Wrapper Class=일반자료형을 감싼 객체

 

쓰는목적: 콜렉션을 배우는데 콜렉션은 객체만 허용!

int a=10;

long b=a; << 프로모션  //b=10

b=20L; //b=20

 

■ 자료형

1. 일반 자료형 [K3] ex) 메모K1   

2. 참조 자료형 [K4] ex) 그 이외 !    //String str= "test"[K5]  [K6] ;   char ch='a';

 

String 클래스

참조자료형, 문자열 값을 저장(기억)

 

★ 객체는 생성시 new 사용해서 heap에 번지를 할당받아서 생성후 "참조"사용

 

ex) String str;   //선언    [K7] str=new String("T")    //객체를 생성

>>이 과정을 축약하여 String str=new String("T"); 

new String("T")="T"  명시적 객체생성방법

"T"=new String("T")  암시적 객체생성방법

//new 를 또 생성하면 heap에는 객체 2개 생성

 

■ 변수

1. 멤버 필드(변수)

2. 지역 변수

 

Static >오직 하나만 만들어서 공유해서 사용,생성 없이 사용 //상수>static

 

■ 단축키(넷빈즈)

psvm = public static void main(String[] args) {} //psvm

sout = System.out.println("");

 

 

자바 api 주소 http://docs.oracle.com/javase/8/docs/api/

 

·         java.lang.Object

·          

·         java.lang.Boolean

탭이 되어있으면 상속이 되어있다는거다.

 


ex) Integer aa=20; 오토박싱 

 [K2]일반 자료형

boolean char byte short int long float double

 

Wrapper Class=일반자료형을 감싼 객체

 

쓰는목적: 콜렉션을 배우는데 콜렉션은 객체만 허용!

 [K3]값을 저장한다.

 [K4]주소값을 저장한다. heap으로 저장됨

 [K5]문자열

 [K6]정석 String str= new String("Test")

 [K7]선언은 stack으로 저장





Ex1_Boolean 실행파일

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package ex1;
 
public class Ex1_boolean {
    public static void main(String[] args) {
        //일반 자료형에 값을 대입하기위해선 변수에 선언!
        boolean if1=true;// 변수 선언을 해서 지역변수라stack에 들어감
        //+는 문자와 연결하는 연산자다 또 println으로 들어가는순간 모두 문자열이됨!
        System.out.println("결과값!"+if1);
        System.out.println("다른결과값!"+(!if1));//!는 부정 true면 false로 바뀜
       
        Boolean b1b=new Boolean("true");//불리언 객체를 만듬
        System.out.println("결과값1은 "+b1b);
        b1b=false; // Auto boxing 을 함 Wrapper 클래스로 생성
        String str=b1b.toString();//bb Boolean을 String으로 바꿈
        boolean last1=Boolean.valueOf(str);//String>Boolean>boolean으로 Auto boxing됨!
        //static은 자원생성없이바로사용가능 *****가장중요한거니 외우자!
        System.out.println("결과2"+b1b);
        boolean c1c=b1b; //언박싱을 함!
        System.out.println("결과3"+c1c);
        System.out.println("문자열 변환 :"+str);
        System.out.println("마지막예문 :"+str);
       }    
}


코드 실행 및 결과                

run:

결과값!true

다른결과값!false

결과값1 true

결과2false

결과3false

문자열 변환 :false

마지막예문 :false

BUILD SUCCESSFUL (total time: 0 seconds)


Ex2_DataType 실행파일


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
 
package ex1;
 
public class Ex2_DataType {
    public static void main(String[] args) {
        byte num1=11;
        byte num2=5; //바이트 변수를 선언함!
        //byte res=num1+num2 하면안되는 이유가 num1로 바로 치면 4바이트
        //연산을하기때문에 디모션이 일어난다! 그렇기에
        byte res=(byte)(num1+num2);//로 바꾼다!
        System.out.println(res);
 
        short num3=30;
        short num4=60;
        short res2=(short)(num3+num4);//이것도 ()로 변환을 해줘야함!
        System.out.println(res2);        
        
        long num5 =140L;
        long num6 =100L;
        
        long res4=(long)(num5+num6);
        System.out.println(res4);//long도 같은 맥락
        Long numInteger2=res4; // 일반자료형에서 참조자료>> 오토박싱!
        String str2=numInteger2.toString(); // Long 객체에서 String형(문자열) 객체로
       
        long numRes2=Long.valueOf(str2); //다시 Long 객채로 만든후 long 일반자료형으로 언박싱!
                
        System.out.println(numRes2);
        System.out.println("-------------------");
             
        int numint = 300;
        int numint2 = 400;
        int res3=(int)(numint+numint2); //인트는 그냥 안해도됨!
        System.out.println(res3);
        
        Integer numInteger = res3; //일반자료에서 참조자료가됨! 오토박싱
        String str1=numInteger.toString();//단순 문자열로같이변환
        int numRes=Integer.parseInt(str1);//String>int 
        //parseint 는 static 매서드>heap에 저장없이 그냥 사용 즉 언박싱이 일어나지않는다!
        
        long numLong=110L;//L을 써줘야 8바이트 스택으로옮겨짐!!
        System.out.println(numLong);
        System.out.println("---------------------");
        
         char char1 = 'A'//문자를저장하기위한 char는 2바이트체계 (유니코드도 가능!) '' 로해야된다
         char char2 = 68; //68을 써보니 D가 나온다 65부터 순서대로 나오는것같다!
        System.out.println(char2);
           char char3 = '\uB204'//"누"가 나옴!
        System.out.println(char3);
        float f1=3.95f; //실수형 중 float으로 타입을 지정함.
        System.out.println(f1);
        
        
    }
}


코드 실행 및 결과

run:

16

90

240

240

-------------------

700

110

---------------------

D

3.95

BUILD SUCCESSFUL (total time: 0 seconds) 


Ex1_Oper 실행파일


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
package ex2;
 
 
public class Ex1_Oper {
     //static 매서드 
    public static String msg(){
        return "엄성렬";
    }
    public static void main(String[] args) {
        // static 끼리는 생성없이 바로 호출이 가능!!**
        // dot(.)연산자를 이용해 객체의범위에 속해있는 멤버를 접ㄱ근할떄 사용! 
        
        Ex1_Oper.msg();
        String msg1=Ex1_Oper.msg(); //위에있는 msg를 이용함!
        System.out.println(msg1);
        
       
        int[] arr={5,7,8};
        for(int e: arr)
        {
            System.out.println(e);
        }
        
        int i =3*4+4-2/3;
        System.out.println(i);//16이 나올것이다!
    }
}


코드 실행 및 결과

run:

엄성렬

5

7

8

16

BUILD SUCCESSFUL (total time: 0 seconds) 


Exam1 실행파일

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
package ex2;
public class Exam1 {
    
    // 일반 자료형, Wrapper클래스들을 반환하는 static메서드 각각 만들고 
    //그 값을 main에서 반환받아서 각각 출력해보기 
    public static int num1(){
        return 10;
    }
    public static byte num2(){
        return 22;
    }
    public static float num3(){
        return 2.4f;
    }
    public static boolean num4(){
        return true;
    }
    public static double num5(){
        return 4.5;
    }
    public static long num6(){
        return 3444L;
    }
    public static char num7(){
        return 'a';
    }
    public static short num8(){
        return 33;
    }
    public static void main(String[] args) {
        int num = Exam1.num1();
        Integer numN=num;
        System.out.println("Num :"+numN);
        byte numnum2=Exam1.num2();
        Byte numB=numnum2;
        System.out.println("Byte :"+numB);
        float numnum3=Exam1.num3();
        Float numF=numnum3;
        System.out.println("Float :"+numF);
        boolean numnum4=Exam1.num4();
        Boolean numBL=numnum4;
        System.out.println("Boolean :"+numBL);
        double numnum5=Exam1.num5();
        Double numD=numnum5;
        System.out.println("Double :"+numD);
        long numnum6=Exam1.num6();
        Long numL=numnum6;
        System.out.println("Long :"+numL);
        char numnum7=Exam1.num7();
        Character numC=numnum7;
        System.out.println("Char :"+numC);
        short numnum8=Exam1.num8();
        Short numS=numnum8;
        System.out.println("Short :"+numS);
        
    }
}

코드 실행 및 결과                

run:

Num :10

Byte :22

Float :2.4

Boolean :true

Double :4.5

Long :3444

Char :a

Short :33

BUILD SUCCESSFUL (total time: 0 seconds)



반응형