定义一个整形数组_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。注意不要同时使用静态初始化和动态初始化。也就是说,不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值。

01f19a0b7785f5cead3de03915f1fff8.gif

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所引用的数组。内存模型如图所示

f23c974dcc7c9779f8b3c31b19625a47.png

关键是大部分时候,我们把数组变量和数组对象搞混了,数组变量只是一个引用变量(有点类似于C语言里的指针),通常存放在栈内存中(也可被放入堆内存中的);而数组对象就是保存在堆内存中的连续内存空间。对数组执行初始化,其实并不是对数组变量执行初始化,而是要对数组对象执行初始化—也就是为该数组对象分配一块连续的内存空间,这块连续内存空间的长度就是数组的长度。虽然上面程序中的prices变量看似没有经过初始化,但执行prices=nums;就会让prices变量直接指向一个已经执行初始化的数组。对于数组变量来说,它并不需要进行所谓的初始化,只要让数组变量指向一个有效的数组对象,程序即可正常使用该数组变量。

好了,关于数组的增加删除修改,都是通过数组的遍历进行实现的,我在这里就不再多介绍了,在下面我们可以自己尝试一下。

这就是今天要讲的数组的操作。

4afe27967e2c35e9b2cf14033027b4d0.gif

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值