JavaSE—数组(一维)
如果我们的数据有很多,要一个一个的去定义就很麻烦,Java提供了数组来定义一组的数据。
一维数组
数组是把相同数据类型的数据按照一定的顺序组织起来的一组长度固定的数据。
上述有几个注意点:
相同数据类型、有顺序、长度固定。
数组的使用:
1.声明数组(确定数据类型(支持任意数据类型)和数组名称);
2.为数组分配空间(确定长度);
3.赋值(确定数据);
4.数组的使用(可修改数据等)。
如:声明一个存放int数据类型的数组,里面放10个数据,值为1,2,3,4,5,6,7,8,9,10,我想输出所有的数据看看,以及我想把第五个数据+1,再输出现在数据的内容。
我们一步步的实现这个需求:
1.声明数组
声明数组有两种方式,一种是数据类型[] 数组名,另外一种是数组类型 数组名 [](此种方式与c/c++一致),推荐使用第一种。
//声明一个int类型的数组,我们取名字为nums
int[] nums;
我们已经知道了,在mian方法里的变量是需要赋初始值才可以使用的,所以现在这个仅声明的数组没什么可以操作的。
2.为数组分配空间
之前是定义了一个变量就直接赋值,但是现在是一组的数据,不难理解,我们最起码得知道有多少个数,才知道要赋多少个值对吧。
重点:我们使用new关键字来为数组分配空间。
语法:数组变量 = new 数据类型[数据长度]
注意:声明的是什么类型就必须分配什么类型的空间!否则程序会报错!
也必须分配空间!否则也会报错!
//为数组分配10个空间
nums = new int[10];
这样就为数组分配了10个int类型数据的空间了,我们现在来试试看能不能输出nums呢?我们尝试写一下输出代码,发现没有报错:
那么输出结果是什么呢?
我们可以看到,这里是一串看不懂是什么意思的字符串,这里的话就需要我们知道:数组是除了八大基本数据类型之外的
另外一种数据类型,引用数据类型,直接打印数组名,输出的是该数组的hashCode(哈希码值),理解为地址。
3.for循环遍历数组
既然我们之前都说了,变量没有赋值是不能使用的,那现在为什么可以输出呢?难道之前的结论是错误的?我们尝试着打印一下现在的这个数组,如果我们要打印一个数组,肯定就要一个一个的去输出对吧,那一个一个,是不是想到了循环呢?对,我们可以使用循环输出数组,那我们需要告诉for,我要把这个数据从第一个数据依次输出到最后一个,所以初始变量就是第一个数据,迭代就是每次打印下一个数据,终止条件就是输出了这个数组的全部数据,即输出了这个数组的长度那么多个数据。
数组的长度怎么知道呢?我们可以直接使用数组.length,就可以知道数组的长度啦!
数组长度:数组.length
我们来验证一下,直接在main中输出:
System.out.println(nums.length);
查看一下结果,的确为10
那怎么确定第几个数据呢?在Java中,使用数组[下标]来确定是第几个元素,但是,该下标是从0开始的!
确定第几个数据:数组[下标]
下标为整型数据,从0开始!!!即数组[0]代表的是第一个数据,可以推出,最后一个数据的下标是length-1。
这个很重要!!!一定不要记错,再说一次,数组的下标从0开始
知道了这些,我们就可以使用for去循环遍历数组了!
//通过数组下标的方式,使用for循环遍历数组
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+"\t");
}
我们查看一下循环遍历的结果:
结果居然输出了0!
没错,Java中的数组在未赋值前是有默认值存在的,这说明我们之前的结论还是对的。
数组中不同数据类型的默认值:
整型:0
浮点型:0.0
char:''
布尔值:false
引用数据类型:null(空)
4.为数组赋值
从上述内容,我们已经知道了可以使用数组的下标去访问数组的数据,同样的,我们也可以通过数组的下标去给数组的数据赋值,我们继续解决那个需求,赋值为1,2,3,4,5,6,7,8,9,10,再遍历输出数组,验证结果。
//为数组赋值,此处也可以使用for循环进行赋值操作
int num = 1;
for(int i = 0;i<nums.length;i++){
nums[i]= num;
num++;
}
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+"\t");
}
5.操作数组
继续需求,将第五个数的值+1,第五个值,即下标为4
//操作数组
nums[4] = nums[4] + 1;
扩展:
如果我们一不小心操作的数据比数组的长度要大呢?我们一不小心多按了一个4;
可以发现,虽然有提示,但是是不会报错的:
我们运行一下,看看会怎么样:
运行的时候出现了错误,大概翻译一下为:在main里有异常,数组下标超出边界异常,下标44超过了长度为10的范围。
所以,一定要注意:数组的操作一定要在其长度范围内,操作了数组长度外的数据,会报数组下标越界的异常!
6.for增强遍历数组
Java中提供了一种更简便的方式遍历数组:
语法:for(与要遍历的数组一样的数据类型 自己取一个名字:要遍历的数组){
System.out.print(自己取的名字);
}
for (int temp : nums) {
System.out.print(temp + "\t");
}
我们来查看结果,看看第五个数5是否变成了6?
结果符合了要求。
至此,我们也完成了整个需求,也完成了Java中一维数组的学习。
7.边声明边分配空间
我们之前声明基本数据类型变量的时候是可以直接赋值的,那数组可不可以呢?答案当然是可以的。并且我们一般来讲都是使用该方式!
语法:数据类型[] 数组名 = new 数据类型[长度]
8.边声明边分配空间边初始化值
语法:数据类型[] 数组名 =
水平有限,若有错误请指出~在此先谢过啦!