美文网首页
二、方法和构造函数

二、方法和构造函数

作者: 柚_稚 | 来源:发表于2018-05-16 17:24 被阅读0次

    一、方法

    1、定义:可以看成是构成程序的一个比较小的模块,每个模块都有自己的功能。

    2、好处:1.可以减少代码的耦合度

                     2.避免代码的重复

    3、方法的声明

      修饰符 返回值类型 方法名 (参数列表){//方法头部

        //方法体,由一条或多条语句组成,通常由一组实现特定功能的代码组成

      }

    ***实例1***

      public static int max(int num1,int num2){

      int result;

      if(num1>num2)

      result=num1;

      else

      result=num2;

      return result;

      }

    4、修饰符

    ***它是可选的,可有可无,目的是为了告知编译器如何调用该方法***

    如:public,private,protected等,以及final和static等修饰符。

        public:公有的方法,在任何地方都可以调用。

        static:说明方法是静态的方法,它既能被静态的方法调用,也可以被非静态的方法调用。

    *****范围修饰********

      可以修饰类(class),修饰方法,修饰成员变量

      类只可以修饰为public,默认不写就是public

      public (公共的):谁(什么类)都可以调用

      private (私有的):只能当前这个类当中的代码可以调用。

      protected (保护的):只能在同一个包下面可以相互调用。

    实例1:

          public static int max(int num1,int num2)

    5、返回值类型

    ****可选的,可以有返回值,也可以没有返回值,给出返回值的数据类型。没有返回值,给出void****

    实例1:

          public static int max(int num1,int num2)

    6、方法名

      必须遵守标识符的命名规则:习惯上与变量名一样,并且也应该做到见名知意;如果名字由多个单词组成,则从第二个单词开始首字母大写。

    实例1:

          public static int max(int num1,int num2)

    7、参数列表

      可以为空或多个参数,当有多个参数时,中间用逗号隔开;每个参数给出数据类型和名字。又称为形式参数列表。

      参数列表指出调用方法需要传递的参数的类型以及个数。

    实例1:

          public static int max(int num1,int num2){

          int result;

          if(num1>num2)

          result=num1;

          else

          result=num2;

          return result;

          }

    8、return的作用:一是用来返回方法的结果,二是用来结束的一个方法。

    实例1:

          public static int max(int num1,int num2){

          int result;

          if(num1>num2)

          result=num1;

          else

          result=num2;

          return result;

    9、********************注意*******************

      方法不可以嵌套,在一个方法内部,不允许再定义方法。


    二、方法调用

    1、方法的名字(实际参数列表)

    2、实参和形参保持三个一致:个数,顺序,类型

    实例1:

          public static int max(int num1,int num2){

          int result;

          if(num1>num2)

          result=num1;

          else

          result=num2;

          return result;

    实例1的调用:

        int num=max(5,10);

      或者: int x=10,y=2;

            int n=max(x,y);

    3、参数传值:值传递、地址传递。

    值传递:实参是常量,直接将常量值传递给形参变量,实参是变量,将实参变量的值传递给形参变量;

    实参(argument):

    全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

    形参(parameter):

    全称为"形式参数" 由于它不是实际存在变量,所以又称虚拟变量。是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数.在调用函数时,实参将赋值给形参。因而,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确定的值。

    实例2:

          static void swap(int x,int y){

              int temp;

              temp=x;

              x=y;

              y=temp;

          }

          main方法中的调用:int a=3,b=5;

                          swap(x,y);

                          system.out.println("a="+a+",b="+b);

    4、地址传递

    实参的地址传递给相应的形参,形式参数与实际参数使用相同的内存地址单元,通过调用被调方法可以改变实参的值。

    实例3:

          public static void swap(int[] a){

          int temp;

          temp=a[0];

          a[0]=a[1];

          a[1]=temp;

          }

    main方法中的调用:

                    int[] a={1,2,3,4,5};

                    swap(a);

                    System.out.println("a[0]="+a[0]+",a[1]="+a[1]); 


    三、方法重载

    1、定义:java允许在一个类中,多个方法拥有相同的名字,但是名字相同时,必须有不同的参数。

    实例4:int max(int n1,int n2){

          return n1>n2?n1:n2;

          }

          double max(double n1,double n2){

          return n1>n2?n1:n2;

          }

          int max(int n1,int n2,int n3){

            if(n1>n2&&n1>n3)

            return n1;

          if(n2>n1&&n2>n3)

            return n2;

          if(n3>n1&&n3>n1)

            return n3;

          }

    实例4的调用:max(5,10);

                max(3,10,5);

    实例5:

    double min(int n1,double n2){

    return n1<n2?n1:n2;

    }

    double min(double n1,int n2){

    return n1<n2?n1:n2;

    实例5的调用:int x=5,y=8;

    min(x,y);

    四、局部变量作用域


    1、变量的作用域:指可以使用此变量的简单名称来引用它的程序区域。变量声明在程序的位置决定了变量的作用域。

    2、变量的类型:局部变量,成员变量,异常处理参数

    局部变量:方法声明部分的形式参数、方法内部定义的变量、以及循环部分定义的变量。(在方法头部或方法的一块代码中声明,它的作用域为它所在的代码块)。

    成员变量:是一个类的成员,它在一个类的内部,但是在任何方法或构造器之外声明。成员变量的作用域是整个类。

    异常处理参数:被传递给异常2处理代码,它的作用域是异常处理部分,也就是catch语句后面的{之间的代码块。

    **********在一个确定的域中,变量名应该是唯一的。通常一个域用花括号[}来划定。************

    实例2:

          static void swap(int x,int y){

              int temp;

              temp=x;

              x=y;

              y=temp;

          }

          main方法中的调用:int a=3,b=5;

                          swap(x,y);

                          system.out.println("a="+a+",b="+b);

      ********************解析如下********************

    方法头部定义了两个形式参数x和y,它们的作用范围是整个方法体,当调用该方法时,首先创建变量x和y,也就是在内存中为x和y分配空间(这与a和b的空间是不一样的),接着

    会将a的值传给x,将b的值传给y,开始执行的方法内部的代码,将x和y的值进行交换,方法结束后,变量x和y就会被销毁,因此,对a和b的值并不产生任何影响,那么这个方法并

    不能实现将a和b的值进行交换。


    五、构造函数

    1、构造函数与普通函数的区别

       在实例化中去调用,普通函数是直接通过类或者通过对象去调用。

    2、构造函数跟普通函数的差别。

    2.1.构造函数的名称只能跟类名相同。

    2.2.只能在实例化的时候调用(就是只能跟在关键字new 的后面使用)。

    2.3构造函数没有返回值。

    Dog dog = new Dog("小黑");


    3、类与构造函数的关系

    调用构造函数就会产生一个该类的实例化对象。

    4、自定义的构造函数

    默认的构造函数

    class 类名{

    private int id;

    private String name;

    public 类名(){

    }

    }


    自定义的构造函数

    class 类名{

    private int id;

    private String name;

    public 类名(int id,String name){

    this.id=id;

    this.name=name;

    }

    }


    5、this关键字

    在那个对象使用,this就是代表那个对象

    相关文章

      网友评论

          本文标题:二、方法和构造函数

          本文链接:https://www.haomeiwen.com/subject/raaldftx.html