**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 |