我在C ++中有以下课程: class a { const int b[2]; // other stuff follows // and here's the constructor a(void); } 问题是,鉴于b不能在构造函数的函数体内进行初始化,我如何在初始化列表中初始化b const? 这不起作用: a::a(void) : b([2,3]) { // other initialization stuff } 编辑:恰当的例子是当我可以b为不同的实例使用不同的值时,但已知这些值在实例的生存期内是恒定的。
根据我的参考,原始类型具有默认值,而Objects为null。我测试了一段代码。 public class Main { public static void main(String[] args) { int a; System.out.println(a); } } 该行将System.out.println(a);指向一个变量a,指出该错误,variable a might not have been initialized而在给定的引用中,integer将具有0默认值。但是,使用下面的给定代码,它将实际打印出来0。 public class Main { static int a; public static void main(String[] args) { System.out.println(a); } } 第一个代码可能会出什么问题?类实例变量的行为与局部变量不同吗?
我有2个罐子,我们称它们为a.jar和b.jar。 b.jar取决于a.jar。 在a.jar中,我定义了一个类,我们称它为StaticClass。在StaticClass中,我定义了一个静态块,调用了一个名为“ init”的方法: public class StaticClass { static { init(); } public void static init () { // do some initialization here } } 在b.jar中,我有一个main,因此在main中,我希望已经调用了init()方法,但实际上没有。我怀疑这是因为jvm尚未加载StaticClass,谁能告诉我 我的结论正确吗? 是什么触发了jvm加载类? 如何获得自动执行的静态块? 谢谢
当我尝试编译时: public static Rand searchCount (int[] x) { int a ; int b ; ... for (int l= 0; l<x.length; l++) { if (x[l] == 0) a++ ; else if (x[l] == 1) b++ ; } ... } 我得到这些错误: Rand.java:72: variable a might not have been initialized a++ ; ^ …