是否可以在调试会话中向后执行已执行的代码?
例如,我跳过一个名为abc()expecting get 的方法,12但在重新检查返回的值后,我注意到它5而不是12.我怎样才能回到原来的位置并进入方法以查看发生了什么?我知道你可以在visual studio中做到这一点,但我无法在intelliJ中找到如何做到这一点.
我有以下数组:
ArrayList<Integer> myArray = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)
我还有一个变量'someNum':
int someNum = 12;
Run Code Online (Sandbox Code Playgroud)
我的代码:
public class Main {
public static void main(String[] args){
int someNum = 12;
ArrayList<Integer> myArray = new ArrayList<Integer>(someNum);
int arraySize = myArray.size();
System.out.println(arraySize);
}
}
Run Code Online (Sandbox Code Playgroud)
安慰: '0'
为什么打印'0'?
我检查了ArrayList文档,指出array.size();"返回此列表中的元素数".
我究竟做错了什么?
我的Java书有以下练习问题:
public class Person(){...}
public class Teacher extends Person{...}
Run Code Online (Sandbox Code Playgroud)
并询问以下哪项是正确的陈述:
1:教师继承的构造函数Person。
2:教师可以添加新方法和私有实例变量。
3:教师可以覆盖的现有私有方法Person。
这本书说2和3是正确的。我说只有2个是对的。
我读过,子类确实继承了私有方法和成员字段,但不能直接访问它们。所以我的问题是,如果无法直接访问现有的私有方法,它将如何覆盖它们?如果有人有充分理由将私有方法私有化,为什么还要覆盖私有方法呢?
我很困惑一个对象是一个instanceof两个不同的类.例如:
EnglishTest x = new EnglishQuiz();
if (x instanceof EnglishTest){
System.out.print("P");
}
if (x instanceof EnglishQuiz){
System.out.print("P");
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我都打印出"P".我的问题是为什么?
我知道这x是类型,EnglishTest但因为我在做new EnglishQuiz,不应该意味着我正在创建一个实例,EnglishQuiz而不是EnglishTest那样?这里发生了什么?
我有以下代码,我无法理解为什么.hasNext()不会变错.我正在读一个名为test的文件.
我的代码:
package printing;
import java.io.File;
import java.util.Scanner;
public class Printer {
public int count() throws Exception{
int num = 0;
File f = new File("C:\\Users\\bob\\Desktop\\test.txt");
Scanner in = new Scanner(f);
while (in.hasNext()){
num++;
}
return num;
}
}
Run Code Online (Sandbox Code Playgroud)
主要:
public class Main {
public static void main(String[] args) throws Exception{
Printer mine = new Printer();
System.out.println(mine.count());
}
}
Run Code Online (Sandbox Code Playgroud)
文件内容:
4 4 6 3 8 8 8
怎么了?
java ×5
oop ×2
arraylist ×1
arrays ×1
debugging ×1
file ×1
inheritance ×1
instanceof ×1
overriding ×1
polymorphism ×1
private ×1