자바 9장. 자바 API
* Object
1. 자바 상속관계 최상위 클래스
2. Object 모든 메소드(10개)들은 자바의 다른 클래스에도 포함
3. Object 그대로 사용 또는 오버라이딩
4. equals() 메소드
기본형 변수값 동등성 비교
== 실제값 동등성 비교
참조형 변수값 동등성 비교
== 주소값 동등성 비교
(연산자 기능 정해진 그대로 ; overriding 불가능)
5. toString() 메소드
* 두 문자열 객체 내용 비교
@Override
public boolean equals(Object obj) {
if(obj instanceof CellPhone){
return model == (((CellPhone)obj).model);
}
else{
return false;
}
}
object 클래스포함/모든 클래스 상속 포함
equals() 메소드 ; 클래스 = 객체
* hashCode()
hash 함수 ; 컴퓨터 조회시간 빠르게 하기 위한 알고리즘
hashCode() 함수 값 조회 메소드
A a1 = new A();
stack
a1;100
heap
xxxx번지
A 멤버변수
* Clone
객체 복제
Car c1 = new Car("","");
c2 <= c1.clone();
c2.model ="그랜져";
* Java.lang.String 클래스
S.O.P("i 변수의 값 ="+i)
"aa" "100" "3.14" "a" ==> String
???? 개의 문자열 "" 내부 묶음
<다른 클래스에는 없는 특징>
1. new 키워드 없이도 String 객체 생성 가능
String s1 = "java"; ==> String literal (기본형 값)
String s2 = "java";
String s3 = new String("java"); ==> String 객체
String s3 = new String("java");
stack heap
s1 100; java (s1,s2 는 같은 주소 참조)
s2
s3 200; (s3,s4는 다른 주소 참조)
s4 300;
s1 == s2 TRUE
s3 == s4 FALSE
s1.equals(s2...s4) TRUE
2. + 연산자 이용하여 문자열 결합
"100" + "3.14" ==> 1003.14
100 + 3.14 ==> 103.14
String s1 = "100";
String s2 = "3.14";
s1.concat(s2) : "1003.14"
메소드
equals(String) 두개 문자열 내용 비교
Object 상속 overriding 메소드
concat(String) 두 문자열 결합
3.
x`String s1 = new String("java");
String s2 = new String("java");
s1.concat("program");
s1.equals(s2);'
java.lang.StringBuffer
변하지 않는 문자열 표현
(객체 생성시 정해진 문자열 외에 여유공간 없음)
java.lang.StringBuffer
변하는 문자열 표현
(객체 생성시 정해진 문자열 + 16문자 더 저장 여유공간 가짐)
사용자 지정 문자갯수 여유저장공간
String s1 = new String("java");
s1.length()==>4
s1+s2
s.concat
==> 원래 문자열 객체 내용은 변하지 않는다.
새롭게 결합 메모리 생성하면 주소값을 변경한다.
프로그램 문자열 내용이 자주 변경
StringBuffer sb1 = new StringBuffer("java",10);
sbl.length()==>4
sb1.capacity() ==> 14 (StringBuffer 안에 있는 API)
sb1.append("servlet");
==> sb1 객체 문자열 변경 : "javaservlet"
java.util.StringTokenizer: split메소드와 유사
java.lang.Math 클래스
1. final클래스; 상속 불가능
2. static 모든 변수와 메소드 ; 객체 생성 안해도된다.
3. Math.xxx
변수 ; static PI(원주율,3.141419...)
static E; 자연로그 2.XXXX
random() ; 0.0 ~ 1.0 난수생성
round() ; 반올림
ceil() ; 올림
floor() ; 내림
sin,cos() ; 삼각함수
(1)
final class Math{
test(){}
}
class A extends Math ==> 에러
{???}
class A
{ Math m = new Math();
m.test();}
(2)
final class Math{
static test(){}
}
class A extends Math ==> 에러
{???}
class A
{ Math.test;
m.test();}