1.输入
2.一维数组的定义与使用
3.数组是引用类型
4.二维数组
1.输入
我们先回想C语言当中如何输入,一般使用scanf进行数据的输入。而在Java中,输入这个操作要更加繁琐。
首先,我们先输入Scanner+enter,进行导包这个操作。至于什么是包,什么又叫导包,我们后面在类和对象中再进行了解。现阶段我们只需要进行Scanner+enter这个输入就可以了,Java会帮助我们自动导包。当导包成功后,我们代码顶上会出现这个包:
而后,我们在Scanner后面加上这样一行代码:
Scanner scan=new Scanner(System.in);
我们可以记忆为固定格式,这样,我们就可以利用scan关键字进行输入的操作。因为可以输入的数据类型有很多,我们就举几个例子:
1)String a=scan.nextLine();->读入一行
2)int b=scan.nextInt();->读入一个整形
当我们需要输入的数据不同,scan.后面的便也不同,读者可以自行摸索,我们也可以通过帮助手册进行搜索,查找我们的需要。这里我们选取一些
当我们输入完成的时候,最后要加一行scan.close();进行资源的关闭。
2.一维数组的定义和使用
在C语言中,我们数组的创建是这样的:
int arr[5]={0,1,2,3,4};
在java中,数组的定义略有不同,有三种方式进行创建。其中一种是与C语言完全相同,在Java中也能用上一行的代码进行创建,但Java中一般不会这么写。那么我们来介绍另外两种创建方式:
1)int[]arr2=new int[10];->创建了一个大小为十的数组
2) int[]arr3=new int[]{0,1,2,3,4};->创建了一个元素为0,1,2,3,4的数组
那么,arr2并没有初始化,那么此时这个数组中存放的是多少呢?同样,如果我们定义一个char数组呢?boolean数组呢?我们可以通过调试进行观察。
我们能看到,当我们并未进行初始化时,int型存放的都是0;double型存放的是0.0,同样short long 可以以此类推。而需要注意的是,char类型数组每一个元素存放的是\u0000,布尔型数组存放的全部是false,这是需要我们记住的。
我们可以通过使用循环遍历数组。在C语言中我们用sizeof(arr)/sizeof(arr[0])进行数组长度的计算,但在Java中,我们只需要通过 数组名.length 就可以得到数组的长度,更加方便。下面我们利用这两点对数组进行输出:
int[]arr=new int[]{0,1,2,3,4};
int i=0;
for(i=0;i<arr.length;i++){
System.out.println(arr[i]);
这样我们就能够输出这个数组:
3.数组是引用类型
数组是一种引用类型。当我们创建出int[]arr1=new int[]{0,1,2,3,4}这样一个数组的时候,它代表着arr1这个引用指向了这样一个数组对象,指向了0的地址。那么,下面这行代码又是什么意思呢?
int[]arr2=arr1;
这代表着当前这个数组对象有两个引用正在指向,即这两个引用同时指向了一个对象。那么,当我们通过arr1对数组的元素进行改变时arr2也会进行改变,反之一样,因为他们本质指向了同一个对象。这里我们需要注意,引用不可以指向引用,arr2仅仅指向了arr1这个引用所指向的对象。
当一个对象再没有引用指向它了,那么JVM会自动将它回收掉。
下面我们一起来认识NULL
int[]arr3=null;
这代表arr3这个引用并不指向任何对象。arr3并没有长度,那么如果强行输出arr3长度,会出现什么呢?
int[]arr3=null;
int a=0;
a=arr3.length;
System.out.println(a);
当我们运行起来,会发现Java报了异常,这个异常叫空指针异常,Java中不存在 指针的概念,它仅仅表示这个null没有长度可言。
4.二维数组
二维数组可以简单理解为用一维数组为元素组成的一维数组,具体有如下创建方式:
1)int[][]arr1={{1,2,3},{4,5,6},{7,8,9}};
2)int[][]arr2=new int[2][2];
而创建后未初始化时数组中的元素与一维数组完全一样。我们用arr[0].length访问列的长度,即有几列,用arr.length访问行的长度,即有几行。
当我们在Java中写不规则数组时,列可以省略,但行不能省略。