Java 数组和构造函数

标签 java

我正在尝试创建一个参数中有 int 的对象,即将值发送到另一个类,将 int 的值设置为另一个类的构造函数中的私有(private) int ,并使用私有(private) int 来设置大小一个数组,但我不工作...有人知道为什么吗?下面是我的意思的示例,我想将数组大小设置为 10。

main class: Car bmw = new Car(10);

Car class: public Car (int x)
              { y = x;}
private int y;
private String[] carArray= new String[y];

最佳答案

代码的问题:private String[] carArray= new String[y]; 将在构造函数主体之前执行。在您的情况下,y 仍将为 0(这是原始字段的默认值),这会导致创建长度为 0 的数组。

因此你必须这样做:

public Car (int x) { 
  y = x;
  carArray= new String[y];
}

基本上调用顺序是:

  • 父类(super class)的初始化 block /构造函数(如果有)
  • 此类的初始化 block
  • 此类的构造函数

示例:假设我们有 Car 类扩展了 Vehicle

如果您调用 new Car(10),调用顺序可能如下所示(假设没有调用其他构造函数:

  • 车辆初始化 block
  • 车辆构造函数
  • 汽车初始化 block
  • 汽车构造函数

“初始化 block ”由类主体中的所有内容组成,但不是方法的一部分(实际上有 2 个初始化 block :一个静态初始化 block 和一个实例初始化 block ,静态初始化 block 可以通过 static 来标识 关键字)。

关于Java 数组和构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39748167/

相关文章:

java - 如何在 Jasmin 中使用 "Illegal type in constant pool"来避免 "ldc_w <classname>"?

java - 如何修复我的 JFrame 无法打开,编译器没有给我错误,我该如何修复它?

java - Eclipse - 保存时对成员进行排序

java - JSP中如何将值从外部页面传递到父页面

java 3D渲染距离

java - 将带有继承的 Java bean 转换为 Kotlin 时出现问题

java - 用户在我的java测验程序中选择错误答案后如何重复问题

java - 如何让代码等待 GUI 完成?

java - 读取文件时验证每个读取的字节数组缓冲区

java - IntelliJ Idea 不更新远程 Tomcat,仅重新部署作品