Posts Tagged ‘Java’
JDK7 build 107
月曜日, 8 月 30th, 2010型推論が使える?
水曜日, 3 月 31st, 2010deepEquals
土曜日, 2 月 6th, 2010今日、ネットサーフィン(死語)してて、面白そうな記事を見つけたのでさっそく試してみました。
ネタもとは英語だったので詳しく理解することはできなかった。
コードの切れ端と読めない英語をながめてみました。
私はこれを見てすぐに自信を持って答えることはできませんでした(><)
まぁ・・・永遠の初心者ですからしかたないです。
けど気になるので下記のようなシンプルなコードを書いて実行してみました。
24行目からの if 文の処理結果はよく知られた結果となることは間違いないでしょう。
29行目からの if 文の処理結果が気になります。
実行結果だけ確認するのもあれなので、NetBeans を使ってるのだからウォッチポイントを設定してデバッグ実行してみました。
変数 a,b,c,d をウォッチポイントとして違いを確認してみました。
変数 c,d は一段階深い所に Object 型の配列の中に Object 型配列の変数が格納され一段階深くなってます。
素人考えでは一段階深くなったところで同じじゃないの?って思ってしまいます。
そこで29行目にブレークポイントを仕掛けてステップ実行させてみました。
下のコードの2392行目で引っかかるようですね。
念のために実行結果はこうなります。
たぶん Java プログラマなら知ってて当然ってことでしょうがこんなこと考えたことがなかったので新鮮でした。
NetBeans の優秀なデバッガをこんなことに使う私って・・・幸せ者だ(^^;
JDK 7 の Switch 文を試してみる
火曜日, 2 月 2nd, 2010Play!
月曜日, 1 月 25th, 2010CodeZine の記事で Java で動く軽量フレームワーク Play! が紹介されていた。
なにげに見てたら NetBeans プロジェクトとして取り込むことができるとあった。
Play! がどういったものかは CodeZine の記事をご覧いただくとして、記事をもとに NetBeans で動かしてみた。
まず、コマンドプロンプトで Web アプリケーションを作成します。
次に NetBeans プロジェクトとして取り込めるようにします。
これで NetBeans プロジェクトとして取り込めるはず。 たぶん・・・
では、取り込んでみます。
プロジェクト構成は下図のようになってます。
test パッケージがエラーとなってます。
未使用のインポートがあるようです。
何故かは調べてないので解りませんが無視するか、指示にしたがって未使用のインポートを削除でとりあえずエラーはなくなります。
プロジェクトが実行できるか確認します。
無事にプログラムが実行されました。
ブラウザで確認します。
ついでだから記事のとおりプログラムを変更してみました。
いつもの NetBeans での使い勝手の良さがこれでも一緒ですね。
で、ちょっとだけ触ってみただけなのですが・・・
NetBeans プロジェクトとして取り込んで何が便利なのかな?って考えてみた。
賢いエディタ機能が使える!
これくらいしか思い浮かばない(><)
無限大
金曜日, 8 月 21st, 2009Java でも無限大を定義することができます。
ちょっとそれを試してみました。
なぜかって?
今まで無限大を使ったことがないからです。(^^;
package infinity2;
public class Main {
private static final double i = Double.POSITIVE_INFINITY;
private static final double j = Double.NEGATIVE_INFINITY;
private static final double k = 1.0e40;
public static void main(String[] args) {
if (i == i + 1) {
System.out.println(“無限大 ” + i);
}
if (j == j – 1) {
System.out.println(“無限小 ” + j);
}
if (k == k + 1) {
System.out.println(“1.0e40 に1を足しても ” + k);
}
System.out.println(“ulp = ” + Math.ulp(k));
System.out.println(“最も近い浮動小数点数 ” + Math.nextUp(k));
}
}
このプログラムの実行結果は下記のとおりです。
無限大 Infinity
無限小 -Infinity
1.0e40 に1を足しても 1.0E40
ulp = 1.2089258196146292E24
最も近い浮動小数点数 1.0000000000000002E40
無限大や無限小って英語で Infinity , -Infinity って表示されるんですね。
初めて知りました。
おまけがついてますけど浮動小数点数演算って癖があるので微妙・・・(^^;;;
素敵な無限ループ
木曜日, 8 月 20th, 2009無限ループ文の作り方にはいろいろなものがありますが最近知った素敵な無限ループ文を個人的に覚え書きしておきます。
package infinity;
public class Main {
public static void main(String[] args) {
int count = 0;
// 素敵な無限ループ
for(int i = 0; i <= Integer.MAX_VALUE; i++)
if (i == Integer.MAX_VALUE)
// 無限ループになるトリックの答え
System.out.println(“Integer.MAX_VALUE + 1 = ” + (i + 1));
count++;
System.out.println(count);
}
}
無限ループがあるので標準出力に変数 count の値は表示されません。
無限ループの中で int の最大値の時に 1 を足した時の値を表示させてます。
Integer.MAX_VALUE + 1 = -2147483648
これで解るように int の最小値になってます。
普通このような無限ループを使う人はいないと思うので素敵ですね!
JDK 6 Update 15 がリリースされてます
木曜日, 8 月 6th, 2009JDK 6 Update 15 がリリースされてます。
Windows 7 、Internet Explorer 8、Windows Vista SP2 などのサポートをしているようです。
G1 ガベージコレクタも含まれているようです。
この G1 ガベージコレクタ と言うものはいったい何なのでしょう?
調べてみたところ Garbage-Firstガーベージコレクタ 略のようです。
名前からして早そうですね。
今までのガベージコレクタは 世代別GC と呼ばれるものでヒープ領域を物理的に二つのYoung領域とOld領域(Tenured領域)に分けて管理しています。
それに対してG1 ガベージコレクタ はヒープ領域は一つです!
その一つだけ用意された領域の中でいくつかをYoung領域とし、残りをOld領域として利用してます。
詳しくは Java SE 6 Update 14のEarly Access公開、G1ガーベージコレクタが利用可能に をご覧ください。
これによって、全ヒープ領域に対して常にフルGCを実施するのではなく、GCの効果が高い領域を優先的に開放するので、アプリケーションの停止時間を大幅に減少できる。
パフォーマンスアップが期待されますね。
とりあえず今からダウンロードしてインストールすることにします。