Java记录 -33- 数组存放对象地址

1.数组中存放的是对象的地址。

public class ArrayTest3 {
    public static void main(String[] args) {
        I[] i = new I[2];
        i[0] = new C();
        i[1] = new C();
    }
}
interface I{}
class C implements I{}

上面的代码是可以编译运行通过的,同样验证了上面的结论:数组中存放的是对象的地址。

无论生成什么样类型的数组,数组中存放的都是该类型对象的地址,而非该类型的对象。如果没有给数组赋予对象,则存放null。

上面的 I[] i = new I[2];代码并非生成I的对象,接口是无法生成对象的。i数组只能存放实现了I接口的类的对象地址。

2.数组也是对象,下面代码用 equals方法比较两个存放相同数字的数组对象是假,因为是两个不同的对象。

    public static void main(String[] args) {
        int[] a = {1,2,3};
        int[] b = {1,2,3};
        System.out.println(a.equals(b));
    }
时间: 2024-10-10 16:44:47

Java记录 -33- 数组存放对象地址的相关文章

Java记录 -31- Java数组

1. 数组 Array:相同类型数据的集合就叫做数组. 2. 如何定义数组:type[] 变量名 = new type[数组中元素的个数]: 可以按照下列方式定义长度为10的整型数组:int[] a = new int[10]; 3. 数组中的元素索引是从0开始的,对于数组来说,最大的数组索引==数组的长度-1. 4. 数组定义和赋值方式: int[] a = new int[2];   a[0] = 1; a[1]=2; int a[] = new int[2]; //跟上面的定义方式是等价的

JAVA中的数组是对象吗?

1 public class Main{ 2 public static void main(String[] args) 3 { 4 int a[]={1,9}; 5 //Object obj=new int[10]; 6 System.out.println(a.toString()); 7 } 8 } 数组是对象,但是这个数组对象并不是从某个类实例化来的,而是由JVM直接创建的,因此查看类名的时候会发现是很奇怪的类似于"[I"这样的样子,这个直接创建的对象的父类就是Object,

java记录一维数组中多个相同值出现的位置下标

问题描述: 我需要在一个整数型一维数组中,找出相同数字出现的位置下标并记录. 例如: int[] test={3,3,1,1,2,5,1} 最终需要得到的是(数字-->出现的位置下标): 3 -->[0,1] 1 -->[2,3,6] 2 -->[4] 5 -->[5] 接下来通过代码实现我想要的功能,如下: package Test; import java.util.ArrayList; import java.util.LinkedHashMap; import jav

Java记录 -44- Object数组陷阱

下面是一个很简单的程序,但存在了意想不到的陷阱:     public static void main(String[] args) {         ArrayList list = new ArrayList();         list.add(new Integer(1));         list.add(new Integer(2));          //      Integer[] ins = (Integer[])list.toArray();           

Java基础拾遗——数组与对象的拷贝

一.数组的拷贝主要有以下几种方式. 1.Object.clone() 该方法继承自Object类,数组元素为基础数据类型(boolean.char.byte.short.int.float.double.long)或String类型,均可使用. int[]  arr1 = {1,2,3}; int[]  arr2 = arr1.clone(); //arr2={1,2,3} String[] arr1 = {"a", "b"}; String[] arr2 = ar

Java如何清空数组、对象

//清空 public class Clear { public static void main(String[] args){ // List<String> a= new ArrayList<>(); // a.add("11"); // a.clear(); //List可直接clear Map<String, Integer> a= new HashMap<>(); a.put("11", 1); a.cle

【java】解析java中的数组

目录结构: contents structure [-] 一维数组 1,什么是一维数组 2,声明一维数组的三种方式 二维数组 1,什么是二维数组 2,声明二维数组的3种方式 3,二维数组的遍历示例 数组在内存中的空间分配情况 各种数据类型在声明完毕后的默认初始值 解析数组中length属性 java中的数组是对象吗 创建数组对象的模板在哪里 java数组中.lenght属性的来源 参考文章 1,一维数组 1.1 什么是一维数组 一维数组就是在内存连续分配的一段存储空间. 1.2 声明一维数组的三

Java中的数组数据结构需要了解的要点

. 首先,数组是Java中的对象.它们不是像int.short或long这样的基本类,也不是具有很多方法的全功能对象,但由于它们是对象,所以它们隐式地扩展了Object,这就是为什么可以使用数组引用(例如toString())调用java.lang.object的任何方法. Java中数组的另一个重要之处是,一旦创建,就不能更改数组的大小.好奇的开发人员可能会问,我们如何在Java中拥有像ArrayList这样的动态集合,可以在饱和的时候调整自身大小?好吧,扩容不像你想得那样,可以简单地增加一个

java记录对象前后修改的内容(工具类)

有时候业务需要,需记录一条记录的修改历史,但是不能为完成任务而硬编码,不靠谱 这种情况可以使用java反射来完成 对对象属性的描述可以通过自定义注解来完成,读取里面的属性进而记录修改历史. 在对象的属性上面加上注解,value设置为属性的中文描述 工具了代码如下 util类(BeanChangeUtil) 1 import java.beans.PropertyDescriptor; 2 import java.lang.reflect.Field; 3 import java.lang.ref