230508 day24 개념 정리

Jin·2023년 5월 25일
0

codenotion

목록 보기
21/90
post-thumbnail
API 도큐먼트 : 자바 표준 모듈에서 제공하는 라이브러리로 
쉽게 찾아서 사용할 수 있도록 도와줌 

Object 객체
자바의 모든 클래스는 Object의 자식이거나 자손 클래스이다.

obj1 == obj2
obj1.equals(obj2)

객체 동등 비교
hashCode() 리턴값 같음 ---> equals() 리턴값 ---> 동등객체

레코드 선언
DTO(Data Transfer Object) : 데이터를 전달하기 위한 객체
(레코드 클래스 선언으로 사용)
ex> 
method(String 상품이름, int 상품가격, String 옵션, String주소...) 

DTO 선언 시 반복적으로 사용되는 코드를 줄이기 위해 
java14버전에서 레코드 추가

ex>
public record Person(String name, int age) {}

레코드 소스 ---> 컴파일
private final 필드 생성 
생성자 
Getter 메소드
hashCode(), equals(), toString() 메소드를 재정의한 코드 생성

롬복 라이브러리 
- DTO 클래스 작성시 용이함
- 자동코드 라이브러리
- Getter, Setter, hashCode(), equals(), toString() 메소드 자동생성

다운로드 -> cmd 관리자 모드로 설치 -> 자바 프로젝트 lib폴더 생성
-> 붙여넣기 -> Build Path 설정 

System 클래스 : 운영체제의 일부 기능을 사용 
필드 out, err, in
메소드 exit(int status) - 프로세스 종료 -> 정상종료 : 0, 비정상 종료 : 1 또는 -1
currentTimeMillis() - 현재 시간을 밀리초 단위로 long타입으로 반환
(1970년 1월 1일 0시 0초를 기준)
nanoTime() - 현재 시간을 나노초 단위로 long타입으로 반환
getProperty() - 운영체제와 사용자 정보를 제공
getenv() - 운영체제의 환경변수 정보 제공

문자열 클래스 (String) 

문자열을 byte배열로 인코딩
byte[] bytearr = str.getBytes() ---> byte배열로 반환

byte배열을 문자열로 디코딩
String str2 = new String(bytearr)

String ---> 수정 불가능
StringBuilder : 잦은 문자열 변경 시 사용 
- 내부 버퍼에 문자열을 저장하고 그 안에서 추가, 수정, 삭제하도록 설계됨
- String처럼 새로운 객체를 만들지 않고 문자열을 조작함

- append(문자열) : 문자열을 끝에 추가
- insert(위치, 문자열) : 문자열을 지정위치에 추가
- delete(시작위치, 끝위치) : 문자열 일부를 삭제
- replace(시작위치, 끝위치, 문자열) : 문자열 일부를 변경
- toString() : 완성된 문자열을 String타입으로 리턴 


컬랙션에 같은 객체 저장할 수 없음 
객체동등비교
hashCode() 일치하는지 비교
equals() 일치하는지 비교


포장 클래스 : 포장 객체를 생성하기 위한 클래스 
박싱 - 기본 타입의 값을 포장 객체로 
ex>
Integer obj = 100;

언박싱 - 포장 객체를 기본 타입으로
ex>
int value = obj;

포장값 비교
Integer obj1 = 200;
Integer obj2 = 200;

obj1 == obj2; ---> false 
(번지수를 비교하기 때문에 / 
번지수로 비교 가능한 값의 범위인 -128 ~ 127을 넘김)

obj1.equals(obj2) 를 사용
(포장 클래스의 equals()메소드는 내부의 값을 비교하도록 재정의 되어있음)

<클래스>
byte - Byte
char - Character
short - Short
int - Integer
long - Long
float - Float
double - Double
boolean - Boolean


수학 클래스
모든 메소드가 정적 메소드 
절대값 - Math.abs()
올림값 - Math.ceil()
버림값 - Math.floor()
반올림값 - Math.round()
랜덤값 - Math.random()
최소값 - Math.min()
최대값 - Math.max()

Random random = new Random() 
현재 시간을 이용해서 종자값을 자동 설정
Random random = new Random(long seed)
주어진 종자값을 사용함

random.nextInt(n)
0 ~ n-1까지 랜덤값을 출력
random.nextInt(6)
0 ~ 6-1까지

1 ~ 8까지
: random.nextInt(8) +1


날짜와 시간 클래스 

java.util 패키지 Date, Calender 클래스 제공
- 날짜 및 시간을 읽을 때 사용
java.time 패키지 LocalDateTime 클래스 제공
- 날짜와 시간을 조작할 때 사용

1. Date 클래스
날짜 정보를 주고받을 때 사용
현재 날짜를 읽어 Data객체를 생성

Date date = new Date();
date.toString() : 현재 날짜를 문자열로 리턴

SimpleDateFormat클래스 : 원하는 형식의 문자열로 리턴해줌
SimpleDateFormat sdf = new SimpleDateFormat("원하는 형식 지정");
String strnow =  sdf.format(데이트 객체)
yyyy 년도 MM 월 dd 일 
H 시간 m 분 s 초 
E 요일 a 오전/오후 

2023-05-08
("yyyy-MM-dd")


2. Calendar 클래스 
달력을 표현하는 추상 클래스
자식 클래스에서 구현되도록 되어있음 

getInstance()메소드를 사용하여 컴퓨터에 설정된 
시간대를 기준으로 하위 객체를 리턴

Calendar now = Calendar.getInstance();

int year = now.get(Calendar.YEAR) +1; // 년도를 리턴 
int month = now.get(Calendar.MONTH) // 월을 리턴
int day = now.get(Calendar.DAY_OF_MONTH) // 일을 리턴
int week = now.get(Calendar.DAY_OF_WEEK) // 요일을 리턴
int amPm = now.get(Calendar.AM_PM) // 오전/오후를 리턴
int hour = now.get(Calendar.HOUR) // 시를 리턴
int minute = now.get(Calendar.MINUTE) // 분을 리턴
int second = now.get(Calendar.SECOND) // 초를 리턴


Calendar now = Calendar.getInstance(타임존객체);
TimeZone timezone =  TimeZone.getTimeZone("미국/로스엔젤레스")

TimeZone.getAvailableDs() : 시간대 ID명을 String배열로 리턴
String[] availableDs = TimeZone.getAvailableDs();

LocalDateTime클래스
날짜와 시간을 조작할 수 있음

현재 컴퓨터의 날짜와 시간을 얻기
LocalDateTime now = LocalDateTime.now();
LocalDateTime targetDay = LocalDateTime.of(year, month, day, 
hour, minute, second)

ex>
LocalDateTime now = LocalDateTime.now();
LocalDateTime targetDay = LocalDateTime.of(2021,01,06)

메소드 
minusYears(long) 년도 빼기
minusMonths(long) 월 빼기
minusDays(long) 일 빼기
minusWeeks(long) 주 빼기

plusYears(long) 년도 더하기
plusMonths(long) 월 더하기
plusDays(long) 일 더하기
plusWeeks(long) 주 더하기


isAfter()	이후 날짜인지?	boolean
isBefore()	 이전 날짜인지?	boolean
isEqual() 	같은 날짜인지?	boolean
until() 	기간이 얼마인지?	long

LocalDateTime객체1.isAfter(LocalDateTime객체2)


형식 클래스 
SimpleDataFormat : 날짜를 형식화된 문자로 반환
DecimalFormat : 숫자를 형식화된 문자로 반환 

DecimalFormat
0 10진수 (빈자리는 0으로 채움)
# 10진수 (빈자리는 채우지 않음)
. 소수점
, 단위 구분
% %문자
\u00A4 통화기호

DecimalFormat df = new DecimalFormat("00000.00000")
df.format(123.789) ---> 00123.78900


정규표현식 클래스
: 문자열이 정해진 형식으로 되어있는지 체크, 검증 
ex> 이메일 형식, 전화번호, 비밀번호 형식 

[] 한 개의 문자 
[abc] a,b,c 중에 한개
[^abc] a,b,c 이외의 문자 한개
[a-zA-Z] a~z, A~Z 중에 한개 
\d 한개의 숫자 / [0-9]와 동일
\s 공백
\w 한개의 알파벳 또는 한개의 숫자 / [a-zA-Z0-9]와 동일
\. .
. 모든 문자 중 한개 
? 없음 또는 한개  
+ 한개 이상
* 없음 또는 한개 이상
{n} 정확히 n개
{n, } 최소 n개
{n,m} n개부터 m개까지
a | b a 또는 b
() 그룹핑

boolean result = Pattern.matches("정규식", "검증할 문자")
profile
신입 개발자의 배웠던 것을 복습하기 위한 블로그입니다.

0개의 댓글