본문 바로가기
Studynote/Computer Science 12

10.07. 제 9장 java패키지

by e.sunie 2018. 11. 5.

10.07.MON 

ch9 java 패키지


1. Object 클래스


11개의 매소드가 정의되어있다.


*equals(Object obj)

equals 메소드

public boolean equals (Object obj) {

        return (ths==obj);

}

 참조변수값이 equals한지를 본당

Value v1  = new Value(10);

Value v2 = new Value(10);

v1.equals(v2) → false를 return

//내용을 바꿔주도록 오버라이딩 하면 ture로 변환가능

v1=v1;

//한 후에 하면,

v1.equals(v2) → true이다.

class Person {

  int id;

  public boolean equals(Object obj) { //equals의 재정의

    if(obj!=null && obj instanceof Person) {

      return id == ((Person)obj).id;

    }

    else

      return false;

 }

  Person (int id) { this.id=id;}

}

in main()

Person p1 = new Person(1234);

Person p2 = new Person(1234);

(p1=p2) →  ? false (주소값이 다르기에)

p1.equals(p2) → ? true (equals를 재정의하였다. )

 

 


*hashCode() 메소드


일종의 데이터를 검색하고 저장할 때 사용?

객체의 특정 값을 해쉬함수를 이용하여 특정 값으로 산출한다.


skip



*toString() 매소드


Object 클래스 내에서 정의 :

public String toString() {

        return getClass().getName()+“@”+Integer.to.HexString(hashCode())’

}


클래스 이름 + 해쉬값으로 구성


class Card {  . . . . }

void main() {

  Card c1;

  Sysytem.out.println(c1.toString());

→ Card@43e674

카드라는 것만 알수 있음.


카드내에서 재정의를 해봅세

 

class Card{

 ...

 public String toString() {

  reutn “Kind:” + kind + “number: ” + number;

 }

}

void main() {

  Card c1 =new Card(“Spade”,7);

  System.out.printfln(c1.tostring);

→ Kind : Spade number: 7

 



2. String 클래스


String str1 = “abc”;

String str2 = “abc”

str1 == str2 → ? ture

(==은 주소를 비교한다. 따라서 false가 나와야하지만 . . .

str1.equals(str2) → ? true

(우리는 equals를 재정의하지 않았다. but String클래스내에서 equals가 재정의 되어있다.)


Stirng str3 = new String(“abc”);

String str4 = new String(“abc”);

str3 == str4 → ? false (두 개의 서로 다른 객체를 만들었기에 참조변수가 서로 다름 )


constant pool (상수 테이블) 이걸알아. . . .

상수는 상수 테이블 안에들어가있어서 기억됨.

내가 abc라는 상수를 를 여러번 써도 상수 테이블 안에서는 하나만 존재되어있음.

따라서 st1로 가르키나 str2로 가르키나 하나만 가르키기에 true!

str3.equals(str2) → true



빈 문자열 (empty string()

 

String s = null;

Sting s = “”;

int val = 100;

String str5 = String.valueOf(value);

→str5 = “100”

int val5 = Integer.parseInt(str5);

→val5 = 100;

str5가 “100.23”이면 예외가 발생한다.

왜냐하면 100.23은 정수로 전환될 수 없기 떄문

 


index

0

1

2

3

4

5

6

7

8

9

char

H

e

l

l

o

.

j

a

v

a

String str = “Hello.java”;

str.indexOf(‘.‘) → 5

str.substring(0,5) → “Hello”

//실제 가져오는 것은 0-4까지 갖고옴(주의)

str.substring(6,10) → “java”

str.length() → 10



3. StringBuffer 클래스

문자열의 변경가능하게 help!



4. Math클래스


-수학 계산에  유용한 메소드

-random() 매소드는 0~1.0 사이의 실수를 리턴

-Math.random()

-예로, int val = (int)(Math.random()*10);

-(int)(Math.random()*6+1);

-math.random 으로 5.99999...까지 돌아가는데 1을 더하고 강제 형변환으로 인해 소수점이 떨어져 나가면서 0~6까지 수가 리턴된다.

→0 ~ 9까지의 수를 리턴한다.

static double random() { . . . } 이 Math 클래스에 정의됨.


static long round (double a)

Math.round(5.67) → 6




5.Wrapper클래스


-기본형 변수도 객체로 다뤄야 하는 경우에 사용한다.

-그 외에

⦁매개변수로 객체를 요구할 때

⦁ 기본형 값이 아닌 객체로 저장해야 할 때

⦁객체간 비교가 필요할 때 

-기본형 값을 객체로 변화하여 작업한다.

-이때 사용하는 것이 wrapper 클래스이다.

-8개 wrapper클래스 있음

⦁Integer j = new Integer(100);

  Integer j2 = new Integer(100);

  j == j2? false //

  j.equals(j2)? true//제정의했음


싸는 클래스 모든 정수를 포장하여 싼다 !

어떤 숫자라도 형식상 객체로 표현된 경우가 있다.

기본형 문자 숫자....를 객체화할 필요가 있는 경우 이용.


 

class  EX09Wrapper

{

        public static void main(String[] args)

        {

                Integer i = new Integer(100);

                Integer i2 = new Integer(100);

 

                if(i==i2)

                        System.out.println("i == i2 : ture ");

                else

                        System.out.println("i == i2 : false");

 

 

                if(i.equals(i2))

                        System.out.println("i.equals(i2) : ture ");

                else

                        System.out.println("i.equals(i2) : false");

 

                System.out.println("i.toString()");

        }

}

 

 

---------- java¦ノ ----------

i == i2 : false

i.equals(i2) : ture

i.toString()

 

출력 완료 (0초 경과)


댓글