资讯专栏INFORMATION COLUMN

Java 数组对象

Half / 2503人阅读

摘要:数组元素的内容允许通过赋值形式改变,而对数组变量赋值则会指向不同数组对象。数组对象一定存放在堆上,数组变量则不一定。我们通过数组变量结合位置索引,即可操作数组中的元素。

数组是一种能够通过位置索引,快速、随机地存取其中元素的集合数据结构。

对象类型
In the Java programming language, arrays are objects (§4.3.1), are dynamically created, and may be assigned to variables of type Object (§4.3.2). All methods of class Object may be invoked on an array.

注意:数组元素(内容)本身可以是基本数据类型或对象引用类型,但是数组变量(引用)则指向数组对象。数组对象并非是从某个类实例化而来,而是由 JVM 直接创建的。因此查看数组对象类名的时侯会发现都是一些奇怪的类似于 "[I" 这样的字符。

数组对象的父类是 java.lang.Object,所以可以调用 Object 类中的所有方法如 toString()。

实现如下:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

每个数组对象对应的类,可以通过 RTTI(Run-Time Type Information)于运行时检查

char[] c = {"a", "b", "c"} 
int[] i = {1, 2, 3}
long[] l = {1l, 2l, 3l}
float[] i = {1f, 2f, 3f}
String[] s={"aa","bb","cc"};

System.out.println(c);
System.out.println(i);
System.out.println(l);
System.out.println(f);
System.out.println(s);

Output:

[C
[I
[J
[F
[Ljava.lang.String

数组对象可以获取长度属性(只读) length。
数组是不可变的,指的就是数组长度内的内存空间。数组元素的内容允许通过赋值形式改变,而对数组变量赋值则会指向不同数组对象。

有关内存分配:
声明数组只是分配固定的引用空间大小,由于尚未赋值不指向任何数组对象。
数组对象一定存放在堆上,数组变量则不一定。不管是基本类型变量,还是对象引用类型变量,只要是局部变量就存放在上,对象引用类型变量指向的对象则一定存放在上。

数组使用

Java 是一门强类型、静态类型语言,编译器会根据数组的声明类型防止放入错误类型。

数组初始化方式:

case 1:

int[] arr = {1, 2, 3};

case 2:

int[] arr = new int[]{1, 2, 3};

case 3:

int[] arr = new int[3];
arr[0] = 1; arr[1] = 2; arr[2] = 3;

bad case 1: 不能在给定初始值的同时给定长度

int[] arr = new int[3]{1, 2, 3};

初始值已经决定数组长度,若再给出长度限制,两者不一致 Java 将无法正常工作。

我们通过数组变量结合位置索引,即可操作数组中的元素。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71799.html

相关文章

  • Java学习笔记(一)

    摘要:是完全面向对象的语言,对象具有状态行为和标识。类一一是具有共同特征和行为的一类事物的统称。受保护的,对同一包内的类和所有子类可见。一种通用的内存池,用于存放所有对象。类级变量又称全局级变量或静态变量,需要使用关键字修饰。 java语言的基本特点 java语言是面向对象的高级程序设计语言,它是编译型的语言,Java语言不使用指针,并提供了自动的垃圾回收机制,使得程序员不必为内存管理而担...

    chengtao1633 评论0 收藏0
  • JAVA中堆和栈的区别

    摘要:堆内存主要作用是存放运行时创建的对象。堆内存用来存放由创建的对象和数组,在堆中分配的内存,由虚拟机的自动垃圾回收器来管理。这也是比较占内存的原因,实际上,栈中的变量指向堆内存中的变量,这就是中的指针 堆:(对象) 引用类型的变量,其内存分配在堆上或者常量池(字符串常量、基本数据类型常量),需要通过new等方式来创建。 堆内存主要作用是存放运行时创建(new)的对象。(主要用于存放对象,...

    RyanQ 评论0 收藏0
  • Java集合框架概述和集合的遍历

    摘要:第三阶段常见对象的学习集合框架概述和集合的遍历一集合框架的概述集合的由来如果一个程序只包含固定数量的且其生命周期都是已知的对象,那么这是一个非常简单的程序。进而它们的遍历方式也应该是不同的,最终就没有定义迭代器类。 第三阶段 JAVA常见对象的学习 集合框架概述和集合的遍历 (一) 集合框架的概述 (1) 集合的由来 如果一个程序只包含固定数量的且其生命周期都是已知的对象,那么这是一...

    happyhuangjinjin 评论0 收藏0
  • Java快速扫盲指南

    摘要:不相等的对象要具有不相等的哈希码为了哈希表的操作效率,这一点很重要,但不是强制要求,最低要求是不相等的对象不能共用一个哈希码。方法和方法协同工作,返回对象的哈希码。这个哈希码基于对象的身份生成,而不是对象的相等性。 本文面向 刚学完Java的新手们。这篇文章不讲语法,而是一些除了语法必须了解的概念。 将要去面试的初级工程师们。查漏补缺,以免遭遇不测。 目前由于篇幅而被挪出本文的知识...

    Tony_Zby 评论0 收藏0

发表评论

0条评论

Half

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<