본문 바로가기

콩's EDUCATION/콩's JAVA

[KITRI] 자바 9장 : Java API (Application Program Interface)

자바 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();}

 

 

ch9.zip