相关疑难解决方法(0)

在使用Java运行构造函数代码之前是否初始化了字段?

任何人都可以解释以下程序的输出吗?我认为构造函数在实例变量之前被初始化.所以我期待输出为"XZYY".

class X {
    Y b = new Y();

    X() {
        System.out.print("X");
    }
}

class Y {
    Y() {
        System.out.print("Y");
    }
}

public class Z extends X {
    Y y = new Y();

    Z() {
        System.out.print("Z");
    }

    public static void main(String[] args) {
        new Z();
    }
}
Run Code Online (Sandbox Code Playgroud)

java constructor initialization

65
推荐指数
3
解决办法
2万
查看次数

在构造函数或字段声明中初始化List

我想知道在初始化对象如ArrayList <>和字段声明或构造函数中的东西是否有区别.

内存使用,性能或类似内容是否存在差异,还是完全相同?

选项1:

class MyClass {
     private List<String> strings = new ArrayList<String>();
}
Run Code Online (Sandbox Code Playgroud)

选项2:

class MyClass {
    private List<String> strings;
    public MyClass() {
        strings = new ArrayList<String>();
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能是一个愚蠢的问题,或者是一个非常基本的问题,但我喜欢从一开始就建立,我喜欢理解我所看到的一切.

java arrays initialization

13
推荐指数
3
解决办法
1万
查看次数

堆栈推送时的超出界限异常

每当我尝试将一个元素推入堆栈
时,当我从构造函数中获取数组大小时,它是通过异常但是当我在声明时分配大小它是否正常工作?

public class Stack {
    public int size;

    public Stack(int size)
    {
        this.size = size;
    }

    public int[] arr = new int[size];

    public int top = -1;

    // Methods
    public void push(int value)
    {
        top++;
        arr[top] = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

java arrays data-structures

8
推荐指数
1
解决办法
102
查看次数

如何创建一个接受文件名并可以打印其内容的类?

我在编写一个可以从文件中读取和打印的类时遇到问题.看起来传递给构造函数的文件名实际上并没有分配给fileName变量,或者我可能在File和Scanner对象上做错了.我真的不知道什么是错的或如何解决它.我是初学者,只是在班上使用文件,所以我可能会遗漏一些明显的东西.感谢任何人的帮助:)

这是我的所有代码和下面的分配说明.

任务是:

使用以下方法编写名为FileDisplay的类:

  • 构造函数:接受文件名作为参数

  • displayHead:此方法应仅显示文件内容的前五行.如果文件包含少于五行,则应显示文件的全部内容.

  • displayContents:此方法应显示文件的全部内容,其名称已传递给构造函数.

  • displayWithLineNumbers:此方法应显示文件的内容,其名称已传递给构造函数.每行之前应该有一个行号,后面跟一个冒号.行号应从1开始.

我的代码:

import java.io.*;
import java.util.Scanner;

public class FileDisplay {  

    // just using little random .txt files to test it
    private String fileName = "example1.txt";

    public FileDisplay(String fileName) throws IOException {
        this.fileName = fileName;   
    }

    File file = new File(fileName);
    Scanner inputFile = new Scanner(file);

    // displays first 5 lines of file
    public void displayHead() {         
        for (int x = 0; x < 5 && inputFile.hasNext(); x++) {
            System.out.println(" " + inputFile.nextLine());
        } …
Run Code Online (Sandbox Code Playgroud)

java printing constructor file

5
推荐指数
1
解决办法
665
查看次数

声明成员类变量并实例化它们

我已经习惯了C++,你必须在构造函数中实例化所有东西,但最近的一个实现让我对java非常困惑.我只是在构造函数中实例化了一些东西,然后我意识到这个语法是有效的:

public class DebateCompetition {
    private boolean isAdvanced;
    ArrayList<Debate> debates = new ArrayList<Debate>(); //<------
    ArrayList<Team> teams;
    ArrayList<School> schools;

    public void addSchool(School s) {
        schools.add(s);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这留下了很多问题.第一:它做了什么?第二:何时被new ArrayList<Debate>()召唤?第三:这是最佳做法吗?

java

0
推荐指数
1
解决办法
105
查看次数