1.对象初始化
在使用 new 初始化对象时,系统通常使用默认的构造函数,这个构造函数没有返回值,格式为:
public class InitializeTest { private int a; // 默认构造函数 public InitializeTest() { } // 自定义构造函数 public InitializeTest(int a) { this.a = a; } }
虽然在使用 new 创建实例时,返回了这个对象的引用,但是这个与没有返回值的void方法不同
//void方法仍可以返回,直接返回return public void testMethod() { return; }
注意:构造函数与void返回值的区别:
(1)构造函数没有返回值,这个方法在调用到时一定会执行完整个方法,构造函数中使用return编译不通过,而且不会在中途退出(除非抛出异常);
(2)void 返回类型为空,简单的理解是什么都不返回。但是在方法(特别是在接口定义中),我们能识别出看出返回的类型,而构造函数是无法识别的。
通常在void返回类型使用return时,会中断方法调用,方法在执行过程中可以被终止。
究竟void方法返回了什么呢?其实什么也没有返回,只是终止调用,抽象的理解确实返回了一些东西,比如方法的控制权。(不必深究,知道大概意思即可)
2.方法重载
构造函数和普通方法都能够重载,重载的定义:方法名相同,参数列表唯一。(区别与重写 override)
典型的例子:查看String.valueOf,可以看到方法名虽然一样,但是参数类表不一样,编译器去没有报错。
public static String valueOf(Object paramObject) { return ((paramObject == null) ? "null" : paramObject.toString()); } public static String valueOf(char[] paramArrayOfChar) { return new String(paramArrayOfChar); } public static String valueOf(char[] paramArrayOfChar, int paramInt1, int paramInt2) { return new String(paramArrayOfChar, paramInt1, paramInt2); } public static String valueOf(boolean paramBoolean) { return ((paramBoolean) ? "true" : "false"); } public static String valueOf(char paramChar) { char[] arrayOfChar = { paramChar }; return new String(arrayOfChar, true); } public static String valueOf(int paramInt) { return Integer.toString(paramInt); } public static String valueOf(long paramLong) { return Long.toString(paramLong); } public static String valueOf(float paramFloat) { return Float.toString(paramFloat); } public static String valueOf(double paramDouble) { return Double.toString(paramDouble); }
注意:
不以返回值作区分重载方法的原因:有时候在调用函数时,会出现只调用方法,而忽略返回值的情形。