zoukankan      html  css  js  c++  java
  • day6——java方法

    java方法详解

    一、何为方法(method)

    java方法是语句的集合,它们在一起执行一个功能。

    1. 方法是解决一类问题的步骤的有序组合
    2. 方法包含于类或对象中
    3. 方法在程序中被创建,在其他地方被引用

    设计方法的规则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。

    方法的命名规则:首字母小写后面跟驼峰规则

    语法形式:

     修饰符 返回值类型 方法名(参数类型 参数名){
           //方法体
           return  返回值;
     }
    

    说明:

    1. 修饰符:告诉编辑器如何调用该方法,定义了该方法的访问类型(可选的);

    2. 返回值类型:

      • 返回啥数据类型写啥类型;
      • 空则写 void(没有返回值)
    3. 方法名:方法的实际名称;

    4. 参数类型:(可选的)

      • 形参:接收输入的数据;
      • 实参:传入给方法的数据;
    5. 方法体:具体实现功能的语句;

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

    int sum = add(1, 2);//返回一个值
    System.out.println(sum);//void(没有返回值)一条语句
    

    值传递:直接传递-->一改变内容代表

    引用传递:指向内容的的地址,改变内容只是改变引用的地址,原来的对象换在(没有被任何引用所指向的对象都是垃圾,会被垃圾回收器回收)

    二、方法的重载

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

    规则:

    1. 方法名称必须一样。
    2. 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同)。
    3. 方法的返回类型可以相同也可以不同。
    4. 仅仅返回类型不同不足以称为方法的重载。
    public class Demo02 {
        public static void main(String[] args) {
            double max = max(10.0,20.0);
            System.out.println(max);
        }
    
        //比大小
        public static double max(double num1,double num2){
            double result = 0;
            //判断
            if (num1==num2){
                System.out.println("num1==num2");
                return 0;//终止方法
            }
            if (num1>num2){
                result = num1;
            }else{
                result = num2;
            }
            return result;
        }
    
        //比大小
        public static int max(int num1,int num2){
            int result = 0;
            //判断
            if (num1==num2){
                System.out.println("num1==num2");
                return 0;//终止方法
            }
            if (num1>num2){
                result = num1;
            }else{
                result = num2;
            }
            return result;
        }
    }
    

    三、命令行传参(了解)

    运行一个程序时候再传递给他消息,这就要靠传递命令参数给main()函数实现;

    public class Demo03 {
        public static void main(String[] args) {
            //args.length 数组长度
            for (int i = 0; i < args.length; i++) {
                System.out.println("arg["+ i +"]:" + args[i]);
            }
        }
    }
    

    四、可变参数(了解)(不定项参数)

    ①:在方法声明中,在指定参数类型后加入一个省略号(...)

    ②:一个方法中只能指定一个可变参数,它必须是方法的最后一个参数

    public class Demo04 {
        public static void main(String[] args) {
            Demo04 demo04 = new Demo04();
            demo04.test(1,3,4,5,6);
    
            System.out.println("========================");
    
            //调用可变参数的方法
            printMax(34,3,3,2,56,5);
            printMax(new double[]{1,2,3});
    
        }
    
        public  void  test(int x,int... i){
            System.out.println(x);
            System.out.println(i[0]);
            System.out.println(i[1]);
            System.out.println(i[2]);
            System.out.println(i[3]);
        }
    
    
      public static void printMax(double... numbers){
            if (numbers.length==0){
                System.out.println("No argument passed");
                return;
            }
            double result = numbers[0];
            //排序
             for (int i = 0; i < numbers.length ; i++) {
                 if (numbers[i] > result){
                     result = numbers[i];
                 }
              }
             System.out.println("The max value is "+result);
      }
    }
    

    五、递归

    自己调用自己;

    递归结构:

    1. 递归头:什么时候不调用自身的方法。如果没有头,将陷入死循环;
    2. 递归体:什么时候需要调用自身方法;

    注:递归基数太多的话会占用大量内存,容易造成系统崩溃,所以次数多的话不要用。

    public class Demo06 {
        //2! =2*1
        //3! =3*2*1
        //5! =5*4*3*2*1
        public static void main(String[] args) {
            System.out.println(f(4));
        }
        public static int f(int n){
    
            if (n == 1) {
                 return 1;
            }else{
                return n*f(n-1);
            }
    
        }
    }
    
  • 相关阅读:
    2016"百度之星"
    codeforces 55 div2 C.Title 模拟
    codeforces 98 div2 C.History 水题
    codeforces 97 div2 C.Replacement 水题
    codeforces 200 div2 C. Rational Resistance 思路题
    bzoj 2226 LCMSum 欧拉函数
    hdu 1163 九余数定理
    51nod 1225 余数的和 数学
    bzoj 2818 gcd 线性欧拉函数
    Codeforces Round #332 (Div. 2)D. Spongebob and Squares 数学
  • 原文地址:https://www.cnblogs.com/liustudy/p/14032430.html
Copyright © 2011-2022 走看看