2022.08.30
[학습]
1. API(Application Programming Interface)
- 라이브러리(Library)라고도 함
- 프로그램 개발을 위해 제공되는 클래스 및 인터페이스 모음
- String, System, ...
- 주로 java.lang, java.util, java.time 패키지를 사용
- https://docs.oracle.com/javase/8/docs/api/
// Object 클래스
// equals() : 동일 객체인지 비교 후 결과 반환
Object obj1 = new Object();
Object obj2 = new Object();
// System.out.println(obj1);
// System.out.println(obj2);
// System.out.println(obj1 == obj2);
// System.out.println(obj1.equals(obj2));
// hashCode() : 객체 주소값을 정수로 변환 반환
// System.out.println(obj1.hashCode());
// toString() : 객체의 정보(객체의 주소값)를 문자열로 반환
// 개발자가 호출하지 않아도 객체 호출시 자동적으로 실행되는 메소드
// System.out.println(obj1);
// System.out.println(obj1.toString());
// System 클래스
// gc() : 쓰레기 수집기
IT it;
// it = new IT(1);
// it = null;
// it = new IT(2);
// it = new IT(3);
// 어플리케이션이 구동되는 동안, 메모리 상에서 제거된 객체를 삭제하는
// 메소드 : 직접 호출하지 않고 알아서 실행이 되는 메소드
// System.gc();
// getProperty() : 시스템의 속성값
// System.out.println(System.getProperty("os.name"));
// System.out.println(System.getProperty("java.home"));
// System.out.println(System.getProperty("java.runtime.name"));
// System.out.println(System.getProperties());
// String 클래스
// 객체비교 : ==, != / equals() : 문자열의 내요을 비교
// charAt() : 지정 인덱으싀 위치 문자를 반환
String str1 = "Java API";
// System.out.println(str1.charAt(6));
// System.out.println(str1.charAt(8)); // 에러
// length() : 문자열의 길이 반환
// System.out.println(str1.length());
// indexOf() : 찾고자 하는 문자의 위치 반환
// System.out.println(str1.indexOf("API"));
// 대소문자로 변경
// System.out.println(str1.toUpperCase());
// System.out.println(str1.toLowerCase());
// substring() : 지정 위치에서 또 다른 지정 위치의 문자열을 반환
// System.out.println(str1.substring(0));
// System.out.println(str1.substring(0, 5));
// replace() : 지정 문자열을 변경
// System.out.println(str1.replace("Java", "자바"));
// trim() : 문자열의 앞, 뒤 공백 제거
String strTrim = " Java API ";
// System.out.println(strTrim.trim());
// split() : 특정 구분자를 기준으로 분리된 문자열 반환
String strSplit = "Java API String Test";
// System.out.println(strSplit.split(" "));
String[] strSplitArr = strSplit.split(" "); // 정규표현식
// for(String str : strSplitArr) {
// System.out.println(str);
// }
// StringTokenizer 클래스 : java.util
StringTokenizer strTokenizer = new StringTokenizer(strSplit, " "); // 일반 문자열
// while(strTokenizer.hasMoreTokens()) {
// System.out.println(strTokenizer.nextToken());
// }
https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
// Date 클래스
Date date = new Date();
System.out.println(date);
// SimpleDateFormat() : 특정 문자열 포맷으로 변환
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy MM dd");
System.out.println(simpleDateFormat.format(date));
// "yyyy년 MM월 dd일"
simpleDateFormat = new SimpleDateFormat("yyyy년 MM월 dd일");
System.out.println(simpleDateFormat.format(date));
// "yyyy-MM-dd"
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(simpleDateFormat.format(date));
// "yyyy:MM:dd HH:mm:ss"
simpleDateFormat = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
System.out.println(simpleDateFormat.format(date));
// Calendar 클래스
Calendar cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.MONTH) + 1);
System.out.println(cal.get(Calendar.DAY_OF_MONTH));
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
System.out.println(cal.get(Calendar.HOUR_OF_DAY));
System.out.println(cal.get(Calendar.MINUTE));
System.out.println(cal.get(Calendar.SECOND));
// LocalDate 클래스 : 로컬 날짜
LocalDate currentData = LocalDate.now();
System.out.println(currentData);
System.out.println(currentData.getYear());
System.out.println(currentData.getMonth());
System.out.println(currentData.getMonthValue());
System.out.println(currentData.getDayOfWeek());
System.out.println(currentData.getDayOfMonth());
System.out.println(currentData.getDayOfYear());
System.out.println(currentData.isLeapYear());
//
System.out.println();
// LocalTime 클래스 : 로컬 시간
LocalTime currentTime = LocalTime.now();
System.out.println(currentTime);
System.out.println(currentTime.getHour());
System.out.println(currentTime.getMinute());
System.out.println(currentTime.getSecond());
//
// System.out.println();
// LocalDateTime 클래스 : 로컬 날짜 + 시간
LocalDateTime localDataTime1 = LocalDateTime.now();
System.out.println(localDataTime1);
System.out.println(localDataTime1.plusYears(1));
System.out.println(localDataTime1.minusDays(1));
System.out.println();
// with() : 사용자 정의 변경 - 년, 월, 일, 시, 분, 초
LocalDateTime localDataTime2 = LocalDateTime.now();
System.out.println(localDataTime2);
// 초기화 후 변경
LocalDateTime localDataTime3 = null;
System.out.println(localDataTime3);
localDataTime3 = localDataTime2.withYear(2024).withMonth(2).withDayOfMonth(22).withHour(14).withMinute(22);
System.out.println(localDataTime3);
// ZonedDateTime 클래스 : 특정 zone의 날짜, 시간
ZonedDateTime seoulDateTime = ZonedDateTime.now(ZoneId.of("Asia/Seoul"));
System.out.println(seoulDateTime);
상속(Inheritance)
https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
부모가 자식에게 물려주는 행위
- 상속하는 클래스 : 상위, parent, super, base
- 상속받는 클래스 : 하위, child, sub, derived
클래스 구성요수 "변수"와 "메소드"만 상속
java.lang.Object : 모든 클래스 최상위
필요성 : 기존의 구현 코드 상속 받아 사용(재사용성), 필요 속성 혹은 기능 확장 개발(확장성)
재사용성 -> 개발 속도 향상
제약 : 자식 = 부모 관계에서만 성립
문법
class 자식클래스명 extends 부모클래스명{
변수, 메소드만 상속
자식만의 변수, 메소드 추가 개발 기능
}
자동 생성되는 코드
- 클래스 선언구
extends Object
- 생성자
미구현시 자동으로 추가
생성자별 첫 라인에 부모 생성자 '호출' : super();
메소드 재정의(오버라이딩 overriding/override)
- 반환타입 메소드명 argument list는 100% 동일
- {} body 부분을 수정
- 부모의 메소드 로직을 그대로 반영하여 자식에게 사용할 경우, super()