Java に対するおぼえがき
久しぶりに昔途中でやめたJavaを勉強し出しているので、忘れたくないことまとめ。
(クラス名).java を作る
TestJava.java public class TestJava{ public static void main(String[] args){ int testNum = 1 ; System.out.println("test" + testNum + ", Hello!") ; // methodTest() ; } public static void methodTest(){ System.out.println("メソッドが呼び出されました") ; } }
みたいな構文がJavaの基本。
short int とは書かない。
short と宣言する。(2Byte, -32768~32767)
byte と言うものもあるらしい。(1Byte, -128~127)
小さい値と決まってる定数の宣言ならいいかも。
画像処理や文字列処理にbyte配列を使うようだ。なるほど。
javac Test.java でコンパイル後に java Test で実行
決して java Test.class ではない。ひっかかりやすいところ。
ちなみにjarファイルを作るには、
jarファイルの作り方(ytp.ne.jp)
& と && の違い
通常は(Cと同じ挙動を求めるなら)&&でいい。
&& や || はショートサーキット演算子と呼ばれ、
左の条件で結果が見えていれば、右の条件は計算しない。
じゃあ & や | はどう使うのかと言うと、
右の条件でインクリメントをしていて、それを必ず実行させたい場合などだ。
例: trueThing == true | ++plusNum == 5
これが trueThing == true || ++plusNum == 5 だったら、左の条件が正なので
全体が正であることは明らかであるため、右の条件式の計算を行わない。よってインクリメントも無視されるのだ。
printf か format で書式指定子
int num = 23 ; System.out.printf("%04d \n", num) ; System.out.format("%04d \n", num) ;
いずれも出力結果は「0023」となる。
どっちを使えばいいのだろうか……。
時間を計測する
参考:処理時間の計測
long timeStart = System.currentTimeMillis() ; // 計測開始 // 処理を記述 long timeEnd = System.currentTimeMillis() ; // 計測終了 System.out.format("%.2f 秒 \n", (double)(timeEnd - timeStart) / 1000 ) ;
参考記事のコメントにもあるように、
パソコンの処理時間など、厳密なデータが欲しいときは nanoTime を用いるそう。
long timeStart = System.nanoTime() ; // 処理を記述 long timeEnd = System.nanoTime() ; System.out.format("%.3f ミリ秒 \n", (timeEnd - timeStart) / 1000000f ) ;
ただし時間のかかるものは、簡単に long int の範囲を超えてしまうから、
nanoTime が使える場合はある程度限定されることだろう。