当前位置: 首页 > 知识库问答 >
问题:

如何在Java[duplicate]中为int[]数组中的单个元素分配“null”值

谢叶五
2023-03-14

是否可以为整数数组中的单个元素指定一个“null”值?

例如:

int[] num = new int[3];

num[0] = 23;
num[1] = null;
num[2] = 12

当我尝试这个时,它给出了一个错误,即<代码>不兼容类型:

但是,当我在对象数组中尝试相同的方法时,我可以为数组中的单个元素指定一个“null”值。

代码如下:

public class Person {
    private String name;
    private int age;

    public Person(String n, int a){
        name =  n;
        age = a;
    }

    public static void main(String[] args) {
        Person[] p = new Person[3];
        p[0] = new Person("John", 17);
        p[1] = null;
        p[2] = new Person("Mark", 18);
    }
}

对象数组中允许“null”,而int数组中不允许。为什么?这两种数组类型有什么区别?我以为Java中的所有数组都是对象类型。如果我错了,请纠正我。

共有3个答案

施鸿
2023-03-14

int是一个基元类型,像布尔、字节、短、字符、长、浮点、双和不能为空。但是p是一个引用类型,可以为空。null意味着有一个引用,但不显示一个对象。

盛跃
2023-03-14

在int数组中,无论您是否赋值,所有元素都会隐化为0。这是因为数组是基元类型。

public class HelloWorld{

     public static void main(String []args){
        System.out.println("Hello World");
        int [] a = new int[10];

        for(int i=0; i<10; i++)
            System.out.println(a[i]+"");
     }
}

初始化Person对象时,Person不是基元类型。所以person可以为null,但是age不能为null,因为age是原始类型

尚嘉勋
2023-03-14

原始Java整数不能是null,但是包装原始intintger类可以是null。这里有一个选项可以考虑:

Integer[] num = new Integer[3];
num[0] = 23;
num[1] = null;
num[2] = 12;

Java中的装箱规则使intInteger在大多数情况下可以互换使用变得相当容易。

 类似资料:
  • 问题内容: 一个int数组占用多少空间?或者一个int数组消耗多少空间(以字节为单位),看起来像这样: 内存分配语言是否特定? 谢谢你们 问题答案: 由于您添加了许多语言标签,因此我想为C#编写代码。在C#中,这取决于操作系统。 对于32位,每个都是4字节,另外4字节也用于引用对象,这使得4 * 4 + 4 = 20字节 对于64位,每个都是4字节,而8字节也用于引用该对象,这使得4 * 4 +

  • 问题内容: 想要向现有数组添加或追加元素 现在我想用我发送的新值动态更新系列。 就像我发送3个更新系列 再次,如果我发送4更新系列作为 再次,如果我发送1个更新系列,依此类推 怎么做???? 我在其他函数中每5分钟生成一个整数,并希望发送以更新数组。 问题答案: 数组的长度在Java中是不可变的。这意味着一旦创建数组便无法更改其大小。如果使用2个元素初始化它,则其长度为2。但是,您可以使用其他集合

  • 问题内容: 假设我有以下代码: 我可以手动调用下一个函数多次,以使2个数组按“相同名称”分组。 问题是我不知道变量值,在这种情况下为“ dinner”和“ lunch”,因此我想按名称自动对这个statEvents数组进行分组,所以当名称不同时,我会得到尽可能多的数组。 我该怎么办? 问题答案: 从Swift 4开始,此功能已添加到标准库中。您可以这样使用它: 斯威夫特3: 不幸的是,上面的函数复

  • 我有一个表单,输入以填写客户数据,包括姓名和id 输入的定义通常如下: 当执行ajax调用时没有检索到数据,并且用户需要更改一些输入时,我的问题就出现了,如果需要启动事件,用户必须通过id输入字段更改数据并返回,这不是方法。 现在使用的是变通方法:向所有涉及的字段插入一个ajax调用。当任何输入启动事件时,在服务器端,我检查所有数据是否完整,是否已更改,以调用检索客户数据的服务... 但老实说,这

  • 我有一个二维数组,其中最后的元素是空的。这样地: 现在我想删除空元素,并获得正确的新大小。长度 我试着这样做,但不起作用: 有什么好办法吗?

  • 问题内容: 说我有阵列 数组的长度为20,但计数为0。如何获取计数? 问题答案: “计数”是什么意思?具有非零值的元素数量?您只需要数一下。 有 没有区别 数组和一个已之间 明确地 设置与零个值。例如,这些数组是无法区分的: Java中的数组始终具有固定大小-可通过字段访问。没有“当前使用的阵列数量”的概念。