Java
上巻はプログラム初心者向けという感じだったけど、そういう読者が下巻の内容についてこれるのかなと無用な心配をしてしまう。でも、基本的には単なる使い方の説明ではなく適度に原理から説明されるので分かりやすい。付録にCとJAVAの相違点が書かれているの…
なぜCalendarクラスの月だけは0から始まるんだろう?
mainメソッドはかならずstaticなので、mainを実行しただけではそのクラスのオブジェクトは生成されていない。なので、そのクラスの他のメソッドを呼び出すためには、呼び出すメソッドもstaticにするか、オブジェクトを生成しないといけない。
IntegerクラスやDoubleクラスなどの数値クラスから作られたオブジェクトは不変オブジェクトであり、値を後から変更できない。うーん、じゃあ普通の計算で使う変数としては使えないのか。intやdoubleの基本型で定義された変数はオブジェクトではないので、数…
変数とは何かというような基礎から説明されていて、Javaの入門書と言うよりプログラム自体の入門書といった感じ。またこの上巻で説明されているのはif文とかfor文とかだったので、収穫は基本文法がCとおんなじだという事が分かったぐらいだ。ほとんど流し読…
基本型のintを返す(予定だった)メソッドで、失敗を返したい場合はどうすればいいんだろう。基本型なのでnullは入れられないよな? 例外処理?でもなあ例外ってわけでもないような気がするんだよな。想定内の失敗。nullを返せるようにIntegerオブジェクトを返…
基本型のintとかdoubleの他に、IntegerとかDoubleとかの数値クラスが用意されている。数値クラスの方が便利な場合があるのは分かるけど、どういう時にどっちを使ったほうが良いという指針みたいなのはあるんだろうか。必要なければ基本型でよい?
代入するときに左辺の方がデータ領域が大きければ情報量が落ちないので暗黙のキャストが可能。左辺の方が小さいときは明示的にキャストしなくてはいけない。
Rubyでnilオブジェクトを返していたところはJavaだとどういう仕組みにすればいいんだろう。-1を返すとかtry/catchを使うとかになるのかな。
Javaには日付を扱うクラスとしてCalendarクラス、Dateクラスがあるようなのだけど、日付を指定してオブジェクトを作るにはCalendarクラスを使うのが正当のようだ。 Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle Ora…
Rubyの時は変数名やメソッド名は全て小文字で'_'で区切るというのが一般的だったようなんだけど、Javaでは単語の先頭を大文字にして'_'を使わないのが一般的のようだ。 この違いはどこから来るのかな。
おお。ファイルを別のパッケージに移動するとちゃんと参照なんかを修正してくれるんだ。packageはやっぱりフォルダと対応している。けど、java.lang.Stringとかどこにあるんだろう。そのまま考えたらどこかにjava,langというフォルダがあって、String.javaが…
これはC++的な言い方をすれば「インターフェース定義専用の仮想クラス」ということでいいのかな。
クラスの中にmainがあるのでまだ混同してしまう時があるのだけど、mainはコンストラクタではない。さらに言えばmainはそのクラスのメソッドですらないと考えたほうがいいのかも? object = new ClassA(); object.main(); というコードを書くことはあるのか?…
StringBufferクラスのインスタンスを作り、別のメソッドの中でapendで文字列をくっつければ、呼び出し元でも修正された文字列を見ることになる。 StringBuffer sb = new StringBuffer("0123"); add(sb); System.out.println("sb:"+sb);//01234567が表示され…
「Eclipse」でJavaプログラミング超入門:Eclipseではじめるプログラミング(1) - @IT ここの説明にヘッダファイルが出てこないのは入門だからか? あるいはJavaにはヘッダファイルというものがない?
なるほど。型には基本型と参照型があって、配列やクラスは参照型なのでnewして実体を作らないないと使えない。C++の参照型と同じか? 確かC++の参照型の場合は、初期化しない変数だけの宣言はできなかったような気がする。 とにかく、見えないだけでやっぱり…
main関数はクラスの中にある。「クラスを実行」するとそのクラスのmain関数が呼ばれる。main関数を持たないクラスは別のクラスから呼ばれる受動的なクラス。という感じか。
宣言とか生成したときに何が作られているのかがまだ良く見えない。 int i こう書いたときはそのまま普通にiを変数として使える。 でもクラスの場合はちょっと違うようだ。Pointクラスを自作したとして、 Point o; //点oオブジェクト と書いただけではoは使え…
JavaのpackageはC++のnamespace見たいなのものなのかと思ったけどちょっと違うようだ。実際のファイルのありかを示すディレクトリ情報でもある。packageとディレクトリは完全に一対一対応なのかな?
少し前にインストールしたeclipseを起動してみる。バージョンは3.2.0。最新版は3.2.2らしいのでちょっと古いけどとりあえずそのまま試す。 まずeclipseのチュートリアルにしたがってHelloWorldを書く。次のチュートリアルはSWTを使った開発になっているけど…
作ってるソフトの方針変更でRubyをやめてJavaで作ることになった。Javaはまったくやったことないけど、C++の知識の延長でどうにかなるだろうか。