Javaの場合 下のようなコードを実行すると、どうなると思いますか? List 1-1 String name; // 文字列クラスの変数を宣言する。 name.toString(); // nameはNullなので、ぬるぽ発生! name変数のコンストラクタが呼び出されていないため、NullPointerExceptionという例外が発生してしまいます。 これは、Javaに慣れた方ならご存知の事かと思います。 では、これを回避するには、どうしたら良いでしょうか? 下のように、new演算子で初期化しておけば、問題なく実行できますね。 (説明のため、便宜上new演算子を使用していますが、普通は""で初期化します。""を使用する方がメモリ効率の関係上有利です。) List 1-2 String name = new String("Hello World!"); // 文字列を代入する nam
public class Foo { public static void main(String[] args) { ((Foo) null).sayHello(); } public static void sayHello() { System.out.println("hello"); } } staticだとレシーバがnullでもOKみたいです(正直なところstaticメソッドにレシーバが付けられるのはJavaの不思議仕様) おまけ staticメソッドには仮想関数のような、実行時の型を解決する機能は無いみたいです。 public class Foo { public static void main(String[] args) { ((Hello) new A()).sayHello(); // -> hello } } class Hello { public static
Javaタイマークラス Javaのjava.util.Timerは、処理を一定時間間隔で動かしたり、一定時間後に動かしたりする為のクラス。 Timerから、自分で指定したTimerTask(の具象クラス)が呼ばれる。 このタイマーの実行にはThreadが使用されている(マルチスレッドで動作する)。 一定時間後に一度だけ実行する例 public void timer_delay() throws InterruptedException { TimerTask task = new SampleTask(); Timer timer = new Timer("遅延タイマー"); System.out.println("main start:" + new Date()); timer.schedule(task, TimeUnit.SECONDS.toMillis(10)); //10秒後に
Java Memo簡単なファイル転送プログラムを作ってみた。サーバ側のソースは以下。ソケットから受けとったバイト配列を、引数で指定したファイルのストリームに書き込んでいるだけ。特に理由はないが、32バイトずつその作業を行っている。 import java.net.*; import java.io.*; public class FileTranServer { public static void main(String[] args) throws IOException{ if (args.length != 2) throw new IllegalArgumentException("An argument should be port and filename"); int servPort = Integer.parseInt(args[0]); String filenam
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く