前言:
眼前同学们对“定义一维数组java”大约比较关心,小伙伴们都想要学习一些“定义一维数组java”的相关资讯。那么小编在网上搜集了一些对于“定义一维数组java””的相关内容,希望小伙伴们能喜欢,同学们快快来学习一下吧!在聊集合的知识之前我们先看下数组,其实数组也是归纳到集合中的。
数组的定义
java数组就是线性表的定义,分配一段连续的空间用于存放数据。数组是比较简单的访问比较快。
数组的分类
一维数组
int [] a= new int[10] 分配连续的可存放元素个数为10的空间,
public class main{ public static void main(String[] args){ int [] array = new int[10]; array[1]=222; array[2]=333; System.out.println(array.length); ArrayList<Integer> list = new ArrayList<>(); list.add(123); list.add(22); System.out.println(list); }}
看了一维的之后我们再看看多维数组
多维数组
以二维数组为例,二维数组的实质:数组的数组。数组中的每一个元素仍然是个数组。
逻辑上可看做二维,其实并不是二维的
public void test(){ // 这是个3行的但是列未定义。 int[][] array= new int[3][]; array[0] = new int[5]; // 第0行有5列 ,创建有5个整形变量的数组 arry[1] = new int[4]; array[2]= new int[3];}数组的初始化
Java语言是典型的静态语言,因此Java的数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。Java程序中的数组必须经初始化才可使用。所谓初始化,就是为数组对象的元素分配内存空间,并为每个数组元素指定初始值。数组的初始化有以下两种方式。
■ 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。
■ 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。不管采用哪种方式初始化Java数组,一旦初始化完成,该数组的长度就不可改变,Java语言允许通过数组的length属性来访问数组的长度。
指定初始值时,系统将按如下规则分配初始值。
■数组元素的类型是基本类型中的整数类型(byte、short、int和long),则数组元素的值是0
■数组元素的类型是基本类型中的浮点类型(float、double),则数组元素的值是0.0。
■数组元素的类型是基本类型中的字符类型(char),则数组元素的值是'\u0000'。
■数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值是false。
■数组元素的类型是引用类型(类、接口和数组),则数组元素的值是null。注意不要同时使用静态初始化和动态初始化。也就是说,不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值。
Java的数组是静态的,一旦为数组初始化完成,数组元素的内存空间分配即结束,程序只能改变数组元素的值,而无法改变数组的长度。需要指出的是,Java的数组变量是一种引用类型的变量,数组变量并不是数组本身,它只是指向堆内存中的数组对象。因此,可以改变一个数组变量所引用的数组,这样可以造成数组长度可变的假象使用Java数组之前必须先初始化数组,也就是为数组元素分配内存空间,并指定初始值。实际上,如果真正掌握了Java数组在内存中分配机制,那么完全可以换一个方式来初始化数组,或者说,数组无需经过初始化。
始终记住:Java的数组变量是引用类型的变量,它并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中即可使用该数组变量
比如 :
public class ArrayTest3 { public static void main(String[] args) { //定义并初始化nums数组 int[] nums=new int[]{3, 5, 20, 12}; //定义一个prices数组变量 int[] prices; //让prices数组指向nums所引用的数组 prices = nums; for (int i=0 ; i < prices.length ; i++) { System.out.println(prices[i]); } //将prices数组的第3个元素赋值为34 prices[2]=34; //访问nums数组的第3个元素,将看到输出34 System.out.println("nums数组的第3个元素的值是:"+nums[2]); } }从图1
常常说使用Java数组之前必须先进行初始化,可是现在prices变量却无需初始化,这不是互相矛盾吗?其实一点都都不矛盾。
这个例子最重要的一点指出了prices数组指向nums所引用的数组。内存模型如图所示
关键是大部分时候,我们把数组变量和数组对象搞混了,数组变量只是一个引用变量(有点类似于C语言里的指针),通常存放在栈内存中(也可被放入堆内存中的);而数组对象就是保存在堆内存中的连续内存空间。对数组执行初始化,其实并不是对数组变量执行初始化,而是要对数组对象执行初始化—也就是为该数组对象分配一块连续的内存空间,这块连续内存空间的长度就是数组的长度。虽然上面程序中的prices变量看似没有经过初始化,但执行prices=nums;就会让prices变量直接指向一个已经执行初始化的数组。对于数组变量来说,它并不需要进行所谓的初始化,只要让数组变量指向一个有效的数组对象,程序即可正常使用该数组变量。
好了,关于数组的增加删除修改,都是通过数组的遍历进行实现的,我在这里就不再多介绍了,在下面我们可以自己尝试一下。
这就是今天要讲的数组的操作。
标签: #定义一维数组java #java数组容量 #多维数组定义java #可变长度数组java