zoukankan      html  css  js  c++  java
  • 方法与递归算法

    方法:一段用于完成特定功能的代码片段,类似于其他语言的函数。

    方法用于定义该类或该类的失礼行为特征和功能实现。方法是类和对象行为特征的抽象。方法类似于面向过程中的函数。在面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。方法包括方法名与参数。

    方法的调用方式:

    1.形式参数:在方法声明时用于接收外界传入的数据

    2.实参:调用方法时实际传给方法的数据

    3.返回值:方法在执行完毕后返回给调用它的环境的数据

    4.返回值类型:事先约定的返回值的数据类型,如无返回值类型,必须显示指定为void

    关系如下:

    方法的运行实例:

    注意事项:1.实参的数目、数据类型和次序必须和调用方法声明的形参列表匹配

    2.return语句终止方法的运行并指定要返回的数据。

    3.java中进行方法传递参数时,遵循值传递的原则

    4.基本类型传递的是该数据值的copy值。(4,5在讲面向对象的额时候深入研究)

    5.引用类型传递的是该对象引用的copy值,但指向的是同一个对象。

    参数传递机制:

    基本数据类型参数的传递:java中,方法中的所有参数都是“值传递”,也就是“传递的是值的副本”,我们得到的是“原参数的复印件,而不是原件”。因此,值传递不会影响原件。
    引用类型参数的传递:传递的是值的副本,但引用类型指的是“对象的地址”,因此,副本和原参数的都指向了同一个地址,改变副本指向地址对象的值,也意味着指向对象的值发生了改变。

    内存分析:

     

    构造方法:构造器也叫构造方法(constructor),用于对象的初始化。

    要点:

    1.通过new 关键字调用。

    2.构造器虽然有返回值,但是不能定义返回值类型,不能在构造器中使用return返回某个值。

    3.如果没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加。

    4.构造器的方法名必须与类名一致。

     

     方法的重载(overload):  重载的方法,实际是完全不同的方法,只是名称相同而已

    构成重载的条件:1.形参类型、形参个数、形参顺序不同   2.只有返回值不同不构成方法的重载

    public class TestOverload {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            System.out.println(add(4,6));  //10
            System.out.println(add(4,6,2));  //12
            System.out.println(add(2.0,6));  //8.0
            System.out.println(add(4,6.0));  //10.0
            //我们已经见过的方法的重载
            System.out.println();//0个参数
            System.out.println(1);//参数是一个int
            System.out.println(2.0);//参数是一个double
        }
        //名字相同的四个独立的求和方法
        static int add(int a,int b){  //static类型的方法可以不用创建对象,直接在主函数里面调用
            int sum=a+b;
            return sum;
        }
        //方法名相同,参数个数不同,构成重载
        static int add(int a,int b,int c){
            int sum=a+b+c;
            return sum;
        }
        //编译错误:只有返回值不同,不构成方法重载
        /*static double add(int a,int b){
            double sum=a+b;
            return sum;
        }
        */
        //编译错误,只有参数名称不同,不构成重载
        /*static int add(int b,int a)
        {
            int sum=a+b;
            return sum;
        }
        */
        //方法名相同,参数类型不同,构成重载
        static double add(double a,int b){
            double sum=a+b;
            return sum;
        }
        //方法名相同,参数顺序不同,构成重载
        static double add(int a,double b){
            double sum=a+b;
            return sum;
        }
    
    }

    递归   基本思想:自己调用自己

    递归结构包括两个部分:1.定义递归头 即什么时候不调用自身方法    如果没有头,将进入死循环,也就是递归的结束条件

    2.递归体  即什么时候需要调用自身方法

    定义了递归体和递归头之后,程序运行如图:

    •小练习:n!(递归与迭代)

    具体递归执行步骤如下:

    递归的缺陷:会占用大量的系统堆栈,内存耗用多。

    注意:任何能用递归解决的问题也能用迭代解决。当递归方法可以更加自然地反映问题,并且易于理解和调试,并且不强调效率时,可以采用递归。

    在要求高性能的情况下尽量避免使用递归,既花费时间又消耗内存。

  • 相关阅读:
    CSS Modules
    回调地狱
    css实现双色饼图
    vue项目中使用less
    pug(jade) 学习笔记
    React组件proptypes, ref
    react+express实现跨域
    react高阶组件
    Oracle数据库出现锁表情况分析
    JPA常用注解记录
  • 原文地址:https://www.cnblogs.com/laurarararararara/p/11294459.html
Copyright © 2011-2022 走看看