尚硅谷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

}

}