A
原因:クラスは、カスタムの構築方法を提供する場合、システムはもはやデフォルトコンストラクタを提供しないことになります
二つ
Javaフィールドに初期化法:初期化ブロック、両方は、フィールドの初期値を設定するJavaクラスのコンストラクタを持っている場合は、その後、最終的な出力の値は、それを判断しなければならないとき、新しいことで新しいオブジェクトの建設。その値は、初期化ブロックの初期値と、元クラスのコンストラクタ内のフィールドに関係なく、彼に割り当てられています。コンストラクタ関数で対応する変数には代入がない場合。そして、可変サイズの値は、初期化ブロックの初期値に依存し、誰がすべき問題のフィールドを設定します。変数に割り当てられた最後の値に背後に誰がいます。実際にコードを書いていない、あなたは、フィールドが一度だけ初期化されていることを確認してみてください。
三つ
静态初始化块的执行顺序: (1)静态初始化块只执行一次。
(2)创建子类型的对象时,也会导致父类型的静态初始化块的执行。
四
1 package cn.demo8; 2 3 4 public class Testtttt{ 5 int a = 2;//实例变量 6 static int b = 3;//类的静态变量 7 public static void variable()//静态方法 8 { 9 System.out.println("实例变量a = " + new Testtttt().a); 10 //在静态方法中访问类的实例变量需首先进行类的实例化 11 12 System.out.println("静态变量b = " + b); 13 //在静态方法中可直接访问类的静态变量 14 } 15 public static void main(String[] args) 16 { 17 Testtttt.variable(); 18 Testtttt test = new Testtttt(); 19 System.out.println("结果是 :实例变量 = " + test.a);//访问实例成员 20 } 21 }
五
package cn.demo8;
public class Testtttt
{
public static void main(String[] args)
{
Integer i1=100;
Integer j1=100;
System.out.println(i1==j1);
Integer i2=129;
Integer j2=129;
System.out.println(i2==j2);
}
}
nteger=100; 实际上调用的是Integer.valueOf(int i);
因为从-127到128之间的Integer数,Java在Integer中有事先缓存好的原型对象,每次返回的都是同一个Integer对象,只有不在这个范围的数才会新创建出一个Integer,最后所指都不是同一个对象,所以比较的不是同一个对象。