day07

方法的重载

  • 规则:

    • 方法名必须相同

    • 参数列表必须不同(个数不同、类型不同、参数排列顺序不同)

  • 实现理论:

    • 方法名称相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错

package com.baidu.method;
​
import javax.xml.transform.Result;
​
public class M2 {
    public static void main(String[] args) {
        int max = max(99, 99);
        System.out.println(max);
    }
        //比较大小
    /*
    方法重载:方法名称相同
    参数列表不同(个数不同,类型不同,参数列表顺序不同...)
     */
​
        public static int max(int a,int b){
        int result=0;
​
​
            if (a==b){
                return 0;//终止方法
            }
            if (a>b){
                result=a;
            }else {
                result=b;
            }
            return result;
​
        }
​
    public static double max(double a,double b){
        double result=0;
​
​
        if (a==b){
            return 0;//终止方法
        }
        if (a>b){
            result=a;
        }else {
            result=b;
        }
        return result;
​
    }
​
    public static double max(double a,double b,double c){
        double result=0;
​
​
        if (a==b){
            return 0;//终止方法
        }
        if (a>b){
            result=a;
        }else {
            result=b;
        }
        return result;
​
    }
​
}

命令行传参

  • 有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令参数给main()函数实现

package com.baidu.method;
​
​
​
public class M3 {
    public static void main(String[] args) {
        //args.length :数组长度
        for (int i=0;i< args.length;i++){
            System.out.println("args["+i+"]"+args[i]);
        }
​
    }
}
  • 使用命令行来编译

  • javac M3.java

  • cd.. 退回src目录

  • java com.baidu.method.M3

  • java com.baidu.method.M3 +命令

可变参数

  • 在JDK1.5开始,Java开始支持传递同类型的可变参数给一个方法

  • 在方法声明中,在指定参数类型后加一个省略号

package com.baidu.method;
​
public class M4 {
    public static void main(String[] args) {
        M4 m4 = new M4();
        M4.test(1,2,3,5);
    }
    public static void test(int... i){
        System.out.println(i[0]);
        System.out.println(i[1]);
        System.out.println(i[2]);
        System.out.println(i[3]);
    }
}

递归

  • 递归就是自己调用自己

  • 递归包括两个部分:

    • 递归头:什么时候不调用自身方法,如果没有头,将陷入死循环

    • 递归体:什么时候需要调用自身方法

package com.baidu.method;
​
public class M5 {
    public static void main(String[] args) {
        System.out.println(f(6));
​
    }
    //求i的阶乘
    public static int f(int i){
        if (i==1){
            return 1;
        }else {
            return i*f(i-1);
        }
    }
}

作业:

初学java中的选择,判断,循环和方法的概念,写一个简易的两位数计算器

思路推荐: 写4个方法:加减乘除 利用循环+switch进行用户交互 传递需要操作的两个数 输出结果

package com.baidu.test;
​
import com.sun.org.apache.bcel.internal.generic.SWITCH;
​
import java.util.Scanner;
​
public class T2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入:");
        double a=scanner.nextDouble();
        String sign= scanner.next();
        double b= scanner.nextDouble();
​
        scanner.close();
​
        switch (sign){
            case "+":
                add(a,b);
                break;
            case "-":
                sub(a,b);
                break;
            case "*":
                mul(a,b);
                break;
            case "/":
                div(a,b);
                break;
            default:
                System.out.println("输入有误!");
​
        }
​
​
    }
​
​
​
    public static double add(double a,double b){
        System.out.println(a+b);
        return 0;
    }
    public static double sub(double a,double b){
        System.out.println(a-b);
        return 0;
​
    }
​
    public static double mul(double a,double b){
        System.out.println(a*b);
        return 0;
​
    }
    public static double div(double a,double b){
        System.out.println(a/b);
        return 0;
    }
}

数组

数组声明创建

dataType[] arrayRefVar=new dataType[arraySize];
  • 数组的元素是通过索引访问的,数组索引从0开始

  • 获取数组长度:

    array.length

package com.baidu.array;
​
public class A1 {
​
    public static void main(String[] args) {
        int[] nums=new int[6];//声明和创建一个数组nums
​
        //给数组元素赋值
        nums[0]=2;
        nums[1]=2;
        nums[2]=2;
        nums[3]=2;
        nums[4]=2;
        nums[5]=2;
​
        //计算所以元素的值
        int sum=0;
        for (int i=0;i< nums.length;i++){//获取数组的长度array.length
            sum=sum+nums[i];
        }
        System.out.println("元素总和:"+sum);
    }
}

三种初始化

  • 静态初始化,动态初始化

package com.baidu.array;
​
public class A2 {
    public static void main(String[] args) {
        //静态初始化:创建+赋值
        int[] a={1,2,3,4,5,6};
        System.out.println(a[2]);
​
​
        System.out.println("------------");
​
        //动态初始化:包含默认值
        int[] b=new int[8];
        b[0]=1;
        b[1]=3;
        System.out.println(b[0]);
        System.out.println(b[1]);
        System.out.println(b[3]);
        System.out.println(b[7]);
    }
}
  • 数组的默认初始化

数组边界

  • ArrayIndexOutOfBoundsException:数组下标越界异常!

  • 数组是相同数据类型(数据类型可以为任意类型)的有序集合

数组的使用

package com.baidu.array;
​
public class A3 {
    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);
        System.out.println("------------------");
​
        //查找最大元素
        int max=arrays[0];
        for (int i=1;i<arrays.length;i++){
            if (arrays[i]>max){
                max=arrays[i];
​
            }
​
        }
        System.out.println("max:"+max);
    }
}
  • 增强的for循环

package com.baidu.array;
​
import javax.xml.transform.Result;
​
public class A4 {
    public static void main(String[] args) {
        int[] arrays = {1, 2, 3};
​
 /*
      //JDK1.5,没有下标
        for (int array : arrays) {
            System.out.println(array);
            }
  */
       // printArray(arrays);
        int[] reverse=reverse(arrays);
        printArray(reverse);
    }
​
    //反转数组
    public static int[] reverse(int[] arrays){
        int[] result= new int[arrays.length];
​
        for (int i=0, j= arrays.length-1;i< arrays.length;i++,j--){
            result[j]=arrays[i];
        }
        return result;
    }
​
    //打印数组元素
    public static void printArray(int[] arrays){
        for (int i=0;i< arrays.length;i++){
            System.out.print(arrays[i]+" ");
        }
    }
​
​
​
​
​
​
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值