gpt4 book ai didi

java - 数组真的是齐次的吗?

转载 作者:搜寻专家 更新时间:2023-11-01 02:57:37 25 4
gpt4 key购买 nike

在下面的代码中,EX1 和 EX 2 证明了齐次理论,但在 EX3 中它拥有多种类型的值。那么,我们怎么能说数组是齐次的呢?这背后的确切理论是什么?

public class Test {
public static void main(String[] args) {
// Ex 1
int [] intArr = new int[5];
intArr[0] = 1;
intArr[1] = 2;

// Ex 2
int [] intArr2 = new int[5];
intArr2[0] = 1;
intArr2[1] = "ss";

// Ex 3
Object [] objArr = new Object[5];
objArr[0] = 1;
objArr[1] = "ss";
objArr[3] = new Object();
}
}

最佳答案

这里有两个概念:继承和自动装箱

Inheritance -String 继承自 Object,因此是一个 Object。这意味着 String 在编译时自动获取 Object 类中定义的所有方法和属性。它是一个对象加上特定于字符串的附加内容。但是,它可以被Java看作是一个Object,因为它是一个Object。当它被添加到数组中时,它被添加为一个对象,而不是一个字符串。这是因为数组被定义为对象数组。

char a = "ss".charAt(1);   // Legal as charAt(..) is a method in the String class
Object [] objArr = new Object[5];
objArr[1] = "ss";
objArr[1].charAt(1); // Not legal because charAt(..) method is not defined for Object

参见 Oracle Tutorial .

Auto-Boxing -Java 执行一种称为自动装箱的快捷方式,将原语自动转换为一组特殊的包装类,所有这些类都继承自 Object。因此,由于自动装箱和继承,将数字分配给对象也会将该数字转换为对象。

因此,添加到数组中的所有内容都作为对象添加。确实,数组中的对象可能是继承自 Object 的类。但是,就数组而言,它们是Object类型。即便如此,如果您要将它从数组中取出并将其转换为整数,您也可以这样做。它仍然带有 Integer 信息,但如果没有强制转换,该信息将不可用。从数组的角度来看,它只是一个对象。

参见 Oracle Tutorial .

关于java - 数组真的是齐次的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49961035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com