Java方法
1.Java方法概述
1.1.什么是方法?
Java方法是语句的集合,它们在一起执行一个功能。
-
方法是解决一类问题的步骤的有序组合
-
方法包含于类或对象中
-
方法在程序中被创建,在其他地方被引用
-
完成特定功能的代码块。
1.2.方法的优点
-
使程序变得更简短而清晰
-
有利于程序维护
-
可以提高程序开发的效率
-
提高了代码的重用性
1.3.方法的命名规则
- 方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。
例如:addPerson。 - 下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。
一个典型的模式是:test_,
例如
testPop_emptyStack。
2.方法的格式
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}
方法的格式说明:
-
修饰符:public protect private
-
返回值类型:就是功能结果的数据类型。
-
方法名:符合命名规则即可。方便我们的调用。
-
参数:
实际参数:就是实际参与运算的。
形式参数:就是方法定义上的,用于接收实际参数的。 -
参数类型:就是参数的数据类型
-
参数名:就是变量名
-
方法体语句:就是完成功能的代码。
-
return:结束方法的。
-
返回值:就是功能的结果,由return带给调用者。
3.方法调用
Java 支持两种调用方法的方式,根据方法是否返回值来选择。
当程序调用一个方法时,程序的控制权交给了被调用的方法。
当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。
当方法返回一个值的时候,方法调用通常被当做一个值。
结论:
-
方法不调用不执行
-
方法与方法是平级关系,不能嵌套定义
-
方法定义的时候参数之间用逗号隔开
-
方法调用的时候不用再传递数据类型
-
如果方法有明确的返回值,一定要有return带回一个值
/*
定义一个两个int数字相加的方法。三要素:
返回值类型:int
方法名称:sum
参数列表:int a, int b
方法的三种调用格式。
1. 单独调用:方法名称(参数);
2. 打印调用:System.out.println(方法名称(参数));
3. 赋值调用:数据类型 变量名称 = 方法名称(参数);
注意:此前学习的方法,返回值类型固定写为void,这种方法只能够单独调用,不能进行打印调用或者赋值调用。
*/
// 单独调用
sum(10, 20);
System.out.println("===========");
// 打印调用
System.out.println(sum(10, 20)); // 30
System.out.println("===========");
// 赋值调用
int number = sum(15, 25);
number += 100;
System.out.println("变量的值:" + number); // 140
}
4.方法重载
什么时候用重载:
- 当使用了一种方法的时候,需要不同的数据类型输入的时候,再写个一样的方法名但数据类型不同的相同方法。程序就会根据数据类型选择方法。
使用方式:
-
在同一个类中,方法名相同,参数列表不同。与返回值类型无关。
-
创建另一个有相同名字但参数不同的方法
package cn.itcast.day04.demo04;
/*
对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦。
方法的重载(Overload):多个方法的名称一样,但是参数列表不一样。
好处:只需要记住唯一一个方法名称,就可以实现类似的多个功能。
方法重载与下列因素相关:
1. 参数个数不同
2. 参数类型不同
3. 参数的多类型顺序不同
方法重载与下列因素无关:
1. 与参数的名称无关
2. 与方法的返回值类型无关
*/
public class Demo01MethodOverload {
public static void main(String[] args) {
/*System.out.println(sumTwo(10, 20)); // 30
System.out.println(sumThree(10, 20, 30)); // 60
System.out.println(sumFour(10, 20, 30, 40)); // 100*/
System.out.println(sum(10, 20)); // 两个参数的方法
System.out.println(sum(10, 20, 30)); // 三个参数的方法
System.out.println(sum(10, 20, 30, 40)); // 四个参数的方法
// System.out.println(sum(10, 20, 30, 40, 50)); // 找不到任何方法来匹配,所以错误!
sum(10, 20);
}
public static int sum(int a, double b) {
return (int) (a + b);
}
public static int sum(double a, int b) {
return (int) (a + b);
}
public static int sum(int a, int b) {
System.out.println("有2个参数的方法执行!");
return a + b;
}
// 错误写法!与方法的返回值类型无关
// public static double sum(int a, int b) {
// return a + b + 0.0;
// }
// 错误写法!与参数的名称无关
// public static int sum(int x, int y) {
// return x + y;
// }
public static int sum(double a, double b) {
return (int) (a + b);
}
public static int sum(int a, int b, int c) {
System.out.println("有3个参数的方法执行!");
return a + b + c;
}
public static int sum(int a, int b, int c, int d) {
System.out.println("有4个参数的方法执行!");
return a + b + c + d;
}
}
5.构造方法
什么是构造方法
- 当一个对象被创建时候,构造方法用来初始化该对象。
- 构造方法和它所在类的名字相同,但构造方法没有返回值。
- 通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。
- 不管你是否自定义构造方法,所有的类都有构造方法,
- 因为Java自动提供了一个默认构造方法,默认构造方法的访问修改符和类的访问修改符相同(类为 public,构造函数也为 public;类改为 private,构造函数也改为 private)。
- 一旦你定义了自己的构造方法,默认构造方法就会失效。
例:
// 一个简单的构造函数
class MyClass {
int x;
// 以下是构造函数
MyClass() {
x = 10;
}
}
6.finalize()
Java允许定义这样的方法,它在对象被垃圾收集器析构(回收)之前调用,这个方法叫做 finalize( ),它用来清除回收对象。例如,你可以使用 finalize() 来确保一个对象打开的文件被关闭了。在 finalize() 方法里,你必须指定在对象销毁时候要执行的操作。
finalize() 一般格式是:
protected void finalize() { // 在这里终结代码 }
关键字 protected 是一个限定符,它确保 finalize() 方法不会被该类以外的代码调用。
当然,Java 的内存回收可以由 JVM 来自动完成。如果你手动使用,则可以使用上面的方法。