Java中,构造函数没有返回值。请问没有返回值和返回值类型为void,有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中,构造函数没有返回值。请问没有返回值和返回值类型为void,有啥区别?相关的知识,希望对你有一定的参考价值。

我知道没有返回值和返回值类型为void,是不一样的。但是,到底哪里不一样呢?希望大侠们能举例说明。
希望不要以“这是规定”来回答该问题。我知道这是个“规定”。但是,Java的设计者为什么要做这样的规定呢?为什么让构造函数没有返回值,而不让构造函数的返回值为void呢?如果说为了不给编译器带来额外的麻烦,统一让所有的构造函数的返回值均为void也不会很麻烦啊。希望有大侠不仅能“知其然”,更能“知其所以然”

这就是规定,如果你现在自己做一个新语言的编译器,也可以规定构造函数必须加上void,或者一个特殊的返回值。
那么为什么构造函数没有返回值呢,主要是为了区分构造函数和其它方法。其实,你可以尝试在你的构造函数前加上void,你会发现编译可以通过,但是编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动调用。

下面有一个例子,你可以测试看看:

public class MyPrint
public void MyPrint() //这是一个方法,如果去掉void就是构造函数
System.out.println("method");


public test() //提示错误,方法声明错误,必须加上返回值


public static void main(String[] args)
MyPrint mp=new MyPrint(); //构造函数自动调用
mp.MyPrint(); //方法必须显示调用


参考技术A Java中创建对象的方法就是使new 关键字调用构造函数来创建对象(另一个创建对象的方法是clone()函数,他的返回值为Object),所以可以理解为构造函数的返回值是一个对象。
返回值类型为void才是真正的无返回值函数。

构造函数是使用new关键字来调用的。
其它函数是用对象名或类名加.的方式来调用的。
参考技术B 构造函数作用是在类初始化的同时初始化一些变量或参数,不需要返回值;
而void指的是方法,当一个方法只是完成某种功能计算时并不需要返回值。

比如说
class A

int a;
int b;
//构造函数
public A(int a,int b)
this.a = a;
this.b = b;

//void 方法,只是完成计算
void plus()
System.out.println(a+b);

参考技术C 这就是规定,没啥解释的
A a = new A();
会去寻找他的无参构造器,他不是一个方法不需要void;
参考技术D 规定就是规定。这是别人设计 Java 的编程哲学,不符合你的预期不代表它不合理!!

java中返回值和参数理解

1.什么是对象,为什么需要对象?

对象是类的一个实例(对象不是找个女朋友),有状态和行为。万物皆对象!

2.什么是函数,为什么需要函数?

习惯把函数也叫成方法,都是一个意思;函数是具备特定功能的一段代码块,解决了重复性代码的问题。
目的是为了提高程序的复用性和可读性。

3.什么是函数的返回值,什么是函数的参数?

函数返回值就是你所调用的函数返回给你的值。
形参:用来接收调用该方法时传递的参数。只有在被调用的时候才分配内存空间,一旦调用结束,就释放内存空间。因此仅仅在方法内有效。
实参:传递给被调用方法的值,预先创建并赋予确定值。

 

4.什么时候加返回值,什么时候加参数

package Test01;
public class Test01 {
public static void main(String[] args) {
Test01 test = new Test01();
//无参无返回
test.test1();
//有参无返回
test.test2("java");
//无参有返回
String test3 = test.test3();
System.out.println(test3);
//有参数有返回
String test4 = test.test4("java");
System.out.println(test4);
}
//无参无返回
public void test1() {
System.out.println("学:java!");
}
//有参无返回
public void test2(String name) {
System.out.println("学习:"+name+"!");
}
//无参有返回
public String test3() {
return "欢迎学习java";
}
//有参有返回
public String test4(String name) {
return "欢迎大家一起学习"+name+"!";
}

}

注意:

有返回值必须return

详情请参考

http://www.cnblogs.com/JinQing/p/6237013.html

以上是关于Java中,构造函数没有返回值。请问没有返回值和返回值类型为void,有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

一个方法可以有多少个参数多少个返回值 Java

java中方法没有返回值用啥作返回类型

一个方法可以有多少个参数多少个返回值 Java

java中构造方法和方法有啥区别

Feign调用微服务,返回值IPage报错

R语言每次运行结果返回值的个数为啥不同