Day23--数组的使用
Day23--数组的使用
数组的使用:
1.For-Each循环
2.数组做方法入参
3.数组做返回值
三个小的例子
1.打印全部数组元素
2.计算所有元素的和
3.查找最大元素
package com.liu.www.array;
public class ArrayDemo03 {
public static void main(String[] args) {
int[] arrays={1,2,3,4,5};
//打印全部数组元素
for (int i = 0; i <arrays.length; i++) {
System.out.println(arrays[i]);
}
System.out.println("=========================================");
//计算所有元素的和
int sum=0;
for (int i = 0; i < arrays.length; i++) {
sum+=arrays[i];
}
System.out.println("所有元素的和是:"+sum);//15
System.out.println("=========================================");
//查找最大元素
int maxvalue=0;
for (int i = 0; i < arrays.length; i++) {
if(maxvalue<=arrays[i]){
maxvalue=arrays[i];
}
}System.out.println("最大的值是:"+maxvalue);
}
}
易错:
将 "\t" 写成 '\t',结果:
public class Exercise2 {
public static void main(String[] args) {
int[] arrays={1,2,3,4,5};
//打印全部数组元素
for (int array : arrays) {
System.out.print(array+'\t');//1011121314
}
}
}
为什么结果是这样?
-
"\t"是一个字符串。在 Java(以及许多其他编程语言)中,双引号用于表示字符串。字符串是一个字符序列,"\t"这个字符串里只包含一个字符,即制表符(Tab)。 -
'\t'是一个字符常量。单引号用于表示字符,它代表一个单一的字符,在这里也是制表符。在 Java 内部,字符是按照 Unicode 编码来存储的,'\t'对应的 Unicode 值是 9(在 ASCII 码中制表符也为 9)。 -
当执行
array + '\t'时,Java 会按照基本数据类型的加法运算规则来处理。在这里,array是int类型的变量,'\t'被当作int类型的值(也就是 9)参与运算。因为,'\t'是char类型的数字,int类型比char类型范围更大,低转高自动转换,就把char类型的转换为int类型的例如,当
array的值为 1 时,array + '\t'实际计算的是1 + 9,结果为 10;当array的值为 2 时,计算的是2 + 9,结果为 11,以此类推。
两个方法:
1.打印数组元素
package com.liu.www.array;
public class ArrayDemo04 {
public static void main(String[] args) {
//For-Each循环 快捷键:数组名.for
int[] arrays={1,2,3,4,5};
// for (int array : arrays) { //int array : arrays int元素: 数组名
// System.out.println(array);
// }
// printArray(arrays);//1 2 3 4 5 //输出数组每个元素,括号里面只写数组的名字就行
int[] reverse = reverse(arrays);
printArray(reverse);
}
//数组做方法入参
//打印数组元素
public static void printArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i]+"\t");
}
return 0; //“return 0;” 表示这个方法返回一个整数值 0
}
需要注意的点:
//当我写成了下面这样,是有点不对的
//1.打印数组元素
public static int printValue(int[] arrays){
for (int array : arrays) {
System.out.print(array+"\t");
}return 0;
}
为什么不对呢?
因为,这里只是简单的将数组元素输出,没有进行任何计算或者操作来生成一个真正有意义、需要返回给调用者的整数值。所以,返回值应该是void类型
所以,正确的是:
//修正后的打印数组元素方法
public static void printValue(int[] arrays) {
for (int array : arrays) {
System.out.print(array + "\t");
}
}
返回值int类型;
方法中,通过任何计算或者操作来生成一个真正有意义、需要返回给调用者的整数值。
2.反转数组
比如:将{1,2,3,4,5}换为{5,4,3,2,1}
//2.反转数组 比如:将{1,2,3,4,5}换为{5,4,3,2,1}
public static int[] reverseArray(int[] a){
if (a.length == 0) { //判断是否为空数组,数组长度为0
return new int[0];
}
int[] b=new int[a.length];
for (int i = 0,j=a.length-1; i < a.length; i++,j--) {
b[j]=a[i];
//i、j同时加减,不存在内循环进行完再从外循环继续进行的情况
}return b;
//易错点:return值要在方法括号里面!!!!!!!!!
出错的地方:
1.下面的是不对的
//2.反转数组 比如:将{1,2,3,4,5}换为{5,4,3,2,1}
public static int[] reverseArray(int[] a){
int[] b=new int[a.length];
for (int i = 0,j=a.length-1; i < a.length; i++,j--) {
b[j]=a[i];
}return b[];
}
易错点:
-
返回值是数组时,用return b[ ] ;×××××××
在
return b[];这里写法是错误的。应该直接写return b;,因为b已经是一个定义好的数组,不需要再添加方括号。
2.错误的地方:
// 2.反转数组
//比如:将{1,2,3,4,5}换为{5,4,3,2,1}
public static int[] reverseArray(int[] a){
int[] b=new int[a.length];
for (int i = 0,j = a.length-1; i < a.length;,j >=0; i++,j--) {
b[j]=a[i];
}
return b;
}
在循环条件部分,正确的语法应该是用 &&(逻辑与)来连接多个循环条件,而不是像这里直接用逗号分隔且后面的条件 j >= 0 前面多了一个分号。
正确的是:
// 2.反转数组
//比如:将{1,2,3,4,5}换为{5,4,3,2,1}
public static int[] reverseArray(int[] a){
int[] b=new int[a.length];
for (int i = 0,j = a.length-1; i < a.length&&j >=0; i++,j--) {
b[j]=a[i];
}
return b;
}

浙公网安备 33010602011771号