>>705
参照と実体の区別を意識した方がいい。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("違う");
}