java构造方法返回null_Java 中,构造方法是否有返回值?

首先,先说结论,按照最简单的方式理解就行了:构造方法没有 return 任何东西,所以没有返回值。

// 构造方法的声明,就像是一个没有返回值的方法声明。

a constructor declaration looks just like a method declaration that has no result

按照这个说法来说,应该认为构造方法是没有返回值的。而且请注意,构造方法“就像是”一个没有返回值的方法声明。

其次,如果往底层深究,假设有以下代码:

package footest;

public class Test {

private void foo() {

String s = new String("Hello World");

System.out.print(s);

}

}new 关键词对应于JVM中的 new指令(对于数组来说是 newarray),new指令会在堆内存中创建一个String 类型的对象(假设新创建的对象叫A),并把它的引用放在当前的栈顶;

JVM调用String类对应的构造方法进行初始化;

取出栈顶的值,并将它放在本地变量表中 `s` 对应的位置(完成赋值);

所有的这些,都是根据Java语言规范来的,按照 https://docs.oracle.com/javase/specs/jls/se12/html/jls-15.html#jls-15.9 里面规定的,new关键字对应的是一个 Class Instance Creation Expressions(类示例化表达式),这个 类实例化表达式是用来创建对象的,而构造方法正式在类创建的期间被执行用于对象初始化的,只有在构造方法执行完了,类示例化表达式 才算是完成了。

最后,其实这个问题有很大一部分是翻译的问题,因为“构造方法”这个中文翻译给太容易让人以为它是一个“成员方法”了。其实不然,构造方法在Java语言规范里面叫 “Constructor” ,并不是一个成员方法(成员方法叫 Method),其实应该叫 “构造器”更合适。

那么,这其实就是个翻译问题了,因为所谓的“构造方法(Constructot)”其实也不是一个“方法(Method)”,那么它自然就没有返回值不返回值的说法了。

破除了翻译带来的问题之后,再来看这个问题,你还会问“java中构造器是否有返回值吗?”?

最后,可以看下我的专门说明这个问题的文章:https://jiakaiyang.com/2020/03/28/java-is-constructor-a-method/#more​jiakaiyang.com

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值