일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 자바스크립트
- 무료홈페이지
- 무료 홈페이지 제작
- 무료서버
- 마우스 오른쪽 버튼
- 복사방지
- 무료사이트
- 홈페이지제작
- 글자뒤집기
- 웹퍼블리싱
- 웹호스팅
- 무료
- 무료호스팅
- 클릭해제
- 퍼빌리셔
- 우체국 우편번호
- php
- 우편번호 API
- postcodify
- 새우편번호
- 자바키워드
- 무료 웹 호스팅
- 문자열 뒤집기
- php호스팅
- 웹퍼블리셔
- 호스팅
- 무료 홈페이지
- 무료제작
- 마우스오른쪽
- 무료 호스팅
Archives
- Today
- Total
Developer Factory
20. JAVA finalize() 본문
•Garbage Collector
-> 참조되지 않는 인스턴스
(Garbage) => Dangling Object
-> 관리 영역 : Heap
-> 수행 시점
1) 메모리 부족
2) cpu idle time (한가할때)
StudentTest.java
package step01.exam03.test02;
public class StudentTest {
public static void main( String[] args) {
Student6 s1 = new Student6( "홍길동", 90, 100 , 90 );
s1 = null;
System. out.println( "--- 안녕 ---");
}
public static void main05 ( String[] args) {
// getClass() 호출
Student s1 = new Student( "홍길동", 90, 100 , 90 );
Student5 s2 = new Student5( "홍길동", 90, 100 , 90 );
Class c1 = s1 .getClass (); // s1 인스턴스를 생성할 때 사용한 클래스 정보를 리턴
Class c2 = s2 .getClass (); // s2 인스턴스를 생성할 때 사용한 클래스 정보를 리턴
System. out.println( c1.getName());
System. out.println( c2.getName());
// 클래스 정보를 바로 꺼내기
// - 클래스 정보를 가리키는 틀별한 static 변수 'class'
Class c3 = Student .class;
Class c4 = Student5 .class;
System. out.println( c3.getName());
System. out.println( c4.getName());
if( c1 == c3){
System. out.println( "c1 == c3");
}
if( c2 == c4){
System. out.println( "c2 == c4");
}
}
public static void main04 ( String[] args) {
// hashCode() 재정의하기 전
Student s1 = new Student( "홍길동",90,100,90);
Student s2 = new Student( "홍길동",90,100,90);
System. out.println( Integer. toHexString(s1.hashCode ()));
System. out.println( s1);
System. out.println( Integer. toHexString(s2.hashCode ()));
System. out.println( s2);
// hascCode() 와 toString() 재정의
Student4 s3 = new Student4( "홍길동",90,100,90);
Student4 s4 = new Student4( "홍길동",90,100,90);
System. out.println( Integer. toHexString(s3.hashCode()));
System. out.println( s3);
System. out.println( Integer. toHexString(s4.hashCode()));
System. out.println( s4);
}
public static void main03 ( String[] args) {
// toString사용하기
Student2 s1 = new Student2( "홍길동",90,100,90);
// println() 함수는 파라미터로 넘어온 인스턴스에 대해 toString() 메서드를 호출한다.
// 그리고, toString()이 리턴한 문자열을 출력한다.
// toString()은 Object 클래스의 매서드이다.
// 출력형식 : fully qualified class name( Qname) @ hash code
// - hasc code : 인스턴스 식별 번호이다.
System. out.println( s1);
Student3 s2 = new Student3( "홍길동",90,100,90);
System. out.println( s2);
}
public static void main02( String[] args) {
// Student에서 재정의한 equals() 사용하기
Student2 s1 = new Student2( "홍길동",90,100,90);
Student2 s2 = new Student2( "홍길동",90,100,90);
if ( s1 == s2) System. out.println( "s1 == s2");
if ( s1.equals( s2)) System. out.println( "s1.equals(s2)");
}
public static void main01 ( String[] args) {
// Object로 부터 상속받은 equals()는 == 연산자와 동일하게 동작한다. 인스턴스가 같은지 비교한다.
Student s1 = new Student( "홍길동",90,100,90);
Student s2 = new Student( "홍길동",90,100,90);
if ( s1 == s2) System. out.println( "s1 == s2");
if ( s1. equals( s2)) System. out.println( "s1.equals(s2)");
}
}
Student6.java
package step01.exam03.test02;
// * finalize() 재정의
// - 가비지 컬랙터가 소멸시키기 전에 호출한다.
// - 소멸되기 전에 마무리 할 작업을 기술할 수 있다.
// - C++ 언어에서는 destructor(소멸자)
// - 자바에서는 잘 사용하지 않는다. <= 언제 소멸될지 모른다. <= 종료하는 순간까지 소멸되지 않을 수 있다.
// * Garbage Collector
// 1) 메모리 부족할 때
// 2) CPU 한가할 때
// - 프로그램 종료시까지 실행되지 않을 수 도 있다.
public class Student6 /*extends Object*/ {
// 모든 클래스는 클래스 정보를 다루는 히든 변수를 갖고 있다.
/* public static Class class = Student6의 클래스 정보를 담은 인스턴스; */
String name;
int kor;
int math;
int eng;
public Student6 (String name , int kor, int math, int eng) {
this.name = name ;
this.kor = kor ;
this.math = math ;
this.eng = eng ;
}
@Override
protected void finalize() throws Throwable {
System. out.println( "finalize()......");
}
@Override
public int hashCode() {
final int prime = 31 ;
int result = 1;
result = prime * result + eng;
result = prime * result + kor;
result = prime * result + math;
result = prime * result + (( name == null) ? 0 : name.hashCode());
return result ;
}
@Override
public boolean equals (Object obj ) {
if ( this == obj ) {
return true ;
}
if ( obj == null) {
return false ;
}
if (!( obj instanceof Student6 )) {
return false ;
}
Student6 other = ( Student6) obj;
if ( eng != other. eng) {
return false ;
}
if ( kor != other. kor) {
return false ;
}
if ( math != other. math) {
return false ;
}
if ( name == null) {
if ( other. name != null) {
return false ;
}
} else if (!name .equals(other .name )) {
return false ;
}
return true ;
}
@Override
public String toString() {
return "[" + this.name + ":" + this .kor + "," + this.eng + "," + this .math + "]" ;
}
}
'Developer > Java' 카테고리의 다른 글
22. JAVA parseInt,Collection(List, Set,Map . .) (0) | 2014.07.03 |
---|---|
21. JAVA import, Scanner (0) | 2014.07.03 |
19. JAVA getClass() (0) | 2014.07.03 |
18. JAVA hashcord() (0) | 2014.07.03 |
17. JAVA equals(),toString() (0) | 2014.07.03 |