AJPFX浅析Java数组

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

数组(array)是相同类型变量的集合,可以使用共同的名字引用它。数组可被定义为任何类型,可以是一维或多维。数组中的一个特别要素是通过下标来访问它。数组提供了一种将有联系的信息分组的便利方法。注意:如果你熟悉C/C++,请注意, Java数组的工作原理与它们不同。

1、数组不是集合,它只能保存同种类型的多个原始类型或者对象的引用。数组保存的仅仅是对象的引用,而不是对象本身。

2、数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

3、数组声明的两种形式:一、int[] arr; 二、int arr[]; 推荐使用前者,这符合Sun的命名规范,而且容易了解到关键点,这是一个int数组对象,而不是一个int原始类型。

4、在数组声明中包含数组长度永远是不合法的!如:int[5] arr; 。因为,声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。

5、在数组构造的时候必须指定长度,因为JVM要知道需要在堆上分配多少空间。反例:int[] arr = new int[];

6、多维数组的声明。int[][][] arr; 是三维int型数组。

7、一维数组的构造。形如:String[] sa = new String[5];

或者分成两句:String[] sa; sa = new String[5];

8、原始类型数组元素的默认值。对于原始类型数组,在用new构造完成而没有初始化时,JVM自动对其进行初始化。默认值:byte、short、 int、long–0 float–0.0f double–0.0 boolean–false char–’"u0000’。(无论该数组是成员变量还是局部变量)

9、对象类型数组中的引用被默认初始化为null。如:Car[] myCar = new Car[10]; 相当于从myCar[0]到myCar[9]都这样被自动初始化为myCar[i] = null;

10、对象类型的数组虽然被默认初始化了,但是并没有调用其构造函数。也就是说:Car[] myCar = new Car[10];只创建了一个myCar数组对象!并没有创建Car对象的任何实例!

11、多维数组的构造。float[][] ratings = new float[9][]; 第一维的长度必须给出,其余的可以不写,因为JVM只需要知道赋给变量ratings的对象的长度。

12、数组索引的范围。数组中各个元素的索引是从0开始的,到length-1。每个数组对象都有一个length属性,它保存了该数组对象的长度。(注意和String对象的length()方法区分开来,这两者没有统一起来是很遗憾的。)

13、Java有数组下标检查,当访问超出索引范围时,将产生ArrayIndexOutOfBoundsException运行时异常。注意,这种下标检查不是在编译时刻进行的,而是在运行时!也就是说int[] arr = new int[10]; arr[100] = 100; 这么明显的错误可以通过编译,但在运行时抛出!

Java的数组下标检查是需要额外开销的,但是出于安全的权衡还是值得的,因为很多语言在使用数组时是不安全的,可以任意访问自身内存块外的数组,编译运行都不会报错,产生难以预料的后果!

Java基础——数组 本篇文章介绍了什么是数组数组的使用,数组与方法之间的关系,以及通过几个数组联系加深对数组的理解 阅读详情

相关推荐

Java基础语法——数组

每日正能量 世上还有很多美好的事物等着你,别抱怨更不要放弃,所以你要内心温柔,安静努力。 1. 首先我们引入几个问题: 1.1 什么是数组数组就是具有相同数据类型且按一定次序排列的一组变量的集合体。即用一个变量名表示一组数据。 1.2什么是数组元素? 构成一个数组的每一个数据称为数组元素。 1.3什么是数组下标 各元素通过下标来区分。下标表明了数组元素在数组中的位置。在一个数组中,数组下标是用整数表示的,从0开始,...

qq_52519008的博客 1947

Java基础语法|数组

了解什么是数组数组的初始化、数组的使用、数组与方法的关系、数组联系、二维数组

m0_61925333的博客 1884

C语言基础

C基础知识概述,(指针单独一篇)

m0_58290212的博客 4105

java数组的使用

本篇内容主要讲解了数组的相关知识。

2202_76101487的博客 778

AJPFX关于java数组排序

/** *将数组中的两个指定下标的元素交换位置 *@param arr 要交换元素的数组引用地址值 *@param a 数组索引 *@param b 数组索引 */ private static void swap(int[] arr,int a,int b){ int temp=arr[a]; arr[a]=arr[b]; arr[b]=temp; } /** *冒泡排序 ...

AJPFX的博客 222

关于java的arrays数组排序示例AJPFX的分享

Java API对Arrays类的说明是:此类包含用来操作数组(比如排序和搜索)的各种方法。 1.对基本数据类型的数组的排序 说明: (1)Arrays类中的sort()使用的是“经过调优的快速排序法”; (2)比如int[],double[],char[]等基数据类型的数组,Arrays类之只是提供了默认的升序排列,没有提供相应的降序排列方法。 (3)要对基础类型的数组进行降序排序,需要将这些数...

AJPFX的博客 144

AJPFX关于一维数组的声明与初始化

一维数组:可以理解为一列多行、类型相同的数据,其中每个数据被称为数组元素; 一维数组的声明方式: type varName[]; 或 type[] varName;(推荐) Eg:int age[]; int []age; 数组的长度一旦确定,就不能改变,也就数组是定长的; 我的总结:java语言声明数组的时候不能指定其长度(元素的个数) Eg:int a[5]; //非法 初始化: Ja...

AJPFX的博客 243

AJPFX关于Java中运用数组的四种排序方法

JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。 冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来。 选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组。 插入排序是选择一个数组中的数据,通过不断的插入比较...

AJPFX的博客 205

AJPFX关于数组获取最值的思路和方法

思路分析: 1、定义一个变量(max,初始值一般为数组中的第一个元素值),用来记录最大值。 2、遍历数组,获取数组中的每一个元素,然后依次和max进行比较。如果当前遍历到的元素比max大,就把当前元素值给max。如果小,则不操作。 3、循环结束后,max记录的就是最大值。 具体代码 public static void main(String[] args) { i...

AJPFX的博客 100

AJPFX总结Java 类加载器

顾名思义,类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class类的一个实例。每个这样的实例用来表示一个 Java ...

AJPFX的博客 184

AJPFX总结String类的特点

String str = "abc"; str就是String的一个对象 字符串一旦被赋值, 值就不能再被改变了 举例:String s = "abc"; //s被赋值为了"abc" s = "bcd"; //s还能继续赋值成"bcd" //字符串一旦被赋值,值就不能改变,说的是 值 不能改变 ,就是说 "abc" 永远不...

AJPFX的博客 170

AJPFX关于Collection接口的总结

###15Collection-List-ArrayList/LinkedList/ Collection接口中的方法 A:添加功能 boolean add(Object obj):把obj这个元素,添加到集合中去 boolean addAll(Collection c):将 c 这个集合中的所有元素,都添加到本集合中来 B:删...

AJPFX的博客 219

来自AJPFX的二分法查找

package com.heima.array; public class Demo2_Array { /** * * A:案例演示 * 数组高级二分查找代码 * B:注意事项 * 如果数组无序,就不能使用二分查找。 * ...

AJPFX的博客 150

AJPFX:学习JAVA程序员两个必会的冒泡和选择排序

数组排序(冒泡排序) 冒泡排序: 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 选择排序 : 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处 [1,3,9,5,7] --> 排序 --> [1,3,5,7,9] */ public class ArraysDemo { public static vo...

AJPFX的博客 236

AJPFX关于File类复习

file是一个路径,分为相对路径(eclipse)和绝对路径: 1、构造方法有: File(String pathname ),File(String parent ,String child),File(File parent ,String child); 2、file创建功能: public boolean createNewFile(); //创建一个新的文件夹,如果存在这样的文...

AJPFX的博客 187

AJPFX关于Collection 集合的表述

集合的遍历 class Demo_Collection{ public static void main(String[] args){ Collection c = new ArrayList(); //Collection是接口,不能直接创建对象,所以创建一个子类对象 c.add(“a”); ...

AJPFX的博客 170

AJPFX关于Java Object类常用方法小总结

java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。   Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。   Object类是Java中唯一没有父类的类。   其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。 Object类中的方法 构造方法:public Object() protect...

AJPFX的博客 158
上一篇: AJPFX关于JDK,JRE,JVM的区别与联系
下一篇: AJPFX浅析Java内存结构
AJPFX
博客等级 码龄7年 4粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值