Java:数组详解 - 数组语法糖 - 初始化值 - 多维 - 基本操作

#数组

  所谓数组,是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种数据形式,这些按一定顺序排列的同类型数据的集合称为数组。而数组中的每一个数据称之为数组元素,数组中的元素以索引来表示其存放的位置,索引从0开始,步长是1,有点像Excel表格的行号,逐行递增。

###数组的定义:

方式1:数组元素的类型[] 数组名;例: int[] args;(推荐)
方式2:数组元素的类型 数组名[];例: int args[];

数组必须初始化,才能使用,因为初始化表示在内存中分配空间。

###初始化数组的两种方式:

1.静态初始化
2.动态初始化

无论以哪种方式初始化数组,一单初始化完成,数组的长度就固定了,无法改变,除非重新初始化,也就是说数组是定长的。

###数组的静态初始化操作

特点:由我们自己来为每一个数组元素设置初始化值,而数组的长度由系统决定。
语法:数组元素类型[] 数组名 = new 数组元素类型[]{元素1,元素2,....};

###简单写法:

数组元素类型[] 数组名 = {元素1,元素2,....};
注:简单写法,必须声明之后,立刻进行初始化,用来存储数据

###数组的动态初始化操作:

特点:由我们来设置数组的元素个数(数组长度),而每一个数组元素的初始值由系统决定。
语法:数组元素类型[] 数组名 = new 数组元素类型[length];

###不同数据类型的初始值

类型初始化
byte , short , int0
long0L
float0.0F
double0.0D
booleanfalse
char'\u0000'(表示空)
引用数据类型null

数组基本操作

  1. 获取元素:数组类型 变量 = 数组名[index];
  2. 设置元素:数组名[index] = 值;
  3. 遍历数组元素:建议使用 for 循环(实现已知循环的次数)
  4. 数组长度:int len = 数组名.length;(length 是属性,不是方法)
  5. 索引范围:从 0 开始,逐一递增 [0,数组名.length - 1]

####操作数组常见异常:

NullPointerException:空指针异常(空引用异常)。原因,当数组还未被初始化,就直接操作数组。

ArrayIndexOutOfBoundsException:数组索引越界异常

####打印数组元素:
直接打印数组的时候,打印出来的是 hashCode 的十六进制值

####数组的语法:

数组中元素类型[] 数组名;
例 int[][] array = new int[][];
一维数组:数组中每一个元素都是一个值(基本类型和引用类型的值)。
二维数组:数组中每一个元素都是一个一维数组。
三维数组:数组中每一个元素都是一个二维数组。

PS:严格上说,在 Java 中不存在多维数组的概念,和 C 语言作区分,一般称之为数组中的数组。(C 语言的数组相当于矩阵)

  在使用循环迭代数组的时候,往往是不关心迭代变量(数组的索引)
从 Java5 开始(JDK1.5),Java 提供了一种新的语法,增强for循环(foreach)
####语法:

for(数组元素类型 变量 : 数组名){
	循环体
}

  通过反编译工具查看字节码,会发现 foreach 其实在底层依然使用 for 循环 + 索引来操作数组。
增强for循环,称之为编译器的新特效–>语法糖

方法的可变参数:Java5 的另一个新特性
####语法:

修饰符 返回值类型 方法名(参数类型 ... 形式参数)

方法的可变参数,其实也是一个语法糖,编译器级别的新特性,让开发者写代码更简单。
方法的可变参数其底层就是一个数组类型:证明方法如下:

1.在方法中打印参数名,会得到一个十六进制hashCode值
2.构造一个同名的数组方法,编译器报错(方法重复)
3.利用反编译工具反编译,会看到编译后的代码

注:可变参数必须作为方法的最后一个参数,避免参数的歧义性。
推论:方法最大只有一个可变参数。

  定义一个数组的拷贝方法,能支持任意类型的数组元素拷贝操作(反射),数组拷贝操作,是经常使用到的,SUN 就直接把数组的拷贝操作存放在 JDK 中的 System 类中(src.zip/java/lang)

public static native void arraycopy(Object src,int srcPos,Object dest,int destPos,ini length);

  Object : Java 语言中的根类,Object 可以表示任意数据类型,该方法没有方法提,该方法使用了 native 修饰符(本地方法),该方法底层使用 C/C++ 语言实现了功能,Java 直接调用其他语言编写好的功能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值