Step06_WrapperClass
<MainClass01>
package test.main;
/*
* [ 기본 data type의 참조 data type ]
*
* byte : Byte
* short : Short
* int : Integer
* long : Long
*
* float : Float
* double : Double
*
* char : Character
* boolean: Boolean
*
* - 때로는 기본 데이터타입의 참조 데이터타입이 필요할 때가 있다.
* - 기본 데이터타입을 객체에 포장(boxing)하는 형태이다.
* - boxing 과 unboxing은 자동으로 되기 때문에 프로그래머가 신경을 쓸 필요는 없다.
*/
public class MainClass01 {
public static void main(String[] args) {
//기본 데이터 타입
int num1=10;
//참조 데이터 타입
Integer num2=10;
//참조 데이터 타입이지만 기본 데이터 타입처럼 사용할 수 있다.
int result1=num2+1;
int result2=num1+num2;
Integer result3=num1+num2;
//문자를 숫자로 바꾸기(String type을 int type으로 바꾼 결과값 얻어내기)
int result4=Integer.parseInt("999"); //Integer 클래스의 static 메소드 활용
}
}
- wrapper class 란 기본 데이터타입을 객체로 변환하기 위해서 참조 데이터타입처럼 포장하는 클래스!
[ 기본 data type의 참조 data type ]
* byte : Byte
* short : Short
* int : Integer
* long : Long
* float : Float
* double : Double
* char : Character
* boolean: Boolean
- 기본 데이터타입을 참조 데이터타입으로 바꿔서 활용해야 할 때가 있다!
- 8가지 데이터타입에 1:1로 대응되는 참조 데이터타입이 있다.
int, char을 제외하고는 첫글자를 대문자로 바꾸면 된다.
ex) '가변배열'을 사용하려고 할 경우, 기본 데이터타입을 담을 수 없기 때문에 참조 데이터타입으로 포장해서 받아야 한다.
* Integer의 클래스 설명서: 링크
- 참조 데이터타입이지만 new Integer 이라고 하지 않고 바로 작성해도 된다.
- num2에는 10이라는 값이 아니라 참조값이 들어간다.
27번 사물함 안에 10이 들어있는 것이다.
→ Integer이라는 데이터타입을 사용하면, 대입연산자로 집어넣었을 뿐인데 참조형으로 포장되었다!(autoboxing)
→ 이전과 다르게 heap영역에 객체가 생성되고 그 객체 안에 10이라는 숫자가 담긴 것이다.
- num2. 형태로 점을 찍으면 Integer필드에 정의된 필드/메소드가 나온다.
- parseInt() 메소드의 소개 페이지.(위의 Integer의 클래스 설명 내)
문자로 된 숫자를 숫자로 바꿔주는 메소드!
- javascript에서는 number(); 대신 java에서는 Integer클래스의 parseInt 라는 메소드를 사용할 수 있다.
- static class에 들어있는 메소드는 그냥 . 만 찍어서 바로 쓸 수 있다.(new하지 않고 바로 쓸 수 있다)
javascript의 기본함수 같은 것! java.lang 패키지 안에 들어있다면 바로 사용 가능하다.(static)
- 객체의참조값에 . 점을 찍어서 메소드를 사용하는 게 아니라
클래스명에 바로 . 점 찍어서 메소드를 사용하기도 한다.
- 데이터타입으로도 사용되고, 클래스명으로도 활용된다.
public class Integer{
public static int parseInt(String s){ }
}
- 위와 같이 Integer이라는 클래스에 정의된 parseInt라는 static method가 이미 있는 것이라고 생각하면 된다.
- 이 메소드를 활용하기 위해서는 new Integer (x) / Integer.parseInt(); (o)
- 참조 데이터 타입 Double 사용해보기
<MainClass02>
package test.main;
public class MainClass02 {
public static void main(String[] args) {
//기본 데이터 type double
double num1=10.1;
//참조 데이터 type Double
Double num2=10.2;
//참조 데이터 type Double이지만 마치 기본 데이터 type과 같이 사용할 수 있다.
double result1=num2+10;
double result2=num1+num2;
Double result3=num1+num2;
//문자열을 숫자(double)로 바꾸기 "10.3"=>10.3
double result4=Double.parseDouble("10.3");
}
}
- 참조 데이터 type으로 받으면 heap영역이 만들어지고 객체로 포장된다.
독특한 구조이지만 그냥 참조 데이터타입이라는 것만 알고 기본 데이터타입처럼 쓰면 된다!
- parseInt, parseDouble, ...
→ 문자 형태의 숫자를 산술연산이 가능한 숫자로 바꿔주는 메소드!
- 디버그했을 때! 숫자가 대입되었고,.
id(키값)가 생겨나고 heap영역이 생겨난 것을 알 수 있다
'국비교육(22-23)' 카테고리의 다른 글
16일차(1)/java 퀴즈 : Array, Random 활용 예제 (0) | 2022.10.27 |
---|---|
15일차(3)/java(13) : Array, for문, 확장 for문 (0) | 2022.10.26 |
15일차(1)/java(11) : class, variable, git 외 (0) | 2022.10.26 |
[참고] Eclipse에서 Github으로 push, reset하기 (0) | 2022.10.26 |
14일차(4)/java(10) : Constructor (0) | 2022.10.26 |