“本文部分内容摘自《java语言程序设计》,郭克华主编。转载请标明出处。后期不定时跟新。
一、结合代码,讲解概念
解析:
(1)要使用一个东西,先要给他一个“名分”——定义
以main方法入口,首先定义一个数组,如上: int[] arr = new int[100];
注意格式可以概括为:type arrayName = new type[arraySize]
以上代码,创建了一个数组,并定义了该数组的长度 arraySize
(2)正名后可以名正言顺的“使用”
此时的数组还是一张白纸,各元素默认为0;你需要根据实际情况给它——赋值
看代码:arr[1] = 10; 注意下标始终是从0开始的。
通过观察两次打印结果,感受前后赋值的的变化。
“千里之行,始于足下”,恭喜,咱们跨出了这第一步。加油,自己!
关于概念,自行百度。我自己是记3个词:有序,同类型,集合
二、小例子
(1)、利用数组计算出 1~1000累加。
/**
* 利用数组快速算出1+2+3+...+1000
*/
public class ArrayTest1 {
public static void main(String[] args){
int[] arr = new int[1000];
int sum = 0;
// 代码优化,这样就只需要计算一次 arr.length
int length = arr.length;
for (int i = 0 ; i < length; i++){
arr[i] = i+1;
}
System.out.println(arr[10]);
for (int i = 0; i <length;i++){
sum += arr[i];
}
System.out.println("sum = " +sum);
}
}
解析:最后需要输出的是 sum,即:sum = 1+2+...+ arr[i] +...+1000,所以就需要知道 i 在任何值时,所对应的 arr[i] 的值。
即找到 arr[i] 与 i 的对应关系 以及 i 变化规律。
1、i 为下标 ,初始值为 0
2、arr[i] 为单个元素,sum为结果
3、arr[i] = i+1——遍历for循环
4、此处有个小小的代码优化:将 int length = arr.length 提出来,避免俩次计算时耗。
5、将下面代码可以替换
for (int i = 0; i <length;i++){
sum += arr[i];
}
...
for (int e : arr){
sum += e;
}
System.out.println(sum);
...
(2)、判断一个数组中是否含有正数元素
public class ArrayTest2 {
public static void main(String[] args){
int[] arr = new int[]{1,2,3,4,1,-1};
boolean flag = true;
for (int i : arr){
if (i<=0){
flag = false;
}
}
System.out.println(flag?"都是正数":"哟,还有负数!");
}
}
步骤:
1、定义一个数组,列出元素内部情况。
2、立一个flag,初始为 true
3、for循环中套 if 判断语句。
——for 语句中 遍历i,i不断变化,每一次变化都回判断,当达到判断句的条件时,改变flag的值。执行下面的输出语句。
4、最后的输出直接插入了 条件运算符 语句。
(3)二维数组小例子
//二维数组
public class ArrayTest3 {
public static void main(String[] args){
int[][] arr = new int[][] {{1,2,3},{100},{12,43}};
for (int i = 0;i<arr.length;i++){
for (int j = 0;j < arr[i].length;j++){
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
数组中套数组,不同处就是 数组呈现形式。
定位二维数组某个元素如下图,注意代码放置位置不同输出结果不一样,要考虑到for循环的范围。
注意:i、j 的限定条件。
此处 arr[1][0] 结果输出:100。
引: int[][] arr = new int[3][5];
定义一个二维数组,此处为 3个一维数组,每个一维数组有5个元素。实际上就是一个 3行 5列的矩阵。
(4)、这里有坑
public class ArrayTest4 {
public static void main(String[] args){
// 内存中开辟一块空间,保存一个数组,arr1 指向该数组地址
int[] arr1 = new int[]{1,2,3};
// 同上
int[] arr2 =new int[]{23,42,4334};
// arr2的指向地址变化为跟 arr1 相同
arr2=arr1;
// arr2所指向的数组,下标为0的元素发生变化,arr1随之变化
arr2[0]=90;
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
System.out.println(arr1[0]);
}
}
//输出结果:
90
2
3
90
(后续不定时添加内容)