유난스런 개발 기록

[JAVA] Day-5 _ Wrapper 클래스 본문

개념정리/JAVA

[JAVA] Day-5 _ Wrapper 클래스

yourhwan 2023. 1. 12. 00:03

day-5

Wrapper 클래스


Wrapper 클래스란? 

  • 기본 타입을 감싸서 클래스의 형태로 만들어 주는 것을 말한다.

기본자료형과 매칭 되는 클래스를 적어둔 표다.

 

박싱 (Boxing) 이란 ?

기본자료형(boolean, byte, short, int, long, char, float, double)으로 되어진 변수를

Wrapper 클래스(Boolean, Byte, Short, Integer, Long, Character, Float, Double)로 만들어주는 것을 말한다.

언박싱 (UnBoxing) 이란 ?

Wrapper 클래스(Boolean, Byte, Short, Integer, Long, Character, Float, Double)로 되어져 있는 객체를

기본자료형(boolean, byte, short, int, long, char, float, double)으로 만들어주는 것을 말한다.

 

 

사실 이런 API는 무작정 외우기보다는 예제를 많이 풀어보는게 제일 좋은 방법이다.

수업시간에 해봤던 실습

package my.day05.b.wrapper;

import java.util.Scanner;

public class WrapperMain {

	public static void main(String[] args) {
		
		System.out.println("=== auto Boxing 과 auto UnBoxing 에 대해서 알아봅니다. ===");
		
		int a1 = 10;
		Integer a2 = new Integer(a1); //Boxing (박싱)
		
		
		System.out.println("a1 : " + a1);	// a1 : 10
		System.out.println("a2 : " + a2.intValue()); // a2 : 10//원래는 이렇게 a2.intValue()를 입력해야하지만 자동으로 해주는 기능을 AutoUnboxing 
		System.out.println("a2 : " + a2);	// a2 : 10 // auto UnBoxing(언박싱)
		
		int a3 = 20;
		Integer a4 = a3; // auto Boxing(박싱)
		
		System.out.println("a3 : " + a3);	// a3 : 20
		System.out.println("a4 : " + a4.intValue()); // a4 : 20 //원래는 이렇게 a2.intValue()를 입력해야하지만 자동으로 해주는 기능을 AutoUnboxing 
		System.out.println("a4 : " + a4);	// a4 : 20 // auto UnBoxing(언박싱)
		
		a4 = 30;
		System.out.println("a4 : " + a4); // a4 : 30 // auto UnBoxing(언박싱)
		
		byte bt1 = a4.byteValue();
		byte bt2 = (byte)a3;
		System.out.println("bt1 : " + bt1);	// bt1 : 30
		System.out.println("bt2 : " + bt2);	// bt2 : 20
		
		
		System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
		
		
		double db1 = 1.23456;
		Double db2 = new Double(db1); // Boxing(박싱)
		Double db3 = (db1);			  // Boxing(박싱)
		
		System.out.println("db1 : " + db1); // db1 : 1.23456
		System.out.println("db2 : " + db2); // db2 :
		System.out.println("db3 : " + db3); // db3 :
		
		System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
		
		char ch1 = 'a'; 
		Character ch2 = new Character('a'); // Boxing(박싱)
		Character ch3 = 'a'; // auoto UnBoxing(언박싱)
		
		System.out.println("ch1 : " + ch1);
		System.out.println("ch2 : " + ch2);
		System.out.println("ch3 : " + ch3);

		//	'A' ==> 65
		//	'a' ==> 97
		//	'0' ==> 48
		//	' ' ==> 32
		
		ch1 = (char)(ch1 - 32);	// 97 = 32 ==> 65
		System.out.println("ch1 : " + ch1);	// ch1 : A
		
		char ch4 = 'b';
		System.out.println("ch4 : " + Character.toUpperCase(ch4));	// ch4 를 대문자로 변경 후 반환
		// 'B'
		
		char ch5 ='C';
		System.out.println((char)(ch5 + 32)); // 'c'
		System.out.println(Character.toLowerCase(ch5)); // 'c'
		
		System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println(">> 아무글자(영문, 숫자, 특수기호) 1개를 입력하세요 <<");
		
			String inputStr = sc.nextLine();	// "a"
												// "B"
												// "3"
												// "@"
												// "good"
			
			
				System.out.println(inputStr.charAt(0));	// "g"
				System.out.println(inputStr.charAt(1));	// "o"
				System.out.println(inputStr.charAt(2));	// "o"
				System.out.println(inputStr.charAt(3));	// "d"
				System.out.println(inputStr.charAt(4));	// java.lang.StringIndexOutOfBoundsException
			*/
			
			char ch_1 = inputStr.charAt(0);
			
		/*	
			if('A' <= ch_1 && ch_1 <= 'Z' ) // 대문자인지 알아봐야한다. 아래 두가지 코드로도 나타낼 수 있다.
		    if( 65 <= ch_1 && ch_1 <= 90 )	
		    if('A'+0 <= ch_1 && ch_1 <= 'Z'+0 )	
		*/
			
			String result;
			
			if('A' <= ch_1 && ch_1 <= 'Z') // 대문자인지 알아본다.
				result = "대문자";
			
			else if('a' <= ch_1 && ch_1 <= 'z')
				result = "소문자";
			
			else if('0' <= ch_1 && ch_1 <= '9')
				result = "숫자";
			
			else 
				result = "특수문자";
			
			System.out.println("입력하신 글자" + ch_1 +"는" + result + "입니다.");

			
			// 입력하신 글자 a 는 소문자 입니다.
			// 입력하신 글자 B 는 대문자 입니다.
			// 입력하신 글자 3 는 숫자 입니다.
			// 입력하신 글자 @ 는 특수문자 입니다.
			// 입력하신 글자 g 는 소문자 입니다.
			
			
			
			System.out.println("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
			
			if(Character.isUpperCase(ch1)) // 대문자인지 알아본다.
				result = "대문자";
			
			else if(Character.isLowerCase(ch1))
				result = "소문자";
			
			else if(Character.isDigit(ch1))
				result = "숫자";
			
			else 
				result = "특수문자";
			
			
				System.out.println("입력하신 글자" + ch_1 +"는" + result + "입니다.");
			
			sc.close();
		
	}// end of main()----------------------------------

}