《疯狂Java讲义(第3版)》.(李刚)——数组

来源:互联网 发布:东方财富mac 编辑:程序博客网 时间:2024/05/21 22:10

1、数组

1)简介:数组也是一种数据类型,它本身是一种引用类型。一旦数组初始化完成数组所占用的空间将被固定下来,因此数组的长度不可变。即使数组清空,它所占的空间依然保留,属于该数组。数组既可以存储基本数据类型也可以存储引用类型,只要所有数组元素具有相同类型即可。

2)定义数组:
[1]方式1(推荐,更能表明数组类型)
  类型 [] 变量名 = new 类型 [数组中元素的个数];
  比如:
  int[] a = new int[10];
  数组名,也即引用a,指向数组元素的首地址。
[2]方式2(同C语言)
  类型 变量名[] = new 类型 [数组中元素的个数];
  如:
  int a[] = new int[10];
[3]方式3定义时直接初始化
  类型 [] 变量名 = new 类型 []{逗号分隔的初始化值};
  其中红色部分可省略,所以又有两种:
  int[] a = {1,2,3,4};
  int[] a = new int[]{1,2,3,4};
  其中int[] a = new int[]{1,2,3,4};的第二个方括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。

3)数组运用基础
[1]数组长度
  Java中的每个数组都有一个名为length的属性,表示数组的长度。
  length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小。
[2]数组比较

自定义数据equals

package com.alex.demo04;import java.util.Arrays;/** * Description <br> * 网站:<a href= "http://blog.csdn.net/qq_32347977">Alex的博客</a>  * <br> * <br> * <br> * <br> *  * @author Alex * @version 1.0 */public class ArrayEqualsTest{    /**     * 比较俩个数据     * @param a     * @param b     * @return     */    public 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;    }    /**     * 主方法,程序的入口     *      * @param args     */    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));    }}

[3]非基本数据类型数组

package com.alex.demo04;/** * Description <br> * 网站:<a href= "http://blog.csdn.net/qq_32347977">Alex的博客</a>  * <br> * <br> * <br> * <br> *  * @author Alex * @version 1.0 */public class ArrayTest2{    /**     * 主方法,程序的入口     *      * @param args     */    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;    }}

输出结果:

这里写图片描述

3)二维数组

[1]基本的定义方式有两种形式,如:
  类型 [][] i = new 类型[2][3];(推荐)
  类型 i[][] = new 类型[2][3];

package com.alex.demo04;/** * Description <br> * 网站:<a href= "http://blog.csdn.net/qq_32347977">Alex的博客</a>  * <br> *  * @author Alex * @version 1.0 */public class ArrayTest3{    /**     * 主方法,程序的入口     *      * @param args     */  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[]));  }}

这里写图片描述

[2]变长的二维数组

二维数组的每个元素都是一个一维数组,这些数组不一定都是等长的。声明二维数组的时候可以只指定第一维大小,空缺出第二维大小,之后再指定不同长度的数组。但是注意,第一维大小不能空缺(不能只指定列数不指定行数)。

package com.alex.demo04;/** * Description <br> * 网站:<a href= "http://blog.csdn.net/qq_32347977">Alex的博客</a>  *  * @author Alex * @version 1.0 */public class ArrayTest4{    /**     * 主方法,程序的入口     *      * @param args     */    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];    }}

二维数组也可以在定义的时候初始化,使用花括号的嵌套完成,这时候不指定两个维数的大小,并且根据初始化值的个数不同,可以生成不同长度的数组元素。

package com.alex.demo04;/** * Description <br> * 网站:<a href= "http://blog.csdn.net/qq_32347977">Alex的博客</a>  *  * @author Alex * @version 1.0 */public class ArrayTest5{    /**     * 主方法,程序的入口     *      * @param args     */    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();        }    }}

这里写图片描述

数字中问演示和五子棋大家自行联系完成吧!

0 0
原创粉丝点击