2015년 1월 8일 목요일

자바 예제 200제 85~100

85. 객체와 클래스에 관한 이야기

      static 필드는 객체를 생성하지 않고 사용한다. static 메서드는 static 필드를, 멤버 필드는 멤버 메서드를 이용한다는 점을 기억하자.


86. 멤버 메서드 사용법

   


87. 객체 생성과 소멸 주기 정리하기

  레퍼런스가 없는 객체는 가비지 컬렉션의 대상이 된다.





88. 객체 생성과 생성자

Field의 초기화
1. Field의 자동 초기화
2. Field의 명시적 초기화
3. 생성자에 의한 Field의 초기화

89. 메서드 오버로딩

    SKIP

90. 메서드 효과적으로 사용하기

static 메서드는 자기 클래스의 멤버 필드를 사용할 수 없다.

같은 클래스 내부에서 static 메서드를 사용하기
ex)
public static int sum(int a,int b){...}
public int sums (int a,int b){...
sum(3, 5);
}

다른 클래스에서 static 메서드 사용하기
public double multi() {
BasicMath basic = new BasicMath();
return basic.multi(a,b);
}
public double sum() {
return BasicMath.math(a,b);
}

91. 정렬을 이용한 API 이해하기

    SKIP


92. Object 클래스

     클래스에 대한 모든 정보를 구체적으로 보여주는 클래스: java.lang.reflect.*;
     생성자에 대한 모든 정보: java.lang.reflect.Constructor;


93. String 이해하기

      String에 관련된 메소드


94. 문자열 뒤집어 출력하기 1

    StringBuffer는 사용법과 쓰임새가 String와 거의 같다. 
    그러나 String은 이뮤터블하고, StringBuffer는 뮤터블하다.


95. 여러 개의 문자열 붙여서 출력하기

    String은 문자열의 내용이 조금이라도 바뀌거나 스트링 컨케트네이션되면 새로운 객체를 만든다. 레퍼런스를 잃어버린 객체는 GC의 대상이 되며, 새로운 객체에게 새 주소를 주므로 해쉬코드도 변한다. 그러나 StringBuffer는 원래 있던 객체의 내용만 바뀌는 뮤터블한 특성이 있어 StringBuffer를 쓰도록 권장한다.


96. enum 이해하기

 enum에서 선언한 변수는 상수가 되는데 각각의 상수는 값을 부여받는다.(0부터 순서대로)
                                                                                (=ordinal)


97. 문자열 뒤집어 출력하기2

     StringBuilder는 뮤터블하며 동기화되지 않았으므로 사용할 때 속도가 가장 빠르다.
StringBuilder(뮤터블, 동기) > StringBuffer(뮤터블, 동기) > String(이뮤터블, 동기) 순이다.
StringBuffer를 사용하는 것이 무난하며 가급적 스트링 컨케트네이션을 피하고 StringBuffer의 append 메서드를 사용하자.


98. 상속 이해하기

 - 모든 클래스는 직-간접적으로 java.lang.Object를 상속한다.
 - 부모 클래스에서 자식 클래스를 만들면 둘의 메서드를 사용할 수 있어 더욱 편리하고     사용범위도 넓다. 단, 부모 클래스는 부모 클래스의 메서드만 사용할 수 있고 자식 클래스는  양쪽 메서드를 사용할 수 있다는 점에 주의하자.


99. 오버라이딩
  
상속 관계의 두 클래스에서 메서드 이름, 아규먼트의 타입과 개수가 동일하게 선언된 메서드가 오버라이딩이다.


100. 같은 문자열 비교하기(==, equals)

  String의 객체를 생성하는 두 가지 방법으로는 키워드 new를 쓰는 String 객체와 쓰지 않는 String 리터럴(literal)이 있다.

<String literal>
String pool에 존재하는 것은 새로 만들지 않고 이미 존재하는 것을 사용

<String 객체>

참조 타입의 비교는 equals로 하고, 기본 타입의 비교는 ==로 한다.
equals는 해쉬코드를 비교하고, ==는 레퍼런스 값을 비교한다.



















댓글 없음:

댓글 쓰기