• Java 方法


    1. 引入

    举例

      System.out.println()
    
    • println() 是一个方法
    • System 是系统类
    • out 是标准输出对象

    意思是调用系统类 System 中的标准输出对象 out 中的方法 println()。

    2. 方法定义

    语法

      访问修饰符 返回值类型 方法名(参数列表){  
          方法体
      }
    
    • 方法名命名规范,参见:Java 基本语法:3.Java 标识符

    • 如果方法的返回类型为 void ,则方法中不能使用 return 返回值。

    • 方法也分为实例方法和类方法,加上关键字 static 的就是类方法。需要注意的是,构造方法是特殊的方法,不能用 static 修饰。而且类方法只能对类变量进行操作,也只能调用类中的类方法。当创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,则不再分配入口地址,也就是说,方法的入口地址被所有的对象共享,当所有的对象都不存在时,方法的入口地址才被取消。对于类中的类方法,在该类被加载到内存时,就分配了相应的入口地址。从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。

    示例

    public class TestMax {
      /** 主方法 */
      public static void main(String[] args) {
         int i = 5;
         int j = 2;
         int k = max(i, j);
         System.out.println( i + " 和 " + j + " 比较,最大值是:" + k);
      }
    
      /** 返回两个整数变量较大的值 */
      public static int max(int num1, int num2) {
         int result;
         if (num1 > num2)
            result = num1;
         else
            result = num2;
    
         return result; 
      }
    }
    

    这个程序包含 main 方法和 max 方法。main 方法是被 JVM 调用的,除此之外,main 方法和其它方法没什么区别。main 方法的头部是不变的,如例子所示,带修饰符 public 和 static,返回 void 类型值,方法名字是 main,此外带个一个 String[] 类型参数。String[] 表明参数是字符串数组。

    Java的参数传递为值传递。也就是说,当我们传递一个参数时,方法将获得该参数的一个拷贝。实际上,我们传递的参数,一个是基本类型的变量,另一个为对象的引用。基本类型变量的值传递,意味着变量本身被复制,并传递给Java方法。Java方法对变量的修改不会影响到原变量。引用的值传递,意味着对象的地址被复制,并传递给Java方法。Java方法根据该引用的访问将会影响对象。

    3. 方法重载

    方法重载是多态性的一种,在进行方法重载的时候需要遵循以下的规则:

    • 在使用方法重载的时候,必须通过方法中不同的参数列表来实现方法的重载。
    • 不能通过访问权限,返回值类型和抛出的异常来实现重载。
    • 重载的方法中允许抛出不同的异常。
    • 可以有不同的返回值类型,可以有不同的访问修饰符,只要方法的参数列表不同即可。

    4. 命令行参数

    有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现。命令行参数是在执行程序时候紧跟在程序名字后面的信息。

    举例

    下面的程序打印所有的命令行参数:

    public class CommandLine {
      public static void main(String[] args){ 
         for(int i=0; i<args.length; i++){
            System.out.println("args[" + i + "]: " + args[i]);
         }
      }
    }
    

    运行结果:

    5. 可变参数

    JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法。
    方法的可变参数的声明如下所示:

    typeName... parameterName

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

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

    示例

    public class VarargsDemo{
      public static void main(String[] args) {
          // 调用可变参数的方法
         printMax(34, 3, 3, 2, 56.5);
         printMax(new double[] {1, 2, 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 = 1; i <  numbers.length; i++){
             if (numbers[i] >  result)
             result = numbers[i];
             System.out.println("The max value is " + result);
         }
      }
    }
    

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

    The max value is 56.5

    The max value is 3.0

    感觉像接收一个数组。

    6. finalize() 方法

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

    finalize() 一般格式是:

      protected void finalize() {
          // 在这里终结代码
      }
    

    关键字 protected 是一个限定符,它确保 finalize() 方法不会被该类以外的代码调用。当然,Java 的内存回收可以由 JVM 来自动完成。如果你手动使用,则可以使用上面的方法。

    参考链接

  • 相关阅读:
    css
    bootstrap
    在线小工具
    文档工具-Markdown
    js
    棋盘问题(深搜,统计)
    ****Curling 2.0(深搜+回溯)
    POJ 2676 Sudoku(深搜)
    POJ 2488 A Knight's Journey(深搜+回溯)
    ural 1104. Don’t Ask Woman about Her Age
  • 原文地址:https://www.cnblogs.com/mingyueanyao/p/6725707.html
Copyright © 2020-2023  润新知