java中的一维数组和二维数组

一维数组

1、一维数组的声明方式

type[] arrayName; 或 type arrayName[];
下面以声明整型数组为例,其他同理。
声明整型数组的方式(笔者习惯第一种方式,二维数组以第一种方式书写)
int[] arr ;
int arr1[];

2、一维数组的创建

Java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型 [数组元素的个数]

// 创建数组,如果在创建的同时不初始化数组则必须指定其大小
int[] arr = new int[3];
// 错误的创建数组的方式,如果创建数组时不指定大小则必须初始化
// int arr1[] = new int[];
// 创建数组时,不指定数组大小则必须在创建的同时初始化数组
int arr1[] = new int[]{0,1,2};

3、一维数组的初始化

数组的初始化分为静态初始化、动态初始化和默认初始化:

静态初始化是数组在初始化时由程序员显式指定每个数组元素的初始值而数组长度由系统决定。
动态初始化是数组在初始化时只指定数组长度,由系统为数组元素分配初始值。
a、数组静态初始化的语法格式:
arrayName = new type[]{element1,element2,element3...}或者使用简化的语法格式:arrayName = {element1,element2,element3...}
b、数组动态初始化的语法格式:
arrayName = new type[length];

附:静态初始化时不能指定元素个数,而动态初始化时则必须指定元素个数。静态初始化时数组能够知道元素的个数所以不需要指定,而动态初始化时数组元素个数未知因此必须指定。
代码块如下:

// 静态初始化
int[] arr2 = new int[]{20,21,22};
// 静态初始化简化方式
int[] arr3 = {30,31,32};
// 动态初始化
int[] arr4=new int[3];
// 错误写法:静态初始化不能指定元素个数
//int[] arr5 = new int[3]{50,51,52};
// 错误写法:动态初始化必须指定元素个数
//int[] arr6 = new int[];

注:一维数组这一块记住两点,数组声明的时候是不能指定大小的,也就是说等号左边的中括号中不能包含数字。另外一旦使用new关键字那么肯定在内存中为数组分配了空间,则必然数组有默认值。数组是对象数据类型。不要静态初始化和动态初始化同时使用,也就是说不要再进行数组初始化时,既指定数组长度,也为每个数组元素分配初始值。

4.一维数组的简单测试

public class Arraydemo {
    public static void main(String[] args) {
        int[] arr = new int[2];
        System.out.println(arr[1]);
        arr[1]=1;
        System.out.println(arr[1]);
        arr=null;
        System.out.println(arr);
        System.out.println(arr[1]);
    }
}

这个代码有问题吗?答案是有的,报了空指针异常。给一下运行结果吧


Arraydemo的运行结果

推荐大家了解一下Java中的Null是什么? - CSDN博客

二位数组

1.定义

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵。

2.二维数组的初始化

代码表示如下:

int[][] arr={{1,2,3},{2,3,4},{3,4,5},{4,5},{5}};
int[][] arr1=new int[3][4];

3.嵌套for循环

文章链接:java中循环的几种方式
在这展示上篇文末没有写完的代码更容易理解,代码如下:

public class AArrayDemo1 {
    public static void main(String[] args) {
        int[][] arr= {{1,2,3},{2,3,4},{3,4,5},{4,5},{5}};
        for (int i=0;i<arr.length;i++){
            for (int j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
    }
}

运行结果如下图所示:


AArrayDemo1的运行结果

4.二维数组的求和计算

以AArrayDemo1的二维数组为例,求二维数组中的每一个一维数组的和,最后求出二维数组的和,代码如下:

public class AArrayDemo2 {
    public static void main(String[] args) {
        int[][] arr={{1,2,3},{2,3,4},{3,4,5},{4,5},{5}};
        int sum=0;
        int groupsum=0;
        for (int i=0;i<arr.length;i++){
            for (int j=0;j<arr[i].length;j++){
                groupsum+=arr[i][j];
            }
            System.out.println("第"+(i+1)+"个一维数组的和是"+groupsum);
            sum+=groupsum;
            groupsum=0;
        }
        System.out.println("二维数组的总和是"+sum);
    }
}

运行结果如下图所示:


AArrayDemo2的运行结果

给大家留个问题,可以亲自去试试

int[][] arr =new int[3][4];
System.out.println(arr[1][1]);
System.out.println(arr[1]);
System.out.println(arr);

System.out.println(arr[1][1])的运行结果是0。
System.out.println(arr[1])的运行结果是什么?
System.out.println(arr)的运行结果是AArrayDemo1的运行结果吗?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 1,614评论 0 9
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,614评论 4 12
  • 数组 JVM内存划分 A:内存划分 JVM对自己的内存划分为5个区域 * a: 寄存器:内存和CUP之间 * b:...
    quaner的诗和远方阅读 551评论 0 1
  • 别时吟 过往因有你, 烟花般璀璨夺目, 绽放于绚烂的夜空之中。 可要想稍稍靠近些许, 是多么可笑, 比海市蜃楼更缥...
    陈吟浅唱阅读 392评论 2 17
  • 你用35秒感动了上帝,他却让你用一生来还。你在马刺面前亲自导演了35秒13分的神迹,最后也是陪着马刺看完热火28秒...
    南海菠萝阅读 336评论 2 2