当我将静态int的值++分配给另一个int时,它按照似乎不遵循Java操作顺序的顺序执行赋值.不应该在++之前做到=吗?
public class Book
{
private int id;
private static int lastID = 0;
public Book ()
{
id=lastID++;
}
}
Run Code Online (Sandbox Code Playgroud)
在我构建的第一本书中,id为0.不应该是1,因为lastID++应该先发生吗?
我是编程新手,我正在尝试自学一下StackOverflow是由什么引起的.我玩循环并导致错误,但我测试的forkbomb代码不会导致错误.为什么是这样?
public class ForkBomb
{
public static void main(String[] args) throws java.io.IOException
{
while(true)
{
Runtime.getRuntime().exec(new String[]{"java", "-cp", System.getProperty("java.class.path"), "ForkBomb"});
}
}
}
Run Code Online (Sandbox Code Playgroud)
这不会导致堆栈溢出.为什么?然而这导致一个:
public class WhileBomb
{
public WhileBomb()
{
while (true)
{
new WhileBomb();
}
}
public static void main(String[] args) throws java.io.IOException
{
WhileBomb goodBye = new WhileBomb();
}
}
Run Code Online (Sandbox Code Playgroud) 为了概念上理解继承,接口和多态,我创建了几个类来测试事物.我得到的结果不是我预期的结果.代码如下:
public class Animal implements Comparable{
//Animal constructor & methods
public int compareTo(Object arg0){System.out.println("Animal.compareTo");}
}
public class Bear extends Animal{
//Bear constructor & methods
}
public class PolarBear extends Bear implements Comparable{
//PolarBear constructor & methods
public int compareTo(Object arg0) {System.out.println("PolarBear.compareTo");
Run Code Online (Sandbox Code Playgroud)
我没有得到任何错误,说我无法再次实现Comparable.但是在我的测试中,一旦我创建了PolarBear,我就无法回到Animal的compareTo方法,即使PolarBear应该继承Animal的compareTo.我测试了以下内容:
Animal bobo = new PolarBear();
bobo.compareTo(null);
((PolarBear) bobo).compareTo(null);
((Animal)bobo).compareTo(null);
((Comparable) bobo).compareTo(null);
Run Code Online (Sandbox Code Playgroud)
并且他们每个人印刷:
PolarBear.compareTo
Run Code Online (Sandbox Code Playgroud)
有什么办法来访问Animal的compareTo?从逻辑上讲,我不希望能够比较a的动物品质PolarBear以及PolarBear品质吗?