勉強メモ Java
参照型
class Test{
public static void main
(String[] args
) { Human tom = new Human("Jack"); //新しい人間(本名Jack)を1人作ってそいつにtomというニックネームで呼ぶことにする
Human joe = tom; // tomとニックネームをつけた人間(Jack)をjoeというニックネームでも呼ぶことにする
tom = null; //tomというニックネームで誰かを呼ぶことをやめる、
//tomというニックネームで呼ばれる人間はいなくなる (Jackはもうtomとは呼ばれない)
tom = new Human("Cindy"); //別の新しい人間(本名Cindy)を作ってそいつをtomというニックネームで呼ぶことにする
Foo(tom); // Fooメソッドに tom と呼んでる人間(Cindy)を引数として渡す
tom.die(); // tomと呼ばれてる人間(Cindy)を死なす
joe = null; // joeというニックネームで誰かを呼ぶことをやめる、
//joeというニックネームで呼ばれる人間はいなくなる、
//また同時にJackをニックネームで呼ぶ者がいなくなったためJackは失踪する
joe.die(); // joeと呼ばれてる人間はいないので存在しない者を死なすことは出来ない
}
static void Foo(Human bob) { //引数で渡された人間を このFooのメソッド内では ひとまずbobというニックネームで呼ぶことにする
bob = null; //このメソッド内でbobというニックネームで誰かを呼ぶことをやめる、
//このメソッド内でbobと呼ばれる人間はいなくなる
}
}
通信(TCP)
java.nio.channels.ServerSocketChannel
java.nio.channels.SocketChannel
を使って非同期の通信ができる
(JDK1.7からbind()メソッドが追加されたので巷のやりかたを少し変える必要があるかも)
java.lang.Object の hashCode() について
(JavaVMのデフォルトでは)乱数によって定まる
java.lang.Object の finalize() について
オーバーライドするとgc(ガベージコレクト)のときに呼ばれるが
- 必ず呼び出されるとは限らない
- gcの対象になった最初のgc時にfinalize()が呼び出され、次のgcのときにメモリの解放がなされる
- いつ呼び出されるか分からない(いつのgcで呼び出されるか分からない)
C++のデストラクタとは性質が全く異なることに注意
データベース(RDBMS,SQL)
JDKには Apache Derby (
Java DB)と呼ばれるリレーショナルデータベースが同梱されてる
JDKのインストールフォルダにdbという名前のフォルダがあり
そのdbフォルダの中のderby.jarというファイルを自分のプロジェクトのフォルダにコピーして使うと
ローカルで簡易なデータベースが扱えるようになる
(クラスパスCLASSPATHというのを設定する必要がある)
- Apache Derby
- http://db.apache.org/derby/
- Getting Started with Derby
- https://builds.apache.org/job/Derby-docs/lastSuccessfulBuild/artifact/trunk/out/getstart/index.html
- Using Java DB in Desktop Applications
- http://www.oracle.com/technetwork/articles/javase/javadb-141163.html
- Apache Derbyの組み込み型とUDT/UDFの使い方のメモ - seraphyの日記
- http://d.hatena.ne.jp/seraphy/20120722
時間表示に便利なAPI
- Joda-Time - Java date and time API
- http://www.joda.org/joda-time/
最終更新:2013年11月07日 21:06