모든 클래스의 최고 조상 클래스
오직 11개의 메서드를 가지고 있다
equals()
: 객체 자신과 객체 obj가 같은 객체인지 알려준다
class person {
long id;
// equals Override
public boolean equals(Object obj) {
// 어떤 객채인지, 어떤 객체를 상속받았는지 확인
if(obj instanceof person) {
// id를 참조하기 위해 person타입으로 downcasting
return id==(person)(obj.id)
}else {
return false;
}
}
}
hashcode()
: 객체의 해시코드를 반환하는 메서드 객체의 주소를 int로 반환해서 반환한다
public int hashCode() {
return Objects.hash(person);
} // iv가 같으면 같은 값이 나오도록 오버라이딩
tostring()
: 객체 자신의 정보를 문자열로 반환한다
TestObject to = new TestObject();
System.out.println(to); //참조형주소 호출시 자동으로 toString호출
System.out.println(to.toString()); // 동일값 출력
int num
String kind
public String toString() {
return "kind : "+kind", num : "+num;
}
getClass()
: 객체 자신의 정보를 갖고 있는 Class인스턴스를 반환한다
clone()
: 객체의 복사본을 반환한다
Application Programming Interface
프로그래밍을 할 때 어떠한 특정 기능을 처리할 수 있도록 만들어 놓은 클래스나 메서드의 집합
- 외부라이브러리로 변경하여 사용할 수 없다
API는 외우기 보다는 메서드 사용법을 익혀야 한다 (매개변수에 뭘 넣어야 하는지, 인스턴스 생성은 어떻게 하는지 각각 다르기 때문)
// 첫번째 매개변수 위치에, 두번째 매개변수 값을 삽입
sb.insert(7, " 여기 ");
System.out.println(sb.toString());
// 문자열중 0번째부터 2번째 앞!!!까지 "수정구문"으로 대체
sb.replace(0, 2, "수정구문");
// 0-9숫자로 랜덤 인증코드
Random r = new Random();
StringBuffer joinCode = new StringBuffer();
for(int i=0; i<6; i++) {
int num = r.nextInt(10); // 0-9
joinCode.append(num);
}
System.out.println
("회원가입 코드 ["+joinCode.toString()+"]");
stringBuffer | |
---|---|
capacity() | 실제 할당된 공간의 크기 확인 |
length() | 실제 문자열 길이 확인 |
reverse() | 저장된 문자열을 거꾸로 재배치 |
insert() | 문자열의 특정 위치에 문자열 추가 |
append() | 문자열 끝에 문자열을 추가 |
delete() | 문자열의 일부분을 삭제 |
replace() | 문자열의 일부분을 다른 문자열로 변경 |
String str = "임라떼/서울사는/강아지";
// "/"구분자를 기준으로 문자열을 분리하여 각 토큰에 저장한다
StringTokenizer st = new StringTokenizer(str, "/");
// hasMoreTokens가 boolean이기 때문에 false가 나올 때까지 while문을 반복한다
while(st.hasMoreTokens()) {
String str1 = st.nextToken();
System.out.println(str1);
}
StringTokenizer | |
---|---|
countTokens() | 꺼내지 않고 남아있는 토큰의 수 |
hasMoreTokens() | 남아있는 토큰이 있는지 확인 (true/false) |
nextToken() | 토큰을 하나씩 꺼내온다 |
public void math() {
//객체생성X
System.out.println(Math.abs(10)); // 절대값
System.out.println(Math.abs(-10)); // 절대값
// 올림, 버림, 반올림
//소수 첫자리에서 올림 11.0
System.out.println(Math.ceil(10.1));
//소수 첫자리에서 버림 10.0
System.out.println(Math.floor(10.9));
//소수 첫자리에서 반올림 11(정수)
System.out.println(Math.round(10.5));
// 1.3456 소수 3번째 자리에서 반올림 > 1.35
// 134.5 만들어서 반올림 하고 135/100.0 > 1.35
System.out.println(Math.round(1.3456*100)/(double)100);
// 숫자비교
// 매개변수로 전달한 두 수 중 큰수 리턴
System.out.println(Math.max(50, 30));
// 매개변수로 전달한 두 수 중 작은수 리턴
System.out.println(Math.min(50, 30));
}
Date Class
SimpleDateFormat Class
Date today = new Date(); // Date객체 생성
// 시스템으로부터 현재 날짜, 시간정보를 가져와 기본값으로 사용
System.out.println(today);
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String todayStr = format1.format(today);
System.out.println(todayStr);
SimpleDateFormat format2 = new SimpleDateFormat("yyyy년MM월dd일 HH시mm분ss초 EEE요일");
String todayStr2 = format2.format(today);
System.out.println(todayStr2);
Calendar Class
Calendar today = Calendar.getInstance();
//getInstance()메소드를 통해 객체 생성
//today.get(Calendar.정보종류);
System.out.println(today.get(Calendar.YEAR)); // 0,1,2,3
System.out.println(today.get(Calendar.MONTH)+1); // 월(0~11)
System.out.println(today.get(Calendar.DATE)); //일
System.out.println(today.get(Calendar.AM_PM)); //AM=0, PM=0
System.out.println(today.get(Calendar.HOUR));
System.out.println(today.get(Calendar.MINUTE));
System.out.println(today.get(Calendar.SECOND));
System.out.println(today.get(Calendar.MILLISECOND));
// 현재 기준 밀리세컨을 보여준다
System.out.println(today.get(Calendar.DAY_OF_WEEK)); //(1=일요일, 7=토요일)
Calendar Class로 시간 계산하는 방법
Calendar day2 = Calendar.getInstance();
long time1 = day2.getTimeInMillis();
//1970년도 1월 1일부터 day2까지 몇 ms가 흘렀는지 리턴
// 흐른 정도를 보여준다
// 양이라고 생각하면 됨
day2.set(Calendar.DATE, 8); // 7/8
long time2 = day2.getTimeInMillis();
System.out.println("time1 : "+time1);
System.out.println("time2 : "+time2);
System.out.println("시간차이 : "+(time2-time1));
Date date1 = new Date(time1);
Date date2 = new Date(time2);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date1str = format.format(date1);
String date2str = format.format(date2);
System.out.println(date1str);
System.out.println(date2str);
반드시 참조형이 들어가야 하는 매개변수 인자, 제네릭 등을 사용하기 위해 기본형을 참조형으로 변환하는 클래스
기본타입 | 래퍼 클래스 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Integer num = new Integer(10);
int n = num.intValue();
intrger num = 10;
int n = num;
public void wrap() {
// 1+"" < 문자열 됨
// 다른 방법
//wrapper 클래스 사용 예
// 1) 문자열 > 기본형
String str1 = "100";
System.out.println(str1+1); //1001
// Integer.parseInt(str) : 숫자형 문자열을 Integer형으로 반환
int num = Integer.parseInt(str1);
// int로 auto-unboxing
System.out.println(num+1); //101
/*
String str2 = "100a";
정상적인 정수가 아닌 경우 변환 도중 에러 발생
int num2 = Integer.parseInt(str2);
*/
String str2 = "3.14";
double dNum = Double.parseDouble(str2);
System.out.println(dNum);
// 1-2) 문자열 > 문자 변환
String str3 = "A";
char ch = str3.charAt(0);
// 2) 기본형 > 문자열
int num1 = 100;
// 2-1) Integer 사용 방법 (wrapper클래스 사용)
String str4 = Integer.valueOf(num1).toString();
double dNum2 = 3.14;
String str5 = Double.valueOf(dNum2).toString();
// 2-2) String 클래스 사용
String str6 = String.valueOf(num1);
String str7 = String.valueOf(dNum);
}
// 문자형 > 문자열
Char ch = 'a';
String data = ch.toString();
Integer.parseInt(data)
: 문자형의 기본형 데이터를 Integer형으로 변환
valueOf
: 기본 자료형을 문자열로 변경할 때는 Integer, Double 같은 wrapper클래스를 사용 하거나, String 클래스 사용하여 변환
문자형의 변환은 charAt(index)
혹은 ch.toString
을 사용하므로 예외