2006-04-01から1ヶ月間の記事一覧

レッスン with Java言語プログラミングレッスン終了。

さて、未了項目のそうざらえも済んで、これで「レッスン with Java言語プログラミングレッスン」は終了となります。 「すごいスピード!」との評をいただきましたが、本当に無茶なペースで、凄いスピードでやってきました。あっという間に一週間、でも上下巻…

もう一度String.replaceのドキュメントを読んでみる。

未了だった「String.replaceのドキュメントを読んでみる。」を再考してみます。分からなかったのは、ドキュメントには、 String replace(CharSequence target, CharSequence replacement) リテラルターゲットシーケンスに一致するこの文字列の部分文字列を、…

もう一度参照遊び。

未了だった「参照遊び。」を再考してみます。分からなかったのは、この点でした。 気になるのは、「Rectangle@17590db」という表記。「Rectangleオブジェクト」で「メモリのロケーションが17590db」とか? 結局分からないままでしたが、でも一通りレッスンを…

もう一度傘を持って。

未了だった「傘を持って。」を再考してみます。せっかくなので、「確率の範囲外」という例外を作ってみました。 import java.io.*; public class Kasa4 { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputSt…

"&"と"&&"と"and"をもう一度。

未了だった「"&"と"&&"と"and"。」を再考してみます。実はif文を覚えた直後にもちょっと書き直してみたのですが、こんなコンパイル・エラーになって、解決できずにいました。 E:\study\02>javac testAndOr.java testAndOr.java:5: ここで 'void' 型を使用す…

7日目。未了だった項目をそうざらえ。これで一巻の終わりでございます。

下巻終了。

下巻の付録まで、ゆっくりゆっくり読み終わりました。「上巻終了、下巻へ。」で「昨夜で上巻の資料まで読み終え、今日から下巻、章でいえば11章以降に入ります」と書いたのが3日目の朝、今が6日目の夜ですから、上巻は2日で終え、下巻は4日かけたということ…

MyStringArrayListの結果確認。

練習問題19-3で、作成したMyStringArrayListの結果確認のため、MyStringArrayListにtoString()メソッドを追加し、UseMyStringArrayListクラスを作成しました。 まず、MyStringArrayListクラスのtoString()メソッド。 public String toString() { int size = …

Set、Map、Map.EntryのtoString();

「ArrayListのtoString();」を試したついでに、Set、Map、Map.EntryのtoString();も確認しておきます。 import java.util.*; public class HashTest { public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("Alice"); set.add("Bob")</string></string>…

ArrayListのtoString();

リスト19-10でLinkedListインスタンスをSysytem.out.printlnの引数にして、次のような出力を得ています。 [Bob, Chris, Diana, Elmo]もしかして、「Aliceは何人いる?」や「バイバイ、Alice」でforループを使って出力していた部分も、ListArrayですが同じよ…

バイバイ、Alice。

「Aliceは何人いる?」ですが、よく考えたら保留するほどのことでもないですね。きっと、removeの引数がStringの"Alice"であれば"Alice"が消えて、intの5であれば5番目が消えるのでしょう。やってみます。 // list.remove("Alice"); list.remove(5);E:\study…

Aliceは何人いる?

ArrayListからの削除と確認の項に、次のようなコードがあります。 // AliceとBobとElmoを削除 list.remove("Alice");Aliceが二人いたら、一人だけ消えるのでしょうか?それとも二人とも消えるのでしょうか?一人だけの時は、どちらが消えるのでしょうか? と…

genericsをJava1.4でコンパイルした際のエラー。

本日の作業環境はJava1.4.2_11なので、genericsを試そうとしたらコンパイル・エラー。こんなエラーになります。 E:\STUDY\19>javac GcArray3.java GcArray3.java:4: <identifier> がありません。 static ArrayList<int[]> list = new ArrayList<int[]>(); ^業務用PCで、業務で使うパッ</int[]></int[]></identifier>…

文字コードの変換をしながら読み込み

ファイルから"EUC-JP"の文字データを読み込むと、文字が化けているように思われたので、対応方法を調査。まず、以下を手がかりにしました。 文字ストリームを扱うReaderやWriterを使えば、入出力を行うと同時に、文字コードの変換も行うことができるのです。…

ソースの文字コードは何か。

JDKのコンパイラであるjavacは、コンパイル作業を行う前に、内部的に「OS依存文字コード→Unicode」の変換を行います。 Windows上で、上記のMakeHtml2をEUCコードに変換してから実行してみます。 E:\STUDY\18>javac MakeHtml2.java E:\STUDY\18>java MakeHtml…

MakeHtml2。

ファイルの読み込み、ファイルの書き出しまで勉強したところで、第7章の練習問題で作成したMakeHtmlを次のような呼び出し方で使えるように改造してみます。 使用法:java MakeHtml2 入力(テキスト)ファイル 出力(HTML)ファイル 例:java MakeHtml2 profi…

「closeメソッドで終了」。

closeメソッドを呼んで「ファイルをクローズする」必要があります。(略)これで、読み込みのために確保されていた資源(メモリやファイルハンドル、ファイルディスクリプタなど)が開放されます。 closeを明示的に呼ばなかった場合、どうなるんでしょう? ここ…

String.replaceのドキュメントを読んでみる。

ShowFile1で「ファイル中のタブを半角空白×2に変換してから表示したい」と思い、whileループ内に一行追加してみました。 while ((line = reader.readLine()) != null) { line.replace("\t", " "); System.out.println(line); }E:\study\18>javac ShowFile1.j…

パッケージ内のクラスファイル実行とCLASSPATH。

前のエントリでコンパイルができたので、いよいよ実行。 E:\study\17>java yourtool\YourTool Exception in thread "main" java.lang.NoClassDefFoundError: yourtool\YourTool (wrong name: yourtool/YourTool)javaコマンドに引数で与えるクラス名と、ソー…

他のパッケージ内のクラスの利用。

素でコードを書き間違えたものを含めて、エラーメッセージをメモ。 E:\study\17>javac mytool\PublicTool.java yourtool\YourTool.java yourtool\YourTool.java:5: シンボルを解決できません。 シンボル: クラス PublicTool 場所 : yourtool.YourTool の ク…

1つのソースファイルに複数のpublicなクラス。

1つのソースファイルに複数のpublicなクラスは宣言できません。 実験してみます。 public class PublicClasses { public static void main(String[] args) { System.out.println("PublicClasses executed."); } } public class PublicClasses2 { public stat…

Threadクラスの拡張クラスとして作成(2)。

練習問題16-6を1クラスで作ってしまったので、16-7も解答とはちょっと違う感じに。 public class PrintLines2 implements Runnable { String line = ""; int interval = 0; public PrintLines2(String s, int i) { this.line = s; this.interval = i * 1000;…

6日目。カウンタが跳ね上がっていることにびっくりしつつ(結城さん、ご紹介ありがとうございます!)やることは同じなので、淡々と進めます。

Threadクラスの拡張クラスとして作成。

練習問題16-6で、考えすぎ。 それぞれ一つずつ動かすクラスをThreadクラスの拡張クラスとして作ってください。 メインクラスはThreadクラスの拡張クラス。 メインクラス自身はマルチスレッドで動く必要はない(=Threadを継承する必要がない)。 各ラインを…

CountTenAの実行

サンプルどおりに実行すると、何度実行しなおしてもmainメソッド内でのカウントアップが終わってから、作成したスレッド側でのカウントアップが始まります。 main:i = 8 main:i = 9 run:i = 0 run:i = 1カウントの最大値(≒forループの終了条件)を100にして…

メモリ管理とガーベッジコレクション。

Perlでは気にしたこともないメモリ管理とガーベッジコレクションの話でしたので、簡単にキーワードだけメモしておきます。 Runtimeクラスには動作状況を管理するためのメソッドがあります。 Runtime.getRuntimeメソッドで、現在のRuntimeインスタンスを取得…

ガーベッジになってくれないクラス。

GcArray.javaを実行すると、最後にはメモリ不足のエラーになるのですが、途中では次のように何回かガーベッジコレクションが働いている形跡が。 残りメモリ = 130624 残りメモリ = 125408 残りメモリ = 1802192 残りメモリ = 1802192これで何回か途中で実行…

5日目。今日で終わりたいのだけど、15章から開始で19章までというのは結構つらいペースかな?

Lockableインターフェース。

大事なものを入れる。 鍵をかける。 鍵をはずす。 入れたものを出す。 Lockableな実装群を考えると、部屋などもあるので「入る」「出る」もいりますよね。むしろこの辺りは「LockableBox」か「LockableRoom」かといった問題なので、「入れる」「出す」が入っ…

10の階乗を計算する。

再起呼出が無限に行われてるからですね。ということで直感的に修正してみたものの、正しく動いているか心もとなかったので、出力を少し変えてみます。 public class FactorialTest { public static void main(String[] args) { System.out.println(factorial…