暇な日々にスパイスを

学んだ技術の備忘録

私の知らないJava

Javaの勉強で学んだ知らなかったこと

  • 継承したクラスのコンストラクタは最初にsuperを呼び出すか、他のコンストラクタを呼び出す
  • doubleはcharを暗黙的にキャストできる
  • RuntimeExceptionはコンパイラにチェックされない例外
  • 生成していない配列へのアクセスはコンパイルエラー
  • static{}のイニシャライザはstaticの初期化ができる
  • for文へのlabelは初期化に入らない
label : 
for (int i=0; i<5; i++) {
  System.out.print(i);
  continue label;
}

// 01234
  • abstract修飾子はメソッドに付ければクラスにも必要
  • 数字Lはlong型
long l = 10L;
  • double型はlong型を暗黙的にキャストできる
  • whileの条件式にはboolean型である必要がある
  • String型のconcatは破壊的ではない
  • 配列の宣言で下の書き方もできる
int []array[] = { {1, 2, 3}, {4, 5, 6}};
  • オーバーライド元がthrows Exceptionしていない場合、オーバライド先でthrows Exceptionでコンパイルエラー
  • final修飾子のついたメンバ変数はコンストラクタでのみ初期化できる
  • オーバーライド元がthrows Exceptionしていても、オーバライド時にthrows Exceptionしていなくてもコンパイルは通る
  • ArrayListにはintは指定できない
  • 変数名に使用できるのは先頭英文字, _, $, 2文字目以降から数字
  • 整数型での0除算はArithmeticException
  • double型への0除算は、dobleが0の場合NaN、でなければ正負のInfinity
  • アクセス修飾子を省略した場合は、同一パッケージ内のクラスからアクセス可能
  • staticは値を変更できる
  • transient修飾子と言うのがいる
  • コンストラクタを定義した場合、デフォルトコンストラクタは生成されない
  • double型もインクリメント, 余り算ができる
  • コンストラクタを呼び出した場合、親クラスのコンストラクタは暗黙的に呼ばれる
  • charの初期値は半角スペース