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 会按照基本数据类型的加法运算规则来处理。在这里,arrayint 类型的变量,'\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[];
    }

易错点:

  1. 返回值是数组时,用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;
    }
posted @ 2024-10-24 17:01  1hahahahahahahaha  阅读(20)  评论(0)    收藏  举报