数组的长度
获取一个数组的长度:格式:
数组的名称+length
数组一旦被创建,程序运行期间,其长度不可以改变
*/
public class ZY01 {
public static void main(String[] args) {
int[] arrayA={1,2,3};
int[] arrayB=new int[3];
int len=arrayA.length;
System.out.println("您得到的数组的长度是:"+len);
System.out.println("============");
int[] arrayc=new int[3];
System.out.println(arrayc.length);
arrayc=new int[5];
System.out.println(arrayc.length);
}
}
运行截图:
运行截图一个是3,一个是5,因为我们new了两个数组(具体代码和解释如下:)
int[] arrayc=new int[3];
System.out.println(arrayc.length);
arrayc=new int[5];
System.out.println(arrayc.length);
数组的遍历输出
遍历数组:说的是对数组中的每一个元素进行逐一、挨个的处理,默认的处理方式打出
*/
public class ZY01 {
public static void main(String[] args) {
int[] arrayA={1,2,3,4};
for(int i=0;i<3;i++){//这里不改就少一个
System.out.println(arrayA[i]);
}
System.out.println("================");
int len=arrayA.length;//长度,能自动的告诉你有多少个
for(int i=0;i<arrayA.length;i++){
System.out.println(arrayA[i]);
}
}
}
/*
数组的最大值最小值
实现的思路(以最大值为例,最小值则实现的思路与最大值相反):
- 定义变量,保存数组0索引上的元素
- 遍历数组,遍历数组中的每个元素
- 将遍历的数组与索引的数组比较
- 如果数组的数大于了数组的值,就记录新的变量值
- 数组循环遍历,最后变量中保存的值就是最大值
这里我们用火柴人比武打擂台赛来讲解
- 首先有五个火柴人,战斗力分别是5,15,30,20,100
- 接着摆个擂台,从0号元素战五渣开始,战五渣不需要给自己比,(for循环里面int i=0;)
-
然后从二号火柴人依次比武,设牛掰谁留下,最后的那位是老大。(for循环+if语句)
(1)
(2)
(3)
(4)
*/
public class ZY01 {
public static void main(String[] args) {
int[] array={5,15,30,20,100};
int max=array[0];//摆一个擂台,战五渣先上,战五渣不需要给谁比(也就是数组里的0号元素)
for(int i=1;i<array.length;i++){ //如果这里i=0的也对(常规操作战五渣不能跟战五渣自己打,不然战五渣就成了智五渣了)
if(array[i]>max){ //如果当前元素比现有的max大,那么就要换成当前元素
max=array[i];
}
}
System.out.println("最大值:"+max);
System.out.println("======================");
int min=array[0];
for(int i=1;i>array.length;i++){
if(array[i]>min){
min=array[i];
}
}
System.out.println("最小值:"+min);
}
}
运行截图:
/*
数组元素的反转
(这是要掌握的总图,下面是分解)
(1)数组元素的反转其实就是对称位置的元素交换
(2)通常数组遍历的时候只需要一个索引,现在位置对换需要连个索引
int min=0;(初始长度)
int max=array.length-1;(长度-1)
(3)如何交换变量
int a=10;
int b=20;
==============
int tmp=a;
a=b;
b=tmp; (交换的步骤)
关于转换的图解:(奇数项)
(1)min和max对称
(2)都迈一步,元素交换,当元素交换的
(3)(如果再往前min和max会相撞,此时min和max都指向【2】,所以要考虑什么时候停止交换[解决方法参考第四点])
关于转换的图解:(偶数项)
上图如果再走就会擦肩而过,接着交换,就会把原本交换好的数在交换回来(如下图),
因此以上两种情况都要考虑什么时候停止交换,什么时候应该交换,具体交换条件如下:
(4)什么时候停止交换:
1)min==max;
2)min>max;
什么时候应该交换
1)min<max;
*/
public class ZY01 {
public static void main(String[] args) {
int[] array={1,2,3,4,5};
//遍历打印数组本来的样子
for(int i=0;i<array.length;i++){
System.out.println("正常打印的结果:"+i);
}
System.out.println("==============:");
/*
初始化语句:int min=0,max=array.length-1
条件判断:min<max
步进语句:min++,max--
循环体:三变量倒手
*/
for(int min=0,max=array.length-1;min<max;min++,max--){
int tmp=array[min];
array[min]=array[max];
array[max]=tmp;
}
for(int i=0;i<array.length;i++){
System.out.println("交换后打印的结果:"+array[i]);
}
}
}
运行结果图:
第二张代码的写法可能更好理解:
Java中内存的划分和数组的内存图