• Java方法学习


    Java方法

    何谓方法

    方法就是语句的集合,在一起剋以在执行一个功能。

    方法的命名规则,首字母小写+驼峰规则。

    方法包含于类或对象中。

    方法在程序中被创建,在其他地方被引用。

    设计方法原则:一个方法只完成一个功能,保持方法的原子性,有利于后期的扩展。

    方法的定义与调用

    修饰符 返回值类型 方法名(参数类型 参数名字){

    ...

    方法体

    ...

    return 返回值

    }

    修饰符:public 、static、final、private...可选

    返回值类型:没有返回值用void。如果有返回值,用return。

    参数类型:参数可选。实参:调用该方法时,实际传递的参数。形参:定义方法时随便编的参数。

     public static void main(String[] args) {
            int sum=add(1,2);
            System.out.println(sum);
        }
        public static int add(int a,int b){
            return a+b;
        }
    }
    

    a,b是形参,1,2是实参。

    方法体:方法中包含的具体语句,定义该方法的功能。

    关于return

    我写的代码,输出结果为空的,啥也没有。

    public static void main(String[] args) {
        max(1,2);
    
    }
    public static int max(int a ,int b){
        if(a>b){
           return a;
        }else if(a<b){
            return b;
        }else {
            System.out.println("a和b一样大");
            return 0;
        }
    

    正确的代码:

    public static void main(String[] args) {
        int m=max(1,2);
        System.out.println(m);
    
    }
    public static int max(int a ,int b){
        int result=-1;
        if(a>b){
          result= a;
        }else if(a<b){
            result= b;
        }else {
            System.out.println("a和b一样大");
            return 0;
        }
        return result;
    }
    

    return除了有返回返回值之外,还有终止程序的意思;

    方法支持两种调用方式:根据方法是否有返回值来选择:

    当方法返回一个值的时候,方法调用通常被当作一个值,如:

    int m=max(10,20);

    system.out.println(m);

    如果方法返回值是void,方法调用一定是一条语句。

    system.out.println("hello,IGOT7");

    调用方法:对象名.方法名(实参列表)

    值传递:Java是值传递。【拷贝】值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。

    引用传递: 引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身。

    方法重载

    重载就是在一个类中,有相同的函数名称,但形参不同的函数。

    重载规则:

    方法名称必须相同;参数列表必须不同(个数不同、或类型不同、参数排列顺序不同);方法的返回值类型可以相同也可以不相同;仅仅是返回类型不同不足以成为方法的重载。

    命令行传参

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

    在命令行传递参数。

    可变参数

    Java支持传递同类型的可变参数给一个方法。

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

    一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通的参数必须在他之前声明。

    public static void main(String[] args) {
        Demo04 d=new Demo04();
        d.test(1);
    
    }
    public void test(int ...i){
        System.out.println(i[0]);
    }
    

    递归

    A方法调用A方法,就是递归。就是用有限的语句来定义对象的无限集合。

    递归包括:

    递归头:定义了什么时候有不调用自身的方法,没有头会进入死循环。

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

    public static void main(String[] args) {
        System.out.println(f(3));
    }
    public static  int f(int n){
        if(n==1){
            return 1;
        }else {
            return n*f(n-1);
        }
    }
    

    实现简易计算器:

    要求练习到循环、switch、方法调用。

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        double a=scanner.nextDouble();
        String op=scanner.next();
        double b=scanner.nextDouble();
        double r=0;
       while(scanner.hasNext()){
            switch (op){
                case "+":
                    r=add(a,b);
    
                    break;
                case "-":
                    r=subtract(a,b);
    
                    break;
                case "*":
                    r=multiply(a,b);
    
                    break;
                case "/":
                    r=divide(a,b);
    
                    break;
            }
           System.out.println(r);
        }
    }
    
    public static double add(double a,double b){
        return a+b;
    }
    public static double divide(double a,double b){
        return a/b;
    }
    public static double subtract(double a,double b){
        return a-b;
    }
    public static double multiply(double a,double b){
        return a*b;
    }
    

    错误:没有实现持续输入处理。
    修改后:

    package javademo;
    
    
    import java.util.Scanner;
    
    public class Demo04 {
        public static void main(String[] args) {
            Scanner scanner=new Scanner(System.in);
    
           while(scanner.hasNext()){
               double a=scanner.nextDouble();
               String op=scanner.next();
               double b=scanner.nextDouble();
               double r=0;
                switch (op){
                    case "+":
                        r=add(a,b);
    
                        break;
                    case "-":
                        r=subtract(a,b);
    
                        break;
                    case "*":
                        r=multiply(a,b);
    
                        break;
                    case "/":
                        r=divide(a,b);
    
                        break;
                }
               System.out.println(r);
            }
        }
    
        public static double add(double a,double b){
            return a+b;
        }
        public static double divide(double a,double b){
            return a/b;
        }
        public static double subtract(double a,double b){
            return a-b;
        }
        public static double multiply(double a,double b){
            return a*b;
        }
    }
    
  • 相关阅读:
    数据库分库分表
    工作笔记----数据库分表
    工作笔记----数据提取
    Runnable和Thread的应用场景
    LeetCode题目按公司分类
    spring boot Java配置搭建ssm (二)
    spring boot java配置搭建ssm 小案例(IDEA)
    spring boot xml配置搭建 ssm 小案例(IDEA)
    连接查询
    限定、模糊、排序、多表查询(3)
  • 原文地址:https://www.cnblogs.com/yunxiaoqian/p/13816723.html
Copyright © 2020-2023  润新知