数组能够使用=声明+创建
int[] nums;
推荐这种写法int nums[];
这种写法也能用,是早期为了C或者C++程序员方便使用的创建的语法如下
可拆分成两行
结构:
上面的两行其实等于下面的一行
变量类型[] 变量名=new 变量类型[N];(按照这一行或者上一行写)
举例
比如int[] nums=new nums[10];
可拆分为int[] nums; nums = new int[20];
比如double[] data=new double[10];
可拆分为double[] data; data =new double[10];
常用知识点:
获取数组长度 数组名.length比如 nums.length
两种方式:静态初始化+动态初始化
int[] nums={1,2,3,4,5,6,7,8,9};
int[] b=new int[20];
b[2]=85;
小结:
数组是相同数据类型(可以是任何类型)的有序集合。
数组也是对象。数组元素相当于对象的成员变量。
数组长度是确定的,不可变的。越界报错out of bounds
举例
有一个已知数组,将其中的数组按顺序依次输出,找到数组中最大的那个data,并计算数组各项data的和。
public class testjan05 {
public static void main(String[] args) {
int n=0;
int [] nums = {122,466,46,776,887,676,5,6,7,8798,3235};
int max = nums[0];
int sum = nums[0];
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
if (nums[i]>max) max=nums[i];
sum +=nums[i];
}
System.out.println("max:"+max);
System.out.println("sum:"+sum);
}
}
输出结果:
122
466
46
776
887
676
5
6
7
8798
3235
max:8798
sum:15146
Process finished with exit code 0
IDEA里可以使用 数组名.for直接创建基于这个数组的for循环,方便打印输出这个数组的内容,但是这个方法不适用给数组的个别元素赋值。
比如键入 nums.for会生成
for (int num : nums) { //这里的nums就是数组,前面的num就是系统随便起的数组元素名字
System.out.println(num);//这句就能按顺序,快速输出数组的元素
}
作业练习:反转输出一个数组
下面列举了两种输出方法
import java.util.Scanner;
public class testjan05 {
public static void main(String[] args) {
int n=0;
int [] nums = {122,466,46,776,887,676,5,6,7,8798,3235};
for (int num : f_reverse(nums)) {
System.out.println(num);
}
System.out.println("下面是一般for方法输出的数组:");
for (int i = nums.length-1; i >=0; i--) {
System.out.println(nums[i]);
}
}
public static int[] f_reverse(int[] rev_in) {
int [] rev_out = new int[rev_in.length];
for (int i = 0; i < rev_in.length; i++) {
rev_out[rev_in.length-1-i]=rev_in[i];
}
return rev_out;
}
}
输出结果
3235
8798
7
6
5
676
887
776
46
466
122
下面是一般for方法输出的数组
3235
8798
7
6
5
676
887
776
46
466
122
Process finished with exit code 0
Arrays类
定义一个4行5列的数组
int [][] nums ={{1,2,3,4,5},{11,22,33,44,55},{21,22,23,24,25},{31,32,33,34,35}};
举例
public class testjan05 {
public static void main(String[] args) {
int [][] nums={{1,2,3,4,5},{11,12,13,14,15},{21,22,23,24,25},{31,32,33,34,35}};
System.out.println(nums[2][1]);//22
}
}
/**相当于4行5列,如下图所式,注意数组的下标是从0开始的
* \[0],[1],[2],[3]
* [0]01,02,03,04,05
* [1]11,12,13,14,15
* [2]21,22,23,24,25
* [3]31,32,33,34,35
*/
输出结果
22
Process finished with exit code 0
补充,打印一个数组,也可以使用快捷命令
System.out.println(Arrays.toString(数组名称));
比如对于上面的二维数组,使用下面的命令
System.out.println(Arrays.toString(nums[1]));
即可输出
[11, 12, 13, 14, 15]
Process finished with exit code 0