以下程序打印:
my name is:null
my name is:null
Someclass static init
Run Code Online (Sandbox Code Playgroud)
首次加载类时的AFAIK静态块和字段始终首先被初始化,实例块和字段被初始化.因此变量"objectName1"和"objectName2"应首先初始化,实例变量"list"second ...但是输出明显与此理论相矛盾...任何人都可以解释程序行为(我不是在寻找对它的批评设计本身btw)?
import java.util.ArrayList;
import java.util.List;
public class Main2{
public static void main (String[] args){
SomeClass.getInstance();
}
}
class SomeClass {
private static final SomeClass instance = new SomeClass();
public static SomeClass getInstance(){
return instance;
}
static {
System.out.println ("Someclass static init");
}
private static String objectName1 ="test1";
private static String objectName2 ="test2";
@SuppressWarnings("serial")
private List<SomeObject> list=
new ArrayList<SomeObject> () { {
add (new SomeObject(objectName1));
add (new SomeObject(objectName2));
}};
} …Run Code Online (Sandbox Code Playgroud) 我正在运行具有以下设置的Java应用程序:
-XX:+ CMSParallelRemarkEnabled
-XX:+ UseConcMarkSweepGC
-XX:+ UseParNewGC
-XX:+ PrintGCApplicationStoppedTime
-XX:+ PrintGCApplicationConcurrentTime
-XX:+ PrintGCDetails
-XX:+ PrintGCTimeStamps
-XX: + PrintGCDateStamps
-XX:+ PrintHeapAtGC
-XX:+ PrintTenuringDistribution
我不确定如何解释相关的gc日志(如下).特别是:
GC调用= 31(满3)后的堆:这是否意味着有31个小的GC和3个完整的GC?
什么触发应用程序线程停止的几个连续行总时间和应用程序时间?是否有可能获得与这些线相关的时间戳?
GC日志:
Total time for which application threads were stopped: 0.0046910 seconds Application time: 0.7946670 seconds Total time for which application threads were stopped: 0.0002900 seconds Application time: 1.0153640 seconds Total time for which application threads were stopped: 0.0002780 seconds Application time: 1.0161890 seconds Total time for which …
Java应用程序使用以下标志运行:-XX:+ PrintSafepointStatistics,然后在标准输出控制台上生成以下行:
2安全点期间VM操作合并
有人在乎解释这是什么意思吗?
更一般地说 - 是否有一个Java参考手册在某处详细说明所有JVM标志,它们的使用,最重要的是,预期的输出,以及相关的解释?
下面的代码编译没有错误...一次我会更喜欢它失败:/
Map <Character, Double> m = new HashMap <Character, Double>();
m.get(new String());
Run Code Online (Sandbox Code Playgroud)
由于编译器知道此映射中使用的键是Character类型,因此使用String键应标记为不正确.
我错过了什么?
在一个非常大的文件中,我需要找到一个字符串的位置(行号),然后在该字符串的上方和下方提取2行.
要立即执行此操作 - 我启动vi,找到字符串,记下它的行号,退出vi,然后使用sed提取该字符串周围的行.
有没有办法简化这个过程...理想情况下,根本不需要运行vi.
通常,时间方法需要多于3个参数,这些参数都是相同的类型,例如.
void mymethod (String param1, String param2, String param3)
Run Code Online (Sandbox Code Playgroud)
那么客户端很容易混淆参数命令,例如反转param1和param2:
mymethod (param2, param1, param3);
Run Code Online (Sandbox Code Playgroud)
......这可能是花费大量时间调试应该是一件小事的原因.关于如何避免这种错误的任何提示(除了单元测试)?
寻找一些"最终接触"的示例来增强现有(原始)用户界面.
也就是说,与应用程序的核心功能无关,而是所有这些小细节的例子,它们为应用程序提供了"抛光"外观(新字体,布局更改,更具描述性的标签......其他?)
目标平台将是一个移动平台(android/iphone).
请注意,我对颜色和形状组合的图形严重受损,所以任何太复杂的东西都可能完全通过我;)