Java 数组 (一)

本文深入探讨了数组的概念,包括不同类型数组的定义与初始化方法,并通过实例解析了数组与变量在函数中交换行为的区别,揭示了数组传递的是地址而非值的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   比如一个整形数组,它就是把整数挨个存在依次递增的下标所对应的数组里面,定义一个整形数组 int a[]={0,1,2};  a[0]就是把 0存在里面了,而数组变量则是存储的它的内存地址;
public class 优快云 {
	//swap()交换方法
	public static void swap(int firstNum,int secondNum) {
		int aNumber = firstNum;
		firstNum = secondNum;
		secondNum = aNumber;
	}
	public static void swap(int []a) {
		int aNumber = a[0];
		a[0] = a[1];
		a[1] = aNumber;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int []a= {1,2};		//定义一个整形数组,a[0] = 1 ,a[1] = 2;
		int firstNum = 1;	//定义第一个整形变量firstNum = 1
		int secondNum = 2;	//定义第二个整形变量firstNum = 2
		//向swap()方法里传入两个整形数据变量
		swap(firstNum,secondNum);			//如果swap方法没有加static关键字,那么这里调用要出错,具体原因后面文章探究
		System.out.println("调用交换函数后firstNum是" + firstNum);	
		System.out.println("调用交换函数后secondNum是" + secondNum);
		//swap()方法返回类型为空,输出结果是firstNum = 1,secondNum = 2,交换没有发生作用
		//向swap()方法里面传入两个数组数据
		swap(a);
		System.out.println("调用交换函数后a[0]是" + a[0]);	
		System.out.println("调用交换函数后a[1]是" + a[1]);
		//swap()方法返回类型为空,输出结果是a[0] = 2,a[1] = 1,交换发生了
	}

}

在这里插入图片描述
程序结果是在返回值为空的情况下,数组交换成功,整形变量交换失败,说明数组传的是地址,是引用类型,而变量是值拷贝,只在方法里交换了,交换的是复制的值,而我们实际的值并没有发生交换。讲firstNum换成a[0],secondNum换成a[1],交换也失败,说明a[下表数]存放的是数据而不是地址。
以上就为了说明一个问题,数组存储的是数据的地址。

1. 那么,一共有哪些类型的数组呢

常见的有
整形数组: int [] array;
字符串数组:String [] array;
浮点型数组: Double [] array;
字符数组: char [] array;

总结一下,只要有这个类型,这个类型的数组也存在包括,类。
类型 [] 数组名;
2. 数组的声明和初始化
a.数组的声明有几种方法?
b.声明了一个数组,是否一定要初始化?
c.初始化的方法有哪些?
d.哪些初始化后是0,哪些初始化后是null?
对应探索:
声明方式如下(等号之前的都叫声明,如果声明了一个数据类型的常量,内存都会为它开辟一块空间):
类型 [] 数组名; //只声明了,没有进行初始化,在没有初始化前使用会报错
类型 [] 数组名 = new 类型 [数组长度]; //这个数组长度可以是直接的一个整数,也可以是整形常量,它开辟数组空间大小,定死了的。声明并初始化了,整形数据是0,浮点数类型对应的是0.0,boolean 类型默认值是false,类对应的是null,字符串对应的是null,只有字符有点怪,也不报错也没有任何输出,待研究
类型 [] 数组名 = {};//只是声明了数组变量,数组各个对象并没有创出
类型 [] 数组名 = {数据1,数据2 等};//这个毫无疑问,声明并初始化了
(“类型 数组名 [];”这类凡是方括号在数组名后的也可以但不推荐,所有不予讨论)
-a.如果只声明一个数组,没有用的情况下不会报错,可以以后在创建。
-b.两个大类
(1)声明后创建:
类型 [] 数组名;
数组名 = new 类型[数组长度];//or -> 数组名 = new 类型[]{数据1,数据2等};
(2)声明同时创建,
类型 [] 数组名 = new 类型 [数组长度];//or -> 类型 [] 数组名 = {数据1,数据2 等};
这里小结一下,如果要想被创建括号里一定要有东西,要么大括号,要么小括号;创建之后数组长度就定死了,所以使用时要小心越界,可变数组日后分析。
终极大BOSS之Arrays类,下一节专门分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值