一.方法的返回值

  当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行。当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行:

  • 执行完方法中所有的语句;
  • 遇到return语句;
  • 方法抛出一个异常(有关异常的内容将会在后面的文章中讨论)。

  这里我们重点介绍return语句。return语句用来返回一个值,当虚拟机遇到return语句时将会立刻结束当前方法并带着返回值回到调用此方法的地方。在声明方法时,返回值的类型要和return语句里返回的值的类型一致。如果方法没有需要返回的值,可以将返回值设置为void。在返回值类型为void的方法中也可以使用return语句,格式为:

return;

  它的作用仅仅是为了结束函数的执行。如果在返回值类型为void的方法中返回一个值,将会出现编译错误。
  返回值的类型既可以是基本数据类型,也可以是引用类型。当返回值类型是基本数据类型时,它返回的是基本数据类型的值;当返回值类型是引用类型时,它返回的是对这个对象的引用。
  当一个方法的返回值类型是一个类时,返回的值必须是对这个类或它的子类的对象的引用。当返回值类型是一个接口时,返回的值必须是对实现了这个接口的类的对象的引用。

二.this关键字

  在方法或构造器中,this用来引用当前对象,可以通过this来访问当前对象的所有成员。
  使用this关键字的最常见的原因是因为域会被方法中的参数或变量覆盖。此时,使用this关键字可以非常清晰的分辨它们而不是给变量或参数换一个名字。就像下面这样:

public class Point {
    public int x = 0;
    public int y = 0;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

  this关键字还可以用来代表构造方法。下面是另一个Rectangle类的实现:

public class Rectangle {
    private int x, y;
    private int width, height;
        
    public Rectangle() {
        this(0, 0, 1, 1);
    }
    public Rectangle(int width, int height) {
        this(0, 0, width, height);
    }
    public Rectangle(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }
    ...
}

  这样可以提高代码的复用性而不必为每一个构造器都编写类似的代码。在一个构造器中调用另一个构造器时,必须将这行代码放在第一行。

收藏 打印