【初心者】Java質問・相談スレ13【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0709デフォルトの名無しさん
NGNG参照と実体の区別を意識した方がいい。staticか否かは関係ないよ。
C流に言うならnewはmallocと同じ。
BookData bk という変数はDBAccess.getBook()メソッドの中でのみ有効で、
そのメソッドが終了すると無くなるけど、
bkが参照しているBookDataオブジェクトはgetBook()終了後も生き続けます。
mallocでメモリリーク起きるようなもの。ただし、Javaではどこからも参照されなく
なったオブジェクトは自動的にそのうち廃棄される。
getBook()メソッドでは毎回別のBookDataオブジェクトを作っているので、
以下のコードを実行すると"違う"と表示される。
BookData bk1 = DBAccess.getBook("a");
BookData bk2 = DBAccess.getBook("b");
if( bk1==bk2){
System.out.println("同じ");
} else {
System.out.println("違う");
}
■ このスレッドは過去ログ倉庫に格納されています