带你轻松玩转Java方法

153 阅读6分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情

🎨 个人介绍

👉大家好,我是:旺仔不是程序员

👉认真分享技术,记录学习过程的点滴,如果我的分享能为你带来帮助,请支持我奥🍻

👉你的支持,是我每天更新的动力。

👉赞点:👍 留言:✍ 收藏:⭐

👉个人格言:想法一步一步的落实,才是你我前进最佳选择。

1. Java 方法简介

  1. 在前面几个章节中我们经常使用到 System.out.println() ,那么它是什么呢?

    1. println() 是一个方法
    2. System系统类
    3. out标准输出对象
  2. 这句话的用法调用系统类 System 中的标准输出对象 out 中的方法 println()

  3. Java方法语句集合,它们在一起执行一个功能

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

    1. 使程序变得更简短清晰
    2. 有利于程序维护
    3. 可以提高程序开发效率
    4. 提高了代码重用性
  5. 方法的命名规则

    1. 方法的名字第一个单词应以小写字母作为开头后面单词则用大写字母开头写,不使用连接符。例如:addPerson
    2. 下划线可能出现在junit测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test_,例如 testPop_emptyStack。

2. 方法的定义

2.1 方法定义语法

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

2.2 方法定义图解

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

2.3 方法定义介绍

  1. 修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法访问类型
  2. 返回值类型 : 方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void
  3. 方法名: 是方法的实际名称。方法名和参数表共同构成方法签名
  4. 参数类型: 参数像是一个占位符。当方法被调用时传递值给参数。这个被称为实参变量参数列表指方法参数类型顺序参数个数
  5. 参数是可选的,方法可以不包含任何参数
  6. 方法体: 方法体包含具体的语句,定义该方法的功能

3. 方法调用

  1. Java 支持两种调用方法的方式,根据方法是否返回值来选择
  2. 程序调用一个方法时,程序控制权交给了被调用的方法。当被调用方法返回语句执行或者到达方法体闭括号时候还控制权给程序
  3. 当方法返回一个值的时候,方法调用通常被当做一个值

4. 通过值传递参数

  1. 调用一个方法时候需要提供参数,你必须按照参数列表指定的顺序提供
  2. 例如,下面的方法连续n次打印一个消息
public static void nPrintln(String message, int n) {
  for (int i = 0; i < n; i++) {
    System.out.println(message);
  }
}

5. 方法的重载

5.1 方法重载简介

  1. 上面使用的max方法仅仅适用于int型数据。但如果你想得到两个浮点类型数据的最大值呢?
  2. 解决方法创建另一个相同名字参数不同方法
  3. 如果你调用max方法传递的int型参数,则 int型参数max方法就会被调用
  4. 如果传递的是double型参数,则double类型max方法体会被调用,这叫做方法重载
  5. 就是说一个两个方法拥有相同名字,但是有不同参数列表
  6. Java编译器根据方法签名判断哪个方法应该被调用
  7. 方法重载可以让程序清晰易读。执行密切相关任务的方法应该使用相同的名字
  8. 重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型不同来重载方法

5.2 代码实例

public static double max(double num1, double num2) { // 方法重载1
  if (num1 > num2)
    return num1;
  else
    return num2;
}
public static double max(int num1, int num2) { // 方法重载2
  if (num1 > num2)
    return num1;
  else
    return num2;
}

6. 变量作用域

  1. 变量的范围程序中变量可以被引用的部分
  2. 方法内定义变量称为局部变量
  3. 局部变量作用范围声明开始直到含它的块结束
  4. 局部变量须声明才可以使用
  5. 方法参数范围 涵盖整个方法参数实际上是一个局部变量
  6. for循环初始化部分声明变量,其作用范围整个循环
  7. 循环体内声明变量适用范围是从它声明循环体结束

7. 构造方法

  1. 当一个对象被创建时候,构造方法用来初始化该对象
  2. 构造方法它所在类名字相同,但构造方法没有返回值
  3. 通常会使用构造方法一个类实例变量赋初值,或者执行其它必要的步骤创建一个完整对象
  4. 不管你是否 自定义构造方法所有的类都有构造方法,因为 Java 自动提供了一个默认构造方法默认构造方法访问修饰符和类的访问修饰符相同(类为 public,构造函数也为 public;类改为 protected,构造函数也改为 protected)
  5. 一旦你定义了自己构造方法默认构造方法就会失效

8. finalize() 方法

8.1 finalize 方法简介

  1. Java 允许定义这样的方法,它在对象垃圾收集器析构(回收)之前调用这个方法叫做 finalize( ) ,它用来清除回收对象
  2. 可以使用 finalize() 来确保一个对象打开文件被关闭了
  3. 在 finalize() 方法里, 你必须指定在对象销毁时候要执行操作
  4. 关键字 protected 是一个限定符,它确保 finalize() 方法不会被该类以外代码调用
  5. 当然,Java内存回收可以由 JVM自动完成。如果你手动使用,则可以使用上面的方法

8.2 finalize 语法格式

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

8.3 代码实例

public class FinalizationDemo {  
  public static void main(String[] args) {  
    Cake c1 = new Cake(1);  
    Cake c2 = new Cake(2);  
    Cake c3 = new Cake(3);  
      
    c2 = c3 = null;  
    System.gc(); //调用Java垃圾收集器
  }  
}  
 
class Cake extends Object {  
  private int id;  
  public Cake(int id) {  
    this.id = id;  
    System.out.println("Cake Object " + id + "is created");  
  }  
    
  protected void finalize() throws java.lang.Throwable {  
    super.finalize();  
    System.out.println("Cake Object " + id + "is disposed");  
  }  
}

🎈看完了不妨给我点个赞吧,👉你的支持,是我每天更新的动力...