Java方法是语句的集合,在一起实现一些功能。
- 方法是解决一类问题的步骤的有序组合
- 尽量在一个方法中解决一个问题
- 方法类似于函数,是一段用于完成特定功能的代码片段。一般包含:
-
修饰符
-
返回值类型
-
方法名
-
参数类型(形式参数、实参)
(1)形式参数只是定义作用
-
方法体
为了实现往相同的方法传递不同的参数。
不带参数的构造器称为默认构造器
默认构造器与类同名,且修饰符相同
根据参数的类型能够区分不同的重载方法
不能根据返回值类型的不同区别重载方法
基本类型的重载规则类型小了,没匹配到方法,就将类型变大去匹配。如果类型大了,就缩小去匹配。
- 注意:类型大了,只能手动去强制降级类型,数据的值可能发生变化,但是编译器不报错。
Java中对对象采用的是值传递
-
一个方法不能修改一个基本数据类型的参数(数值型和布尔型)。
-
一个方法可以修改一个引用所指向的对象状态,但这仍然是按值调用而非引用调用。
-
上面两种传递都进行了值拷贝的过程。
JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法。
方法的可变参数的声明如下所示:
typeName... parameterName
在方法声明中,在指定参数类型后加一个省略号(…) 。
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
举例:
public class VarargsDemo {
//可变参数
public static void main(String[] args){
printMax(1,2,4,23,45,6);
printMax(9,2,4,5);
printMax(new double[]{1,2,3});
}
public static void printMax(double... numbers){
if (numbers.length == 0) {
System.out.println("没有传递参数");
return;
}
double res = numbers[0];
for(int i = 1; i < numbers.length; i++){
if(numbers[i] > res){
res = numbers[i];
}
}
System.out.println("最大值为:" + res);
}
}
finalize()方法,在对象被垃圾收集器析构之前调用
protected void finalize(){
//终结代码
}
protected能够确保该方法不会被该类以外的代码调用。
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");
}
}



