Tag: 初始化

在一行中初始化一个ArrayList

我想创build一个用于testing目的的选项列表。 起初,我这样做了: ArrayList<String> places = new ArrayList<String>(); places.add("Buenos Aires"); places.add("Córdoba"); places.add("La Plata"); 然后我重构代码如下: ArrayList<String> places = new ArrayList<String>( Arrays.asList("Buenos Aires", "Córdoba", "La Plata")); 有没有更好的方法来做到这一点?

什么时候静态类初始化发生?

什么时候静态字段初始化? 如果我从来没有实例化一个类,但我访问一个静态字段,是所有的静态块和私人静态方法用于实例化私人静态字段调用(按顺序)在这个瞬间? 如果我调用静态方法呢? 它是否也运行所有的静态块? 之前的方法?

JavaScript检查variables是否存在(被定义/初始化)

检查variables是否被初始化的哪种方法是更好的还是正确的? (假设variables可以容纳任何东西(string,int,object,function等)) if (elem) { // or !elem 要么 if (typeof(elem) !== 'undefined') { 要么 if (elem != null) {

在C#中,我应该使用string.Empty或String.Empty或“”intitialize一个string?

在C#中,我想用一个空string初始化一个string值。 我应该怎么做? 什么是正确的方式,为什么? string willi = string.Empty; 要么 string willi = String.Empty; 要么 string willi = ""; 或者是什么?

什么是Java中的Double Brace初始化?

什么是Java中的Double Brace初始化语法( {{ … }} ?

尝试使用const初始化variables时出错“初始化元素不是常量”

我得到以下程序的第6行(初始化my_foo到foo_init)的错误,我不知道为什么。 typedef struct foo_t { int a, b, c; } foo_t; const foo_t foo_init = { 1, 2, 3 }; foo_t my_foo = foo_init; int main() { return 0; } 请记住,这是我正在处理的一个更大的多文件项目的简化版本。 目标是在目标文件中有一个常量,多个文件可以用来初始化一个状态结构。 由于它是一个资源有限的embedded式目标,结构不是那么小,所以我不想要多个源代码副本。 我不想使用: #define foo_init { 1, 2, 3 } 我也想写可移植的代码,所以我需要一个有效的C89或C99的解决scheme。 这是否与目标文件中的ORG有关? 初始化variables进入一个ORG并通过复制第二个ORG的内容来初始化? 也许我只需要改变我的策略,并有一个初始化函数在启动时做所有的副本。 除非有其他的想法吗?

初始化私有静态成员

在C ++中初始化私有静态数据成员的最佳方法是什么? 我试过这个,但它给了我怪异的链接器错误: class foo { private: static int i; }; int foo::i = 0; 我猜这是因为我不能从课堂外初始化私人成员。 那么最好的办法是什么?

在C ++中,下面的语句意味着什么:零,初始值和初始值?

在C ++中下面的短语是什么意思: 零初始化, 默认初始化和 值初始化 C ++开发人员应该知道些什么?

Java“双Brace初始化”的效率?

在Java的隐藏特性中 ,最佳答案提到了Double Brace Initialization ,其语法非常诱人: Set<String> flavors = new HashSet<String>() {{ add("vanilla"); add("strawberry"); add("chocolate"); add("butter pecan"); }}; 这个习语创build了一个匿名的内部类,只有一个实例初始化器,它可以使用“包含范围内的任何方法”。 主要问题:这听起来效率不高吗? 它的使用应该限于一次性的初始化吗? (当然,炫耀!) 第二个问题:新的HashSet必须是在实例初始化器中使用的“this”…任何人都可以阐明机制? 第三个问题:这个习语在生产代码中是不是太模糊了? 总结:非常非常好的答案,谢谢大家。 在问题(3)中,人们认为语法应该是清楚的(尽pipe我会build议偶然的评论,特别是如果你的代码会传递给可能不熟悉的开发人员)。 在问题(1)中,生成的代码应该快速运行。 额外的.class文件确实会导致jar文件混乱,并且程序启动稍微慢一些(感谢@coobird的测量)。 @Thilo指出,垃圾收集可能会受到影响,并且额外加载的类的内存成本在某些情况下可能是一个因素。 问题(2)是我最感兴趣的。 如果我理解了答案,那么DBI中发生的事情就是匿名内部类扩展了由new运算符构造的对象的类,因此具有引用正在构造的实例的“this”值。 井井有条。 总的来说,DBI让我觉得自己是一个知识分子的好奇心。 Coobird和其他人指出,你可以使用Arrays.asList,可变参数方法,Google Collections和build议的Java 7集合文字实现相同的效果。 像Scala,JRuby和Groovy等更新的JVM语言也为列表构build提供简洁的符号,并与Java良好的互操作性。 鉴于DBI混乱了类path,减慢了类的加载速度,并使代码更加隐晦,我可能会避开它。 不过,我打算在一位刚刚获得SCJP的朋友面前谈论这个问题,并且热衷于讨论Java语义。 ;-) 感谢大家! 7/2017:Baeldung对双支撑初始化有一个很好的总结 ,并认为它是一种反模式。

(为什么)正在使用未初始化的variables未定义的行为?

如果我有: unsigned int x; x -= x; 很明显,在这个expression式之后x 应该是零,但是在我看来,他们说这个代码的行为是不确定的,不仅仅是x的值(直到减法之前)。 两个问题: 这个代码的行为确实没有定义? (例如,代码可能会在兼容的系统上崩溃[或更糟])? 如果是这样的话,那么为什么 C说这个行为是不确定的,当时这个x应该是零呢? ie这里没有定义行为的优点是什么? 显然,编译器可以简单地使用它在variables中被认为“方便”的任何垃圾值,并且可以按预期工作……这种方法有什么问题?