尚硅谷JavaSE基础
5.4 方法
5.4.1 方法的概念
1. 什么是方法
- 方法是类或对象行为特征的抽象,也称为函数。
- Java里的方法不能独立存在,所有的方法必须定义在类里。
方法也可以描述为是某个功能的执行体, 一个方法通常对应一个功能.
2. 为什么使用方法
比如要想完成某种功能, 需要执行10行代码, 我们在程序中需要这个功能时,就把这10行代码写出来就可以了, 但是如果要多次使用这个功能, 虽然可以通过复制这10行代码的方式来完成功能, 但是效率低, 并且不利于维护. 所以我们通常把具有特定独立功能的一些代码封装到一个方法中, 这样, 只需要简单地调用这个方法就可以自动完成功能了.
3. 方法和属性的关系
Java里的方法不能独立存在,所有的方法必须定义在类里, 而属性也是定义在类里的, 所以方法和属性都是隶属于类的, 方法和属性是平等的关系.
属性用于描述事物的特征数据.
方法用于描述事物的功能行为.
5.4.2 方法的声明与调用
1. 方法的声明语法
修饰符 返回值类型 方法名(参数类型 形参1,参数类型 形参2,….){
程序代码
return 返回值;
}
其中:
形式参数:在方法被调用时用于接收外部传入的数据的变量。
参数类型:就是该形式参数的数据类型。
返回值:方法在执行完毕后返还给调用它的程序的数据。
返回值类型:方法要返回的结果的数据类型。
实际参数:调用方法时实际传给函数形式参数的数据。
注意 :
- 一个类中可以有多个方法。
- 方法中只能调用方法,不可以在方法内部定义方法。
- 方法声明不是方法调用
如果某个方法只是单纯的执行一些代码, 并没有计算结果返回, 那么返回值类型就是void
表示方法没有返回值, 此时方法中的return可以省略, 或者也可以仅使用return; 表示方法结束.
public class Person { public int add(int a, int b) { int c = a + b; return c; } public void test() { System.out.println(“test()”); return; } } |
2. 方法的声明的构成
方法声明的构成包括 方法签名 + 方法体
3. 方法签名
方法签名包括 返回值类型 方法名(形参类型1 形参1, 形参类型2 形参2…)
方法名作用是用于定位方法是哪一个, 因为在一个类中可以有多个方法.
参数列表表示方法在执行时需要的数据, 参数列表也可以为空, 表示方法执行时不需要数据.
如上例中的int add(int a, int b)
4. 方法体
方法体就是方法签名后面的{}以及其中的所有内容, 方法体才是方法在调用时实际执行的代码
那么方法签名的作用是什么呢? 签名是一个方法调用的参考, 方法在调用时应该严格按照方法签名来调用, 以防止出错.
如上面例子中的
{
int c = a + b;
return c;
}
5. 方法的调用
方法可以任何可以有语句的位置调用, 比如另一个方法中, 或另一个类的某方法中
调用语法是
对象引用.方法名(实参值1, 实参值2…);
对象引用是方法所在的类的对象, 实参值1, 2 是根据方法签名中要求的数据类型而实际传递给方法的值.
public class Person { public int add(int a, int b) { System.out.println(“a + b”); int c = a + b; return c; } public void test() { System.out.println(“test()”); } } |
public class PersonTest { public static void main(String[] args) { Person t = new Person(); t.test(); // 当执行程序时, 打印输出”test()” } } |
6.方法的返回值
有的方法会返回一个结果值, 如上面的方法int add(int a, int b)
如果直接调用这个方法, 而不接收其返回值, 这个方法会执行并返回结果, 但是在main方法中没有保存, 返回值结果被丢弃了.
public class PersonTest { public static void main(String[] args) { Person t = new Person(); t.add(100, 200); // 如果这样调用, 只会打印输出”a + b” } } |
方法的返回值就是方法调用本身, 如上例中方法调用整体t.add(100,200) 就可以看作是300这个值了, 当然, 前提是方法必须先都执行完才能返回300, 所以我们可以选择接收返回值.
public class PersonTest { public static void main(String[] args) { Person t = new Person(); int n = t.add(100, 200); //这样调用, 会打印输出”a + b” 并把300保存在n中 System.out.println(n); //输出300 System.out.println(t.add(30, 50)); // 输出80 } } |