Wrapper Class

jinkyung·2021년 1월 14일
0

JAVA

목록 보기
18/29
  • boxing
    : 기본자료형 -> 객체타입

  • unboxing
    : 객체타입 -> 기본자료형

(컴퓨터가 대부분 알아서 처리를 해준다.)

package com.bit.day09.am;

public class Ex05 {
	public static void func(Object obj){
		System.out.println("출력" +obj );
	}
	
	
	public static void main(String[] args){
		Ex05 me= new Ex05();			
		func("abcd");		//모든 클래스는 object클래스를 상속받으므로 가능하다.
		func(false);            //내부에서 알아서 boxing, unboxing을 하기 때문에 가능한 것이다.
		func(me);					//toString으로 나옴
		
		
		//참조변수가 아닌 기본 자료형을 인자로 전달했는데 어떻게 가능할까? 
		//기본자료형 != 객체, 그렇다면 object클래스를 상속받지 않는다는 건데 어떻게 가능?
		//자바는 객체지향언어인데 왜 기본자료형을 쓰냐 --> 객체타입이 있음 - Wrapper class
		
		Boolean boo; 	// 객체 타입.
	}
}

단, 반드시 참조변수로만 넣어줘야하는 상황에서는 래퍼클래스를 이용하여 변환해줘야 한다.

Integer class

package com.bit.day09.am;

public class Ex05 {

	public static void main(String[] args){
		
//생성자
		
		int su1=1234;
		Integer su2=1234;					//int 객체화 - boxing이 자동적으로 일어난다.
//		Integer su3=new Integer();			//default 생성자가 없어서 인자 없이 객체생성이 안됨.
		Integer su3=new Integer(su1);
		
		System.out.println(su3+1);				//객체+int 연산 --> unboxing이 일어난다. 기본자료형끼리 연산하여 보여준다.
		
		Integer su4=new Integer("4321");		//주의 : 숫자로만 구성돼있어야 한다.
		
		System.out.println(su4+1);				//4322 출력. 문자열->숫자로 바꿔 연산.
												//단, 바뀐 숫자는 Integer 타입이다.
												//문자열을 가지고 Integer로 숫자연산을 할 수 있다.
		
	
//필드
		
		System.out.println(Integer.MIN_VALUE);		//int의 표현범위 min, max가 나온다.
		System.out.println(Integer.MAX_VALUE);		//MIN,MAX는 상수형(final) 변수 = 전체를 대문자로만 저장.(바뀌면 안되니까)
		
		System.out.println(Integer.SIZE);           //32bit 출력
 		System.out.println(Integer.BYTES);          //4바이트 출력
	
 		
 		
//메소드
 		
 		System.out.println(su2.equals(su3));		//true 출력
 		//object클래스의 euquals는 객체비교 - 객체가 다르면 주소값이 다른 것인데 왜 true? 
 		//-- value값 비교를 할 수 있도록 오버라이딩 해놓았기 때문에.
 		
 		
 		Integer su5=new Integer(129);	
 		System.out.println(su5.byteValue());		//-127출력. byte로 변환
 		
 			
 		int su6=10;		//진법변환 메소드, 이들의 리턴값은 문자열이다.
 		System.out.println("2진수" + Integer.toBinaryString(su6));		
 		System.out.println("8진수" + Integer.toOctalString(su6));
 		System.out.println("16진수" + Integer.toHexString(su6));	//16진수a 출력 
	}
}

Double class

package com.bit.day09.am;

public class Ex06 {

	public static void main(String[] args) {
		double su1=3.14;
		Double su2=3.14;
		Double su3=new Double(su2);
		Double su4=new Double("3.14");
		double su5=Double.parseDouble("3.14");
		double su6=0.0/1.0;		
		
		double su7=1.0/0.0;				//infinity , 0에 수렴할수록 값이 커진다.
		System.out.println(Double.isInfinite(su7));	//infinity값은 true 나온다.
		
		
		double su8=0.0/0.0;								
		System.out.println(su8);				//NaN 출력
		System.out.println(Double.isNaN(su8));	//true 출력. 
        //이와 같은 상황을 만들지 않기 위해 isFinite 이용하여 검사할 수 있다.
	}

}

Boolean class

package com.bit.day09.am;

public class Ex07 {

	public static void main(String[] args) {
		boolean boo1=true;
		Boolean boo2=true;
		Boolean boo3=new Boolean(boo1);
		Boolean boo4=new Boolean("true");	//문자열은 true를 출력

		System.out.println(boo1); 		//객체출력인데 toString()을 이용하여 변환해서 보여주는것이다.
		
	}
}

Character class

package com.bit.day09.am;

public class Ex08 {
	public static void main(String[] args) {
		
// is 메소드 : ~이냐? (검사기능) -- 모두 true/false 형태로 출력된다.
		
		char ch1='가';
		Character ch2='A';
		Character ch3=new Character(ch1);
	
		System.out.println(Character.isAlphabetic(ch1));	//문자면 true반환           jdk1.7
		System.out.println(Character.isLetter(ch1)); 		//위와 동일한 메소드		jdk1.5
		System.out.println(Character.isUpperCase(ch2));		//대문자인지
		System.out.println(Character.isLowerCase(ch2));	    //소문자인지 둘중에 하나가 true가 나오면 영문자.
		System.out.println(Character.isDigit(ch1));	        //숫자면 true
		                                                    //숫자도, 알파벳도 아니면 특수문자일 것이다. 
		
		
		System.out.println(Character.isWhitespace(ch1));	//띄어쓰기인지 검사 (최신ver)
		System.out.println(Character.isSpace(ch1));	  	   //eclipse 기능:이런식으로 줄이그어지는 건 새로운걸 쓰라는 얘기.	

	}
}

0개의 댓글

관련 채용 정보