所以有一天,当我查看维基百科页面上的Java字节码时,我遇到了这个例子:
请考虑以下Java代码:
outer:
for (int i = 2; i < 1000; i++) {
for (int j = 2; j < i; j++) {
if (i % j == 0)
continue outer;
}
System.out.println (i);
}
Run Code Online (Sandbox Code Playgroud)
假设上面的代码放在一个方法中,Java编译器可能会将上面的Java代码转换为字节代码,如下所示:
0: iconst_2
1: istore_1
2: iload_1
3: sipush 1000
6: if_icmpge 44
9: iconst_2
10: istore_2
11: iload_2
12: iload_1
13: if_icmpge 31
16: iload_1
17: iload_2
18: irem
19: ifne 25
22: goto 38
25: iinc 2, 1
28: goto 11
31: getstatic …Run Code Online (Sandbox Code Playgroud) 最近我使用Java 7中引入的java.nio.file包进行了一些编码,并看到了一个使用Path的示例:
Path path = Paths.get("C:\\Users");
Run Code Online (Sandbox Code Playgroud)
鉴于Path是一个接口,我对如何引用它感到困惑,但经过一些研究后我发现允许对接口的引用,但它必须指向实现接口的类.从这看起来我查看了Paths类,发现它没有实现Path.查看源代码的实际方法Paths.get方法如下:
public static Path get(String first, String... more) {
return FileSystems.getDefault().getPath(first, more);
}
Run Code Online (Sandbox Code Playgroud)
该方法首先使用我认为称为静态工厂方法的方式返回FileSystem类型的对象(我认为是抽象类),但FileSystem也没有实现该接口.
我的问题是有没有人知道/能够解释Path接口实际实现的位置,因为我似乎无法找到它发生的位置.
我是java的新手,并且在理解如何手动填充对象数组时遇到了问题.我不想手动执行此操作的原因是因为我需要创建40个对象,其中20个对象转到arrayOne其他20个对象arrayTwo.此外,每个对象都有一个独特的参数,如"Texas"或"Canada",需要设置.
我通常会创建一个这样的数组:
long[] arrayOne;
arrayOne = new long[20];
Run Code Online (Sandbox Code Playgroud)
而不是填充它,让我们通过循环或手动说数字.但是现在我正在处理对象并且正在努力解决这个问题,我尝试在StackOverflow上查找答案,但是无法理解那里发生了什么.
如果它有帮助,这是我的对象的构造函数
// Plane Constructor
public Plane (int i, String dest, String airl, String airc, double t) {
planeID = i;
destination = dest;
airline = airl;
aircraft = airc;
time = t;
}// END Plane Constructor
Run Code Online (Sandbox Code Playgroud)