본문 바로가기
IT/JAVA

[Java] java.lang - Wrapper Class / Autoboxing

by 행복한 용용이 2020. 8. 3.
반응형

**Wrapper Class

: 기본 DT를 클래스화 시켜놓은 클래스

기본 DT WrapperClass
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double

 

     package com.kitri.lang;

     public class WrapperClassTest {

          public static void main(String[] args) {

               Boolean b1 = new Boolean(true); //Boolean 생성자(Constructor)를 사용해서 true값을 갖고 있는 boolean형태의 객체 생성

               boolean b2= b1.booleanValue();

 

               boolean b3 = Boolean.parseBoolean("true")//parse : 설명하다

               //parseBoolean은 잘 안쓰임 보통 parseint를 많이 씀.

 

               System.out.println(b1);

               if (b2)

                    System.out.println("b2는 true다");

               if (b3)

                    System.out.println("b3는 true다");

 

 

               String s = "123";   //숫자형식인 문자열만 된다.

               System.out.println(s+4); //1234

               //Integer i = new Integer(s);

               //Integer생성자 안에는 String이나 int됨.

               //int x = i.intValue();

               int x = Integer.parseInt(s); //parse는 static

               System.out.println(x+4); //127

 

               s="123.45";

               double d = Double.parseDouble(s);

               System.out.println(d+4);

          }

     }


*Autoboxing

:referenceDT에서 같은 datatype끼리만 자동으로 박스화,언박싱화

원래 캐스팅연산은 RDT는 RDT끼리, 기본DT는 기본DT끼리만 형변환 가능 >> 캐스팅 연산의 유일한 예외

 

 

     //autoboxing : refer에서 같은 datatype끼리만 자동으로 박스화,언박싱화

     //캐스팅연산의 유일한 예외

     //원래 캐스팅연산은 RDT는 RDT끼리, 기본DT는 기본DT끼리만 형변환 가능

     Integer i2 = new Integer(3);

 

     //unboxing : ReferenceDT을 기본 DT로 자동형변환

     int y = i2;

 

     //boxing : 기본DT를 ReferenceDT로 자동형변환

     Integer i3= y;


*String

String Test 예제1)

 

     package com.kitri.lang;

     public class StringTest1 {

          public static void main(String[] args) {

               String s1 = "java";

               String s2 = "java"; //s1,s2 : 문자열 저장소에 저장됨.

               String s3 = new String("java");

               String s4 = new String("java"); //s3,s4 : Heap영역에 저장됨.

 

               if(s1==s2//s1문자열 저장소에 저장 > s2 문자열저장소에 이미 "java"가 있음으로 거기에 주소가 연결됨 > 같은것 참조 > 같은 것으로 나옴

                    System.out.println("s1 s2는 주소값이 같다.");   //0

               if(s1==s3)   //문자열 저장소에 저장된 s1,s2와 Heap에 저장된 S3,S4은 공간자체가 다름으로 비교 X

                    System.out.println("s1 s3는 주소값이 같다.");   //X

               if(s1==s4)

                    System.out.println("s1 s4는 주소값이 같다.");   //X

               if(s2==s3)

                    System.out.println("s2 s3는 주소값이 같다.");   //X

               if(s2==s4)

                         System.out.println("s2 s4는 주소값이 같다.");   //X

               if(s3==s4//S3,S4는 Heap영역에 S3의 "java", S4의 "java" 따로 만들어진다. > ==는 주소값 비교임으로 X

                         System.out.println("s3 s4는 주소값이 같다.");   //X

 

               System.out.println("----------------------------------------------");

               //java는 대소문자 가린다.

               if(s1.equals(s2)//원래 Object의 equals는 주소값 비교이지만 String에서 equals를 overriding해놔서 문자열 비교가 된다.

                    System.out.println("s1 s2는 문자열값이 같다.");   //0

               if(s1.equals(s3))

                    System.out.println("s1 s3는 문자열값이 같다.");   //0

               if(s1.equals(s4))

                    System.out.println("s1 s4는 문자열값이 같다.");   //0

               if(s2.equals(s3))

                    System.out.println("s2 s3는 문자열값이 같다.");   //0

               if(s2.equals(s4))

                    System.out.println("s2 s4는 문자열값이 같다.");   //0

               if(s3.equals(s4))

                    System.out.println("s3 s4는 문자열값이 같다.");   //0

               }

          }

 

 

String Test 예제2)

 

     package com.kitri.lang;

     public class StringTest2{

          public static void main(String[] args) {

               //null은 String이 heap에 아예안올라온 상태

               //String str = null;

               //System.out.println("문자열 길이 : "+str.length());//오류 : 주소가없는데 어떻게 할 것이냐

               //null은 주소가 없어서 참조할 수가 없다.

 

               //이건 String은 있는데 빈값인것

               String str1 = new String();

               System.out.println("문자열 길이 : "+str1.length());

          }

     }

 

[출처] 빡쏘끼룩

반응형

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

[Java]배열 Array (RDT 배열)  (0) 2020.08.10
[Java]배열 Array (기본DT 배열)  (0) 2020.08.04
[Java]Package-예제  (0) 2020.08.02
[Java]Package : window의 folder  (0) 2020.08.01
[Java]Interface/수정자(modifier)  (0) 2020.07.31