13일차(Wrapper클래스)

2023. 12. 27. 17:31자바 기초 및 세팅

Wrapper클래스

  • 기본자료형을 가지고 만든 클래스
  • int와 char를 제외한 다른 자료형은 첫글자만 대문자로 바꾸면 래퍼 클래스가 됨 
  • int => Integer, char => Charater
  • 기본자료형과 Wrapper클래스의 차이는 래퍼 클래스는 객체를 생성하기 때문에 주소를 저장 => null가능

제네릭 클래스는 기본 자료형으로 생성할 수 없음. 정수로 된 제네릭 클래스를 만들고 싶어도 int는 클래스가 아니어서 안됨. 그래서 래퍼 클래스인 Integer로 하면 가능.

 

박싱과 언박싱

  • 기본자료형을 래퍼클래스의 객체로 만드는 걸 박싱
  • 래퍼클래스의 객체를 기본자료형으로 만드는 걸 언박싱
int num1 = 10;

Integer number1 = num1; //박싱, 기본자료형 num1을 Integer 클래스의 객체로 변환

int num2 = number1; //언박싱

 

(Math, Random)클래스

 

Math클래스

수학 관련 기능을 제공하는 클래스
int abs(int a), double abs(double a) : 절대값  
double ceil(double a) : 소수점 첫번째 자리에서 올림.
double floor(double a) : 소서점 첫번째 자리에서 버림.
double random() : 0이상 1미만의 랜덤 수
long round(double a) : 소수점 첫번째 자리에서 반올림. 정수리턴

 

Random클래스

  • 난수(랜덤수)를 생성하기 위한 기능을 제공하는 클래스
  • Random() 생성자 : 현재 시간을 종자값으로 자동 설정
  • Random(long seed) 생성자 : seed값을 종자값으로 설정
  • 종자값이 같으면 반복해도 같은 랜덤한 수를 생성 
  • boolean nextBoolean() : boolean 타입의 난수 리턴
  • double nextDouble() : double 타입의 난수 리턴.0이상 1미만
  • int nextInt() : int 범위에서 난수 리턴.(-231~231-1)
  • int nextInt(int n) : 0이상 n미만의 난수 리턴
package day13;

import java.util.Random;

public class RandomEx1 {

	public static void main(String[] args) {
		Random random = new Random();
		
		int min = 1, max = 9;
		for(int i = 0; i<10; i++) {
			System.out.println(random.nextInt(max - min+1)+min);
		}
	}

}

date 클래스

  • 기본 생성자만 주로 사용. 기본 생성자 이외의 생성자는 대부분 Deprecated(비권장) 됨.
  • Date date = new Date(); //현재 날짜를 객체로 가져옴
  • 날짜 -> 문자열로, 문자열 -> 날짜로 바꾸는 예제는 꼭 기억!
    • yyyy : 년, MM : 월, dd : 일, hh : 시(오후2시 -> 2시), 
    • HH : 시(오후2시 -> 14시), mm : 분, ss : 초
    • MM과 mm 바꾸면 안됨.
package day13;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import lombok.AllArgsConstructor;
import lombok.Data;

public class DateEx1 {

	public static void main(String[] args) throws ParseException {

		Date date = new Date();
		
		System.out.println(date);
		
		//Date => String
		/* 화면에 보여줄 시간 패턴을 문자열로 지정
		 * yyyy : 년, MM : 월, dd : 일, hh : 시(오후2시 -> 2시),
		 * HH : 시(오후2시 -> 14시), mm : 분, ss : 초
		 * MM과 mm은 바꾸면 안됨
		 * */
		//SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		SimpleDateFormat format = new SimpleDateFormat("yyyy년MM월dd일 HH시mm분ss초");
		String str = format.format(date);
		System.out.println(str);
		
		//String => Date
		Date date2 = format.parse(str);
		System.out.println(date2);
		
		Board board = new Board("제목", "내용", new Date());
		System.out.println(board);
		Board board2 = new Board("제목2", "내용", null);
		board2.setRegDate("2023-12-27 18:00:00");
		
	}
}

@AllArgsConstructor
@Data
class Board{
	String title, contents;
	
	Date regDate;//작성일
	public void setRegDate(String str) {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			regDate = format.parse(str);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}

Calendar 클래스 

  • 달력을 표현한 클래스
  • new 연산자로 객체 생성 X. getInstance()를 이용하여 객체를 가져옴
  • 년, 월, 일, 시, 분, 초, 요일 등의 다양한 정보를 쉽게 가져올 수 있음
  • 그냥 날짜를 저장해서 관리할 땐 Date, 월이나 시, 분, 초등 다양한 값을 가져와야 할 땐 Calendar

캘린더 예제

package day13;

import java.util.Calendar;

public class CalenderEx1 {
	
	public static void main(String[] args) {
		
		//캘린더 예제
		Calendar cal = Calendar.getInstance();
		int year = cal.get(Calendar.YEAR);
		System.out.print(year+"년");
		int month = cal.get(Calendar.MONTH)+1;
		System.out.print(month + "월");
		int day = cal.get(Calendar.DAY_OF_MONTH);
		System.out.print(day + "일");
	}
}

'자바 기초 및 세팅' 카테고리의 다른 글

14일차(제네릭)  (0) 2023.12.28
14일차(DecimalFormat, 예외처리)  (1) 2023.12.28
13일차(정규표현식)  (1) 2023.12.27
13일차(기본클래스)  (0) 2023.12.27
13일차(인터페이스)  (0) 2023.12.27