Java方法是语句的集合,它们在一起执行一个功能。
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
方法的优点
-
使程序变得更简短而清晰。
-
有利于程序维护。
-
可以提高程序开发的效率。
-
提高了代码的重用性。
方法的命名规则
- 方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。
- 下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test_,例如 testPop_emptyStack。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
形式参数:在方法被调用时用于接收外界输入的数据
实参:调用方法是实际传给方法的数据
参数列表:当你在编写一个函数时,你不知道函数形参的类型或者是形参的长度时,你就可以使用参数列表来代替。
public void f(Object...objects) {
System.out.println("Object");
System.out.println(objects.length);
}
可变参数
JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法。
在方法声明中,在指定参数类型后加一个省略号(…) 。
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
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
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。
JAVA中方法的调用
JAVA中方法的调用主要有以下几种:
1.非静态方法
非静态方法就是没有 static 修饰的方法,对于非静态方法的调用,是通过对 象来调用的,表现形式如下。
对象名.方法()
public class InvokeMethod{
public static void main(String[] args){
InvokeMethod in = new InvokeMethod();
in.t1();
}
public void t1(){
System.out.printfln("t1");
}
}
2.调用静态方法
静态方法就是用 static 修饰的方法,静态方法的调用是通过类名来调用的, 表现形式如下:
类名.方法()
public class InvokeMethod{
public static void main (String[] args){
InvokeMethod.t2();
}
public static void t2(){
System.out.println("static t2....");
}
}
3.方法与方法之间的调用
方法与方法之间的调用,主要是在一个方法内部如何调用其他方法。
(1)静态方法内部调用其他方法
如果在本类当中,静态方法可以直接调用静态方法,
除了在 main 方法中,还可以在自定义的静态方法中直接调用。
如果在本类当中是非静态方法,就必须通过对象来调用。
public class InvokeMethod{
public static void main (String[] args){
t2();
}
public static void t2(){
System.out.println("static t2...");
}
public static void t1(){
//静态方法调用非静态方法需通过对象来调用
//InvokeMethod in =new InvokeMethod();
//in.t2();
t2();
System.out.println("static t1");
}
}
如果不在一个类当中,静态方法调用其他类中的静态方法,必须通过
类名.静态方法();
如果在不同类当中,静态方法调用其他类的非静态方法,需要导入该类中的包,以及通过创建对象调用。
(2)非静态方法内部调用
如果在本类中,非静态方法可以直接调用静态方法与非静态方法。
在不同类中,非静态方法调用其他类的静态方法,需要通过导入该类中的包,并且需要通过类名来调用
在不用类中,非静态方法调用其他类的非静态方法时,需要导入该类中的包,还需要通过创建对象来调用。