子目录网站,做环评工作的常用网站,做模具行业的网站,金华住房和城乡建设厅网站数组 数组#xff08;Array#xff09;#xff1a;相同类型数据的集合。 定义数组 方式1#xff08;推荐#xff0c;更能表明数组类型#xff09; type[] 变量名 new type[数组中元素的个数]; 比如#xff1a; int[] a new int[10]; 数组名#xff0c;也即引用a…数组 数组Array相同类型数据的集合。 定义数组 方式1推荐更能表明数组类型 type[] 变量名 new type[数组中元素的个数]; 比如 int[] a new int[10]; 数组名也即引用a指向数组元素的首地址。 方式2同C语言 type变量名[] new type[数组中元素的个数]; 如 int a[] new int[10]; 方式3 定义时直接初始化 type[] 变量名 new type[]{逗号分隔的初始化值}; 其中红色部分可省略所以又有两种 int[] a {1,2,3,4}; int[] a new int[]{1,2,3,4}; 其中int[] a new int[]{1,2,3,4};的第二个方括号中不能加上数组长度因为元素个数是由后面花括号的内容决定的。 数组运用基础 数组长度 Java中的每个数组都有一个名为length的属性表示数组的长度。 length属性是public final int的即length是只读的。数组长度一旦确定就不能改变大小。 equals() 数组内容的比较可以使用equals()方法吗 如下程序 public class ArrayTest
{public static void main(String[] args){int[] a {1, 2, 3};int[] b {1, 2, 3};System.out.println(a.equals(b));}
} 输出结果是false。 所以证明不能直接用equals()方法比较数组内容因为没有override Object中的实现所以仍采用其实现即采用实现equals()方法比较是否为同一个对象。 怎么比较呢一种解决方案是自己写代码另一种方法是利用java.util.Arrays。 java.util.Arrays中的方法全是static的。其中包括了equals()方法的各种重载版本。 代码如下 ArrayEqualsTest.java import java.util.Arrays;
public class ArrayEqualsTest
{//Compare the contents of two int arrayspublic static boolean isEquals(int[] a, int[] b){if( a null || b null ){ return false;}if(a.length ! b.length){return false;}for(int i 0; i a.length; i ){if(a[i] ! b[i]){return false;}}return true;}public static void main(String[] args){int[] a {1, 2, 3};int[] b {1, 2, 3};System.out.println(isEquals(a,b));System.out.println(Arrays.equals(a,b));}
} 数组元素不为基本数据类型时 数组元素不为基本原生数据类型时存放的是引用类型而不是对象本身。当生成对象之后引用才指向对象否则引用为null。 如下列程序 ArrayTest2.java public class ArrayTest2
{public static void main(String[] args){Person[] p new Person[3];//未生成对象时引用类型均为空System.out.println(p[0]);//生成对象之后引用指向对象p[0] new Person(10);p[1] new Person(20);p[2] new Person(30);for(int i 0; i p.length; i){System.out.println(p[i].age);}}
}
class Person
{int age;public Person(int age){this.age age;}
} 输出 null 10 20 30 也可以在初始化列表里面直接写 Person[] p new Person[]{new Person(10), new Person(20), new Person(30)}; 二维数组 二维数组是数组的数组。 二维数组基础 基本的定义方式有两种形式如 type[][] i new type[2][3];推荐 type i[][] new type[2][3]; 如下程序 public class ArrayTest3
{public static void main(String[] args){int[][] i new int[2][3];System.out.println(Is i an Object? (i instanceof Object));System.out.println(Is i[0] an int[]? (i[0] instanceof int[]));}
} 输出结果是两个true。 变长的二维数组 二维数组的每个元素都是一个一维数组这些数组不一定都是等长的。 声明二维数组的时候可以只指定第一维大小空缺出第二维大小之后再指定不同长度的数组。但是注意第一维大小不能空缺不能只指定列数不指定行数。 如下程序 public class ArrayTest4
{public static void main(String[] args){//二维变长数组int[][] a new int[3][];a[0] new int[2];a[1] new int[3];a[2] new int[1];//Error: 不能空缺第一维大小//int[][] b new int[][3];}
} 二维数组也可以在定义的时候初始化使用花括号的嵌套完成这时候不指定两个维数的大小并且根据初始化值的个数不同可以生成不同长度的数组元素。 如下程序 public class ArrayTest5
{public static void main(String[] args){int[][] c new int[][]{{1, 2, 3},{4},{5, 6, 7, 8}};for(int i 0; i c.length; i){for(int j 0; j c[i].length; j){System.out.print(c[i][j] ); }System.out.println();}}
} 输出 1 2 3 4 5 6 7 8转载于:https://www.cnblogs.com/mengdd/archive/2013/01/04/2844264.html