Java

Java7にキャッチアップ

TopCoderやAtCoderでもJava7が使えるようになったことだし、止まっている知識をアップデートする。 Java7の新機能について、気になるものをこのあたりから拾ってきて試した。 http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html Bina…

Max OS X Lionに上げたらEclipseでJavaがビルドできなくなった

MacをLionにアップデートしたら、EclipseでJavaがコンパイルできなくなっていました。Eclipseのバージョンは3.6(Helios)です。 Problemsタブには、次のようなエラーが出ていました。 The container 'JRE System Library [JavaSE-1.6]' references non exis…

Collection#contains() の引数はObject型

次のようなコード HashSet<Long> set = new HashSet<Long>(); set.add(1L); set.contains(1); // => ? これはfalseになる。リテラルの1はboxingがかかってもInteger型にしかならず、Long型の1とは一致しない。しかもコンパイルエラーにもならない。あやうく嵌りそうにな</long></long>…

Eclipseのコードフォーマット設定

EclipseのJavaエディタでコードフォーマットすると、しばしば気持ち悪い折り返し方をされてしまって、むきーとなっていたのですが、フォーマッティングの設定を変えることでマシになりました。 Eclipse3.3での環境です。 設定ダイアログの [Java - Code Styl…

java.net Polls

java.netのサイト内に、Java関連のいろいろなことについて投票するコーナーがあります。 http://today.java.net/today/polls/index.csp海外のJava開発者界の雰囲気がかいま見えてちょっと面白い。 ただ、つらつら集計結果の傾向を見ていると、だいぶ偏ってる…

Javaでnext_permutation

というわけで、Javaでnext_permutation関数を作ってみました。 // 配列版 public static boolean nextPermutation(int[] a) { for (int i = a.length - 1; i > 0; --i) { if (a[i - 1] < a[i]) { int swapIndex = find(a[i - 1], a, i, a.length - 1); int t…

intからdoubleへ

昨日のTopCoder SRMでのちょっとしたこと。 確率を表すパーセント値を整数として受け取る関数での処理。確率計算をするために整数のパーセント値を100で割るわけですが、自分が書いたコードがこう。 double calc(int input){ double p = (double)input / 100…

文字列から数値へ

量は多いけれども小ネタです。 Javaの数値クラスが文字列をパースする規則 Javaの数値を表すクラスとして、代表的なものにInteger・Double・BigInteger・BigDecimalがあります。 これらのクラスはそれぞれ、文字列で表現された数値をパースするコンストラク…

Twitterクライアント作成

仕事でも趣味でも僕がメインで使っている言語はJavaですが、ネットワークとかGUIとかのプログラムはまともに書いたことがなくて、知識が狭いなあと思っています。コアパッケージで言うと、java.langとjava.utilとjava.textくらいしかまともに触っていません…

リンク先の永続性

JavaAPI最新版へのURLができた The Java Tutorials' Weblogより。 Java APIドキュメントのトップページのURLは、JDK5とJDK6で次のようになっています*1。 JDK5 http://java.sun.com/j2se/1.5.0/docs/api/ JDK6 http://java.sun.com/javase/6/docs/api/index.…

BigDecimalを簡単に

Java7で、BigDecimalの計算が演算子で書けるようになるかも、という情報を最近知りました。Stringに続いて2つ目(ですよね?)の特別扱いクラスか。これが入ってくれたらプログラミングコンテスト用にはかなり便利。もちろん業務でも、けっこう使うことはあ…

Enumが好きだ

変なオブジェクトが絶対こないという安心感がたまらぬ。 nullになる可能性があったりするのはやだよ。

配列のhashCodeはObjectクラスからの継承

配列のhashCode()メソッドはObjectクラスから継承しているので、異なる配列オブジェクトでは、配列の中身が同一のオブジェクトであったとしてもhashCode()の結果は異なるものになる。 Java仮想マシン仕様の2.15 Arraysに次のように記載されています。 All me…

Swingの学習用サンプル

前回「JDK付属のサンプルコードが微妙」という話をしたのですが、そういえばJavaチュートリアルがあったなあと思い出し、そちらのサンプルを見てみました。 ら、こっちはちゃんと保守されているみたい。Swingの処理の詳細は分かりませんが、とりあえずコーデ…

サンプルコードの質

Swingを覚えようと、JDK付属のサンプルコード({JDKインストールフォルダ}\demo\jfc にあり)をEclipseに入れてちょっと見てみました。 すると、なんか大量に警告が出てる…。 使われていないimport 使われていないフィールド static変数をクラス名でなくイン…

java.util.BitSetめっちゃ便利

Project Eulerをやってて実感すること。 こんな感じのコンパクトなユーティリティ好き。

Genericsの評判

溜まったフィードをざくざく読んでて、ふむ、と思った記事。 JavaのGenericsの追加が成功していないということは皆の共通の認識らしい。 Java SE 7とクロージャとJavaっぽさ - Kazzzの日記 こういう話、初めて知りました。 僕はプログラミング自体Java5から…

過去の自分に再会

ちょっと思い立って、9ヶ月前に書いたプログラムを見返してみた。あまり仕事がなかった頃に、練習のためということで独力でちょっとまとまった量のモジュールを書いて、それきり全然見る機会がなかったやつ。うへえ、と、思った。 具体的にうへえな点は次の…

日本語版Java APIドキュメント

java.lang.annotation.TargetのAPIドキュメントを見てたら、変な日本語発見。1 つの ElementType 定数がターゲット注釈で複数回表示されることに対するコンパイル時エラーです。たとえば、次のメタ注釈は不正です。(これだけで1パラグラフ) 英語版を見てみ…

NaNの振る舞い

java.lang.Mathのソースを覗いてたら if (a != a) return a;が出てきて、なんだこれはと思ってしまった。 そうだったこの話前に一度出てきたことあったんだった。忘れてたのでメモ。 しくみは以下の通り 浮動小数型ののNaNに対して関係演算子・等価演算子を…