Java数组相关内容复习

·引用数据类型,数组中的元素可以是任何类型的数据

·Java中的数组名仍为数组的首地址

·数组长度确认之后就无法改变

两种初始化方式

·静态初始化

public class arraytext
{
	public static void main(string[] args)
	{
		int[] ids;//表明ids是数组,此时是声明
		ids = new int[] {1, 2, 3, 4};//这一步为初始化和赋值
	}
};
//此处初始化方式为静态初始化,数组的初始化和元素的赋值同时进行
//与动态初始化的区别就在于初始化和赋值的顺序

·动态初始化

public class arraytext
{
	public static void main(string[] args)
	{
		String names = new String[5];
	}
};
//此处只有声明,将赋值操作和初始化分隔开
//此时要确定数组的的长度

二者比较和使用时的注意事项

public class arraytext
{
	public static void main(string[] args)
	{
		string names = new String[5];
		//动态初始化
		int[] ids;
		ids = new int [] {1, 2, 3, 4};
		//静态初始化
		int[]arr1 = { 1,2,3,4 };
		int[]arr2 = new int[5];
		arr2 = { 1,2,3,4,5 };
	}
};
//此处的[]

//int[] ids,此处的[]相当于是强调ids是一个int类型的数组,是不可以加入任何数字的

//String[5],此处的[5]是用来规定数组长度,但是如果在此处的[]中有数字的话,就不
//能够再进行赋值了,[]中没有数值才能够进行赋值

//int []{1,2,3,4}此处是没确定长度的数组元素去通过赋值确定长度。

//此处的赋值操作

//arr1的赋值操作,相当于是静态初始化省略掉new int[]

//但是对于动态初始化的arr2而言,这样声明是错误的,new int是不能够省略的

数组长度的获取

public class arraytext
{
	public static void main(string[] args)
	{
		int[] ids;
		ids = new int [] {1, 2, 3, 4};
		System.out.println(ids.length);
	}
};
//System.out.println()是系统输出函数
//如果只是单纯获取长度,只需要使用“数组名.length”

数组的遍历

public class arraytext
{
	public static void main(string[] args)
	{
		int[] ids;
		ids = new int [] {1, 2, 3, 4};
		for (int i = 0; i < ids.length; i++)
		{
			System.out.println(ids[i]);
		}
	}
};
//在Java中依旧可以使用“数组名称[下标]”来调用指定位置的元素

数组的默认初始化值

数据类型默认初始化值
整型(byte、short、int、long)0
浮点型(float、double)0.0
字符型(char)ascII码等于0的符号
布尔型(boolean)Flase
数组元素为引用数据类型null

数组的内存解析

 二维数组声明

可以将一维数组arr1又作为另一个数组arr2的元素存在

从数组的底层运行机制来看,其实并没有多维数组

public class arraytext
{
	public static void main(string[] args)
	{
		int[][]arr1 = new int[][]{ {1,2,3},{4,5},{6,7,8} };
		//静态初始化
		String[][]arr2 = new String[3][2];
		String[][]arr2 = new String[3][];
        //动态初始化
	}
};
//动态初始化的第二种虽然可以成功在堆空间为数组申请出空间,但是直接调用依旧会报错
//会要求完善数组才能够调用和赋值
//arr2[1]=new String[4]
//完善过程如上

二维数组的长度

只要是数组类型的数据,就有length的选项

从二位数组的定义去理解,上图所举出的例子而言,arr2.length的结果应该是3,但如果是arr2[1].length的结果就是2

二维数组的打印

public class arraytext
{
	public static void main(string[] args)
	{
		int[][]arr1 = new int[][]{ {1,2,3},{4,5},{6,7,8} };
		System.out.println(arr1[0]);
//此时打印的应该是对应arr1[0]的地址
		System.out.println(arr1[0][1]);
//此时打印出的结果应该是具体默认值或者是存入的数字
	}
};

二维数组的存储

数组的内容大致结束了,需要注意的点就是Java二维数组的运算机制,在对二维数组进行定义的时候,第一个[]必须要有数字,先完善外层数组,内层数组可以再次逐个定义,Java二维数组的运算机制与c语言的二维数组存储和运算机制有区别,所以在二维数组的存储和调用之间有不尽相同的点。同时还需要注意数组的静态初始化和动态初始化,动态初始化不可以使用{}对数组中的元素进行赋值,而静态初始化可以。静态初始化和动态初始化的最大区别就是赋值和声明的过程,静态初始化声明与赋值在一起,但是动态初始化是先声明再进行赋值。同时还要注意数组名本身代表的是地址,在这个地方要尤为注意对值传递和址传递的区别。在堆空间中,如果在栈空间中没有存储该地址的变量的话,会自动将这一块申请出来的空间销毁,址传递可能会造成一个空间的消失,所以使用址传递和值传递的时候要尤为注意。与C语言数组不同的是,Java数组存在默认值,且非引用数据类型的初始默认值为null,对于C语言数组不存在初始默认值,里面是一个随机的数字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值