JavaSE day3:

JavaSE之数组的定义与使用 一、数组 1、基本概念:数组指的就是⼀组相关类型的变量集合,并且这些变量可以按照统⼀的⽅式进⾏操作。 2、数组初始化( 声明并开辟数组): 1)动态初始化(初始值为对应元素类型的默认值) 数据类型[] 数组名称 = new 数据类型[长度]; eg:int[] a = new int[3]; //开辟了一个长度为3的数组a,不建议定义int a[3]; 2)静态初始化 eg: int[] a = new int[]{1,2,3}; //开发中建议使用该完整格式 注释: *数组的访问通过索引完成,索引即下标; *如果访问超过索引访问,那么会产生"java.lang.ArrayIndexOutOfBoundsException"异常信息; *若数组未初始化,元素的值就是元素类型的默认值; *在Java中有⼀种动态取得数组长度的方法:数组名称.length; java中没有取地址&操作,想通过形参改变实参的值只能通过引用 3、引用传递 1)引用类型是个线索,用来找到堆中的真正数据 2)引用类型也是值传递,形参的改变不会影响实参 方法调用过程中(基本数据类型或引用数据类型),java都是值传递

示例代码如下: int[] x = null; //只定义了一个数组类型的引用变量,没有数组对象,即a没有指向任何数组 4、数组与方法互操作 用到的java库函数: import java.util.Arrays; //导入该“包”才能使用 1)Arrays.copyOf(int[] a,int newLength) public static int[] copyOf(in[] original,int newLength) 复制指定的数组,用零截取或填充(如有必要),以便复制具有指定的长度。对于原始数组和副本都有效的所有索引,两个数组将包含相同的值。对于在副本中而不是原件有效的任何索引,副本将包含0。当且仅当指定长度大于原始数组的长度时,这些索引才会存在。 参数:original -- 要复制的数组; newLength -- 要返回的副本的长度 2)Arrays.toString(int[] a) public static String toString(int[] a) 返回指定数组的内容的字符串表示形式。字符串表示由数组元素的列表组成,括在方括号( "[]" )中。相邻的元素由字符", "分隔(逗号后跟一个空格)。元素被转换为字符串由String.valueOf(int)。返回"null"如果a是null。 参数; a -- 要返回其字符串表示形式的数组 3)Arrays.fill(int[] a,int val) public static void fill(int[] a,int val) 将指定的int值分配给指定的int数组的每个元素 参数:a -- 要填充的数组; val -- 要存储在数组的所有元素中的值 4)Arrays.copyOfRange(int[] original,int from,int to) public static int[] copyOfRange(int[] original,int from,int to) 将指定数组的指定范围复制到新数组中.范围( from )的初始指数必须在零和original.length之间,包括左边界。original[from]的值被放置在副本的初始元素中(除非from == original.length或from == to)。from的范围( to )的最终指数可能大于original.length,在这种情况下0(整数类型的默认值)被放置在其索引值大于或等于(original.length - from)的副本的所有元素中。返回的数组的长度将为(to - from)。 参数:original -- 要从中复制元素的数组;from -- 要复制的范围的初始索引; to -- 要复制的范围的最终索引,不包括此边界 java.util.System; //无需导入(import)该“包”即可使用 1)System.arraycopy(int[] src,int srcPos,int[] dest,int destPos,int length) 将指定源数组src中的元素从指定位置srcPos复制lengtht个到目标数组dest的指定位置destPos 参数:src -- 源数组; srcPos -- 源数组中的起始位置; dest -- 目标数组; destPos -- 目标数组的起始位置; length -- 要复制的数组元素的数量 练习代码如下: 5、数组案例:数据统计 代码如下: 补充:四种形式的变量及存放位置 1)形参 2)局部变量 ----栈区 3)属性 ---堆区 4)静态属性 ---方法区