기본적인 자바 프로그래밍을 위해 제공되는 라이브러리 집합
equals(Object obj)
hashCode()
// Pen
// equals를 오버라이딩 할 때는 반드시 hashcode도 같이 오버라이딩하여
// 두 객체가 같을 경우 주소값도 같게 만든다.
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Pen pen = (Pen) o;
// 펜의 시리얼 번호가 같으면 같은 펜으로 취급하게 한다.
return serial == pen.serial;
}
@Override
public int hashCode() {
return Objects.hash(serial);
}
// main
// 만약에 펜의 시리얼 넘버가 같다면 같은 펜으로 취급하겠다.
Pen redPen1 = new Pen(150L, "빨강", 1000, company);
Pen redPen2 = new Pen(150L, "빨강", 1500, company);
System.out.println(redPen1 == redPen2); // false
System.out.println(redPen1.equals(redPen2)); // true
System.out.println("redPen1 = " + redPen1.hashCode());
System.out.println("redPen2 = " + redPen2.hashCode());
toString()
class Pen {
long serial; // 일련번호
String color; // 색상
int price; // 가격
Company company; // 펜 제조사정보
public Pen(long serial, String color, int price, Company company) {
this.serial = serial;
this.color = color;
this.price = price;
this.company = company;
}
@Override
public String toString() {
return "Pen{" +
"serial=" + serial +
", color='" + color + '\'' +
", price=" + price +
", company=" + company +
'}';
}
}
class Company {
String companyName; // 회사명
String address; // 회사 주소
public Company(String companyName, String address) {
this.companyName = companyName;
this.address = address;
}
// Object 에서 제공하는 메서드인 toString을 오버라이딩해서 사용 가능
@Override
public String toString() {
return "Company{" +
"companyName='" + companyName + '\'' +
", address='" + address + '\'' +
'}';
}
}
// main
public static void main(String[] args) {
Company company = new Company("모나미", "서울");
Pen yellowPen = new Pen(100L,"노랑",1000, company);
System.out.println("yellowPen = " + yellowPen);
// yellowPen = Pen{serial=100, color='노랑', price=1000, company=Company{companyName='모나미', address='서울'}}
exit()
currentTimeMillis()
public static void main(String[] args) {
// 프로그램의 실행시간 체크
long start = System.currentTimeMillis();
System.out.println(start);
String s = "";
for (int i = 0; i < 100000; i++) {
s += "abc";
}
long end = System.currentTimeMillis();
long time = end - start;
System.out.println("time = " + time / 1000.0 + "초");
}
new String();
형식으로 객체 생성 가능String name = "홍길동"
처럼 타입으로도 가능length()
charAt()
String str = "Hello World!";
char ch = str.charAt(1); // ch에는 'e'가 저장됨
substring()
toUpperCase()
toLowerCase()
indexOf()
replace()
split()
String str = "Hello,Java,World!";
String[] tokens = str.split(","); // tokens에는 ["Hello", "Java", "World!"]가 저장됨
package day11.api.lang;
public class StringBuilderTest {
private static void makeString() {
long start = System.currentTimeMillis();
String s = "";
for (int i = 0; i < 200000; i++) {
s += "A";
}
long end = System.currentTimeMillis();
System.out.println("스트링 총 소요 시간: " + (end - start) + "밀리초");
}
private static void makeStringBuilder() {
long start = System.currentTimeMillis();
StringBuilder s = new StringBuilder("");
for (int i = 0; i < 200000; i++) {
s.append("A");
}
long end = System.currentTimeMillis();
System.out.println("빌더 총 소요 시간: " + (end - start) + "밀리초");
}
public static void main(String[] args) {
makeStringBuilder();
makeString();
}
}
append()
insert()
delete()
deleteCharAt()
replace()
setCharAt()
toString()
reverse()
abs()
: 절대값을 구함.ceil()
: 올림값을 구함.floor()
: 내림값을 구함.max()
: 수를 비교하여 최대값을 구함.min()
: 수를 비교하여 최소값을 구함.random()
: 랜덤값을 구함(0.0 <= 값 < 1.0)rint()
: 현재 수에서 가까운 정수를 실수형태로 구함.round()
: 반올림값을 구함.기본 타입(primitive type), 참조 타입(reference type)
으로 나누어짐package day11.api.lang;
public class Wrapper {
// 기본값 차이 유의하기
private int number1; // 기본값 0
private Integer number2; // 기본값 null
// 객체인 number2를 생성자를 통해 기본값을 0으로 초기화 시킬 수 있다.
public Wrapper(Integer number2) {
this.number2 = 0;
}
public static void main(String[] args) {
// Wrapper type (기본 타입을 객체로 포장함)
// Byte, Short, Integer, Long, Boolean, Float, Double, Character
Integer a = 10; // int a = 10; 과 동일함
Double b = 3.3;
}
}
now()
of()
getXXX()
getYear()
, getMonth()
, getDayOfMonth()
, getHour()
, getMinute()
, getSecond()
)plusXXX()
plusDays()
, plusHours()
, plusMinutes()
, plusSeconds()
)minusXXX()
minusDays()
, minusHours()
, minusMinutes()
, minusSeconds()
)format()
package day11.api.time;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
import java.util.Date;
public class DateTime {
public static void main(String[] args) {
// 자바8 이전
Date date = new Date();
System.out.println("date = " + date.getYear());
Calendar calendar = Calendar.getInstance();
// 자바8 이후
LocalDate nowDate = LocalDate.now();
System.out.println("nowDate = " + nowDate);
System.out.println(nowDate.getYear());
LocalTime nowTime = LocalTime.now();
LocalDateTime nowDateTime = LocalDateTime.now();
System.out.println("nowDateTime = " + nowDateTime);
// 특정 날짜 정보 생성하기
LocalDate targetDate = LocalDate.of(2022, 4, 15);
System.out.println("targetDate = " + targetDate);
// 날짜 연산
// 도서 대여시스템에서 빌린날짜로부터 3일 뒤가 반납일
LocalDate rentalDate = LocalDate.now();
LocalDate returnDate = rentalDate.plusDays(3);
System.out.println("returnDate = " + returnDate);
LocalDate targetDateTime = returnDate
.plusYears(2)
.plusMonths(3)
.plusDays(5);
System.out.println("targetDateTime = " + targetDateTime);
// 사이 날짜 구하기
LocalDate hireDate = LocalDate.of(2018, 3, 6);
LocalDate retireDate = LocalDate.of(2022, 12, 27);
long between = ChronoUnit.DAYS.between(hireDate, retireDate);
System.out.println("between = " + between);
// 날짜 포맷 바꾸기
System.out.println("nowDateTime = " + nowDateTime);
DateTimeFormatter pattern
= DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 a hh시 mm분 ss초");
String dateString = nowDateTime.format(pattern);
System.out.println("dateString = " + dateString);
}
}