Java学习笔记06

Java学习——Java语法基础03(数组)


一、概述

Java的数组 概述:
数组是相同数据类型的多个数据的容器。
这些元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素。(“简单理解就是:一个跟一个顺序排列”)。

数组具有如下三个基本特性:

  1. 一致性:数组只能保存相同数据类型元素,元素的数据类型可以是任何相同的数据类型。
  2. 有序性:数组中的元素是有序的,通过下标访问。
  3. 不可变性:数组一旦初始化,则长度(数组中 元素的个数)不可变。

数组可以分为:一维数组和多维数组。

二、一维数组

当数组中每个元素都只带有一个下标时,这种数组就是“一维数组”。数组是引用数据类型,引用数据类型在使用之前需要做两件事情:声明和初始化。

(1). 数组声明

数组的声明就宣告这个数组中元素类型,数组的变量名。数组声明完成后,数组的长度还没有确 定,JVM还没有给元素分配内存空间。

声明语法

元素数据类型[] 数组变量名;		(推荐)
元素数据类型 数组变量名[];

例:

int intArray[]; 
float[] floatArray;
String strArray[]; 
Date[] dateArray;

(2). 数组初始化

声明完成就要对数组进行初始化,数组初始化的过程就是为数组每一个元素分配内存空间,并为每一个元素提供初始值。初始化之后数组的长度就确定下来不能再变化了。
数组初始化可以分为静态初始化和动态初始化

1. 静态初始化

静态初始化就是将数组的元素放到大括号中, 元素之间用逗号 , 分隔。
例:

String[] strArray; 
//静态初始化Stirng数组 
strArray = {"abc","asda","1231","hello"}; 

//声明同时初始化数组 
int intArray[] = {21,32,43,45}; 

静态初始化是在已知数组的每一个元素内容情况下使用的。很多情况下在编程时不知道元素有多少,更不知道元素的内容,此时可采用动态初始化。

2. 动态初始化

动态初始化使用new运算符分配指定长度的内存 空间

语法:

new 元素数据类型[数组长度] ;

//或是new运算符分配内存后直接赋值
数据类型[] 数组名称 = new 数据类型[]{内容 1,内容 2,内容 3...内容 n};

例:

//声明数组
int Array[];

 // 动态初始化int数组 ,new 运算符分配内存
Array = new int[4]; 

//给数组第一个元素赋值
Array[0] = 21;

而new分配数组内存空间后,数组中的元素内容是给的数组类型的默认值, 不同类型默认值是不同的。
在这里插入图片描述

数组的长度获取 及 注意事项

数组名称.length
数组未赋值: 空指针异常
超出长度的下标操作: 数组越界异常
注意:数组的长度在创建时就固定了


三、多维数组

当数组中每个元素又可以带有多个下标时,这种数组就是 “多维数组” 。主要了解二维数组。

(1). 二维数组声明

三种形式的语法:

元素数据类型[][] 数组变量名; 
元素数据类型 数组变量名[][]; 
元素数据类型[] 数组变量名[];

例:

int[][] array1; 
int array1[][]; 
int[] array1[];

(2). 二维数组的初始化

二维数组的初始化也可以分为静态初始化和动态初 始化。

1. 静态初始化

二维数组静态初始化如一维数组般,仅是简单赋值。
例:

int intArray[][] = { { 1, 2, 3 }, { 11, 12, 13 }, { 21, 22, 23 }, { 31, 32, 33 } }; 

结构图
在这里插入图片描述

2. 动态初始化

语法:

new 元素数据类型[高维数组长度] [低维数组长度] ;

高维数组就是最外面的数组,低维数组是每一 个元素的数组。

定义:

int[][] intArray = new int[4][3];

例:

public static void main(String[] args) {
		
		// 静态初始化二维数组 
		int[][] intArray = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } }; 
		
		// 动态初始化二维数组 
		float[][] floatArray = new float[4][3]; 
		
		// 计算数组intArray元素的平方,结果保存到floatArray 的对应位置
		for (int i = 0; i < intArray.length; i++) {
			for (int j = 0; j < intArray[i].length; j++) {
			
				// 计算平方
				floatArray[i][j] = intArray[i][j] * intArray[i][j];
			} 
		}
		
		//先将intArray数组打印出来
		System.out.println("输出 intArray 数组");
		for (int i = 0; i < intArray.length; i++) { 
			for (int j = 0; j < intArray[i].length; j++) { 
				System.out.printf("[%d][%d] = %d", i, j, intArray[i][j]); 
				System.out.print('\t'); 
				}
			System.out.println(); 
			}
		
		// 打印数组floatArray 
		System.out.println("\n输出 floatArray 数组");
		for (int i = 0; i < floatArray.length; i++) { 
			for (int j = 0; j < floatArray[i].length; j++) { 
				System.out.printf("[%d][%d] = %f", i, j, floatArray[i][j]); 
				System.out.print('\t'); 
				}
			System.out.println(); 
			}
		}

运行结果:
在这里插入图片描述

四、不规则数组

由于Java多维数组是数组的数组,因此会衍生出一种不规则数组,规则的4×3二维数组有12个元素, 而不规则数组就不一定了。如下代码静态初始化了 一个不规则数组。

例:

int intArray[][] = { { 1, 2 }, { 11 }, { 21, 22, 23 }, { 31, 32, 33 } }; 

而动态初始化不规则数组比较麻烦,不能使用 new int[4][3]语句,而是先初始化高维数组,然后再分别逐个初始化低维数组。

例:

int intArray[][] = new int[4][]; //先初始化高维数组为4
//逐一初始化低维数组 
intArray[0] = new int[2]; 
intArray[1] = new int[1]; 
intArray[2] = new int[3]; 
intArray[3] = new int[3];

以上数组初始化后,并不是存在 3X4 个元素,而是9个元素
下标如:
在这里插入图片描述

不规则数组不常用,所以访问之类的问题暂不探究。

总结

开始接触数组的定义及使用,方便之后许多数据的存储与访问。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值