zoukankan      html  css  js  c++  java
  • 方法的定义

        JAVA 方法

      在前面for循环中多次出现System.out.println(),这是什么?

        println()这是一个方法

        System是系统类。

        out是标准输出对象。

      这段代码用法是调用系统类System 中的标准输出对象out中的方法println()。

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

        方法是解决一类问题的步骤的有序组合

        方法包含于类或对象中

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

    方法的优点

      1.使程序变得更简洁而清晰

      2.有利于程序的维护

      3.可以提高程序开发的效率。

      4.提高了代码的重用性。

    方法的命名规则

      1.方法的名字的第一个单词应该是小写字母开头,后面的单词则用大写字母开头写,不使用连接符。例如:addUser。

      2.下划线可能出现在JUnit测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test_,例如testPop_emptyStack;

    方法的定义

      一般情况下,定义一个方法包含以下语法

    1 修饰符 返回值类型 方法名(参数类型 参数名){
    2     ...
    3     方法体
    4     ...
    5     return 返回值;
    6 }

       方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

        修饰符:

           修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

        返回值类型:

          方法可能会返回值。returnValue Type是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值,在这种情况下,returnValue Type是关键字void.

        方法名:

           是方法的实际名称.方法名和参数表共同构成方法签名.

        方法体:

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

       如:

    1 //求一个年龄
    2 public static int age(int a) {...}

      参数可以有多个

    1 //求两个整数的和
    2 public static int sum(int a,int b) {...}

      注意:在一些其他语言中方法指过程和函数。一个返回非void类型返回值的方法称之为函数;一个返回void类型返回值的方法叫做过程。

      实例

        下面的方法包含连个参数a和b,它返回这两个参数的和

    1 //求两个整数的和
    2 public static int sum(int a,int b) {        
    3     return a+b;
    4 }

      方法调用

        Java支持两种调用方式,根据方法是否返回值来选择。

        当程序调用一个方法时,程序的控制权交个了被调用的方法。当方法的返回语句执行或者到达方法体闭括号时交换控制权给程序。

        当方法返回一个值的时候,方法调用通常被当做一个值。例如

    1 int c=sum(a,b);

        如果方法返回值是void,方法嗲用一定是一条语句。例如。方法println返回void。下面的调用是个语句:

    1 System.out.println("hello!!");

      示例

        下面的例子演示了如何定义一个方法,以及如何调用它。

     1 public class Test {
     2     public static void main(String[] args) {
     3         int a=10;
     4         int b=20;
     5         int c=sum(a,b);
     6         System.out.println(c);
     7     }
     8     
     9     //求两个整数的和
    10     public static int sum(int a,int b) {        
    11         return a+b;
    12     }
    13 }

      以上示例编译运行结果如下

    1 30

      这个程序包含main方法和sum方法,main方法是被JVM调用的,除此之外,main方法和其他方法没什么区别。

      main方法的头部是不变的,如例子所示,带修饰符public和static,返回void类型值,方法名字是main,此外带一个String[]类型参数。String[]表明参数是字符串数组。

      void关键字

        本节说明如何声明和调用一个void方法。

        下面的例子声明了一个名为str的方法,并且调用它来打印字符串

      示例

     1 public class Test {
     2     public static void main(String[] args) {        
     3         str(10,20);
     4     }
     5     
     6     //单纯有参数的输出一句话
     7     public static void str(int a,int b) {
     8         System.out.println("今天是第"+a+b+"天学习");
     9     }
    10 }    

      以上实例编译运行结果如下:

    1 今天是第1020天学习

      这里str方法是一个void类型方法,它不返回值。

      一个void方法的调用一定是一个语句。所以,它被在main方法第三行以语句形式调用。就想任何以分号结束的语句一样。

      通过值传递参数

        调用一个方法时候需要提供参数,你必须按照参数列表的顺序提供。

      示例:下面的方法打印字符串

     1 public class Test {
     2     public static void main(String[] args) {
     3         String a="这是";
     4         int b=20;
     5         str(a,b);
     6             System.out.println(a);
     7             System.out.println(b);
     8     }
     9     public static void str(String s,int b) {        
    10         System.out.println(s+b);
    11     }
    12 }

        以上示例编译运行结果如下

    1 这是20

        传递两个参数调用str方法。有趣的是,方法被调用后,实参的值并没有改变

      方法的重载

        上面使用的sum方法仅仅适用于Int型。但如果改成两个浮点型数据的输出呢?

         解决方法是创建一个有相同名字但参数不同的方法,如下面代码

    1 public static double sum(double a,double b) {        
    2     return a+b;
    3 }

        如果你调用str方法时传递的是Int型参数,,则int型参数的sum方法会被调用;

        如果你调用str方法时传递的是double型参数,,则int型参数的double方法会被调用,这叫做方法重载;

        就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表。

        Java编译器根据方法签名判断哪个方法应该被调用。

        方法重载可以让程序更清晰易读。执行密切相关任务应该使用相同的名字。

        重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型不同来重载方法。

      变量作用域

        变量的范围是程序员中该变量可以被引用的部分。

        方法内定义的变量被称为局部变量。

        局部变量的作用范围从声明开始,直到包含它的块结束。

        局部变量必须声明才可使用。 

        方法的参数范围涵盖整个方法。参数实际上是一个局部变量。

        for循环的初始化部分声明的变量,其作用范围在整个循环。

        但循环体内声明的变量其适用范围是从它声明到循环体结束。它包含如下所示的变量声明:

        你可以在一个方法里,不同的非嵌套块中多次声明一个具有相同的名称局部变量,但你不能在嵌套块内两次声明局部变量

      构造方法

        当一个对象被创建的时候,构造方法用来初始化对象。构造方法和它所在类的名字相同,但否早方法没有返回值。

        通常会使用构造方法给一个类的实例变量赋初始值,或者执行其他必要的步骤来创建一个完整的对象。

        不管你是否定义构造方法,所有的类都有构造方法,因为java自动提供了一个默认的构造方法。默认构造方法的访问修饰符和类的访问修饰符相同(类为public;构造函数也改为private)。

        一旦你定义了自己的构造方法,默认构造方法就会失效。

       实例

        下面是一个使用构造方法的例子:

    1 // 一个简单的构造函数
    2 class MyClass {
    3   int x;
    4  
    5   // 以下是构造函数
    6   MyClass() {
    7     x = 10;
    8   }
    9 }

      你可以像下面这样调用构造方法来初始化一个对象:

    1 public class ConsDemo {
    2    public static void main(String[] args) {
    3       MyClass t1 = new MyClass();
    4       MyClass t2 = new MyClass();
    5       System.out.println(t1.x + " " + t2.x);
    6    }
    7 }

        大多时候需要一个有参数的构造方法.

      实例

        下面是一个使用构造方法的例子:

    1 // 一个简单的构造函数
    2 class MyClass {
    3   int x;
    4  
    5   // 以下是构造函数
    6   MyClass(int i ) {
    7     x = i;
    8   }
    9 }

         你可以像下面这样调用构造方法来初始化一个对象:

    1 public class ConsDemo {
    2   public static void main(String[] args) {
    3     MyClass t1 = new MyClass( 10 );
    4     MyClass t2 = new MyClass( 20 );
    5     System.out.println(t1.x + " " + t2.x);
    6   }
    7 }

        运行结果如下

    1 10 20

      可变参数

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

        方法的可变参数的声明如下所示:

    1 typeName... parameterName

        在方法声明中,在指定参数类型后加一个省略好(...)。

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

      实例

     1 public class VarargsDemo {
     2     public static void main(String args[]) {
     3         // 调用可变参数的方法
     4         printMax(34, 3, 3, 2, 56.5);
     5         printMax(new double[]{1, 2, 3});
     6     }
     7  
     8     public static void printMax( double... numbers) {
     9         if (numbers.length == 0) {
    10             System.out.println("No argument passed");
    11             return;
    12         }
    13  
    14         double result = numbers[0];
    15  
    16         for (int i = 1; i <  numbers.length; i++){
    17             if (numbers[i] >  result) {
    18                 result = numbers[i];
    19             }
    20         }
    21         System.out.println("The max value is " + result);
    22     }
    23 }

        以上实例编译运行后如下

    1 The max value is 56.5
    2 The max value is 3.0

      finalize() 方法

        Java允许定义这样的方法,他在对象被垃圾收集器析构(回收)之前调用,这个方法叫做 finalize(),它用来清除回收对象。

        在finalize()方法里,你必须指定在对象销毁时要执行的操作。

        finalize()一般格式是:

    1 protected void finalize()
    2 {
    3    // 在这里终结代码
    4 }

      关键字protected是一个限定符,它确保finalize()方法不会被该类以外的代码调用。

      当然,Java的内存回收可以由JVM来自动完成。如果你手动使用,则可以使用上面的方法。

      实例

     1 public class FinalizationDemo {  
     2   public static void main(String[] args) {  
     3     Cake c1 = new Cake(1);  
     4     Cake c2 = new Cake(2);  
     5     Cake c3 = new Cake(3);  
     6       
     7     c2 = c3 = null;  
     8     System.gc(); //调用Java垃圾收集器
     9   }  
    10 }  
    11  
    12 class Cake extends Object {  
    13   private int id;  
    14   public Cake(int id) {  
    15     this.id = id;  
    16     System.out.println("Cake Object " + id + "is created");  
    17   }  
    18     
    19   protected void finalize() throws java.lang.Throwable {  
    20     super.finalize();  
    21     System.out.println("Cake Object " + id + "is disposed");  
    22   }  
    23 }

        运行以上代码,输出结果如下:

    1 Cake Object 1is created
    2 Cake Object 2is created
    3 Cake Object 3is created
    4 Cake Object 3is disposed
    5 Cake Object 2is disposed

    方法的形参和实参参考

      https://blog.csdn.net/tyyh08/article/details/79081838

    以上内容参考菜鸟教程,若产生侵权,通知删除本文

  • 相关阅读:
    理性即自由
    解决问题的思路是怎样的?
    联系的结构-深度思考
    思考力,才是真正的第一生产力-快思考、慢思考
    CentOS7在防火墙与端口上的操作
    linux如何查看nginx是否启动
    Git篇
    Git 常用命令总结
    siblings() 获得匹配集合中每个元素的同胞
    Mysql查看版本号的五种方式介绍
  • 原文地址:https://www.cnblogs.com/java-lzx/p/11711650.html
Copyright © 2011-2022 走看看