我有以下代码:
public class Tests {
public static void main(String[] args) throws Exception {
int x = 0;
while(x<3) {
x = x++;
System.out.println(x);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我们知道他应该只是写x++
或者x=x+1
,但是x = x++
它首先要归于x
自身,然后再增加它.为什么x
继续0
作为价值?
--update
这是字节码:
public class Tests extends java.lang.Object{
public Tests();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]) throws java.lang.Exception;
Code:
0: iconst_0
1: istore_1
2: iload_1
3: iconst_3
4: if_icmpge 22
7: iload_1 …
Run Code Online (Sandbox Code Playgroud) 我正在学习如何使用JavaScript制作OOP.它是否具有接口概念(例如Java interface
)?
所以我可以创建一个监听器......
如果我<xmlElement>
在javadoc中写入,则不会出现,因为标签在格式化文本时具有特殊功能.
如何在javadoc中显示这些字符?
是否有Subversion命令显示当前的版本号?
在svn checkout
我想要启动脚本并需要变量中的修订号之后.如果有像这样的命令会很棒svn info get_revision_number
.
我只知道非基元(对象)进入堆,方法进入堆栈,但原始变量呢?
--update
根据答案,我可以说堆可以有一个新的堆栈和给定对象的堆?鉴于该对象将具有原始和引用变量..?
是否有一种不那么丑陋的方式来处理close()
关闭两个流的异常:
InputStream in = new FileInputStream(inputFileName);
OutputStream out = new FileOutputStream(outputFileName);
try {
copy(in, out);
} finally {
try {
in.close();
} catch (Exception e) {
try {
// event if in.close fails, need to close the out
out.close();
} catch (Exception e2) {}
throw e; // and throw the 'in' exception
}
}
out.close();
}
Run Code Online (Sandbox Code Playgroud)
更新:所有上述代码都在一个try-catch内,感谢警告.
最后(在答案之后):
一个好的实用方法可以使用Execute Around成语(感谢Tom Hawtin).
以下代码打印null
一次.
class MyClass {
private static MyClass myClass = new MyClass();
private static final Object obj = new Object();
public MyClass() {
System.out.println(obj);
}
public static void main(String[] args) {}
}
Run Code Online (Sandbox Code Playgroud)
为什么在构造函数运行之前没有初始化静态对象?
更新
我只是在没有注意的情况下复制了这个示例程序,我以为我们正在谈论2个Object字段,现在我看到第一个是MyClass字段..:/
我正在使用JSF 2.0,我正在寻找一个在性能方面负载最小的copmponent库.如果我在RichFaces和PrimeFaces之间做出选择,哪一个更好用?两者的优点和缺点是什么?