黑马程序员技术交流社区
标题:
【已解决】构造函数有没有返回值?
[打印本页]
作者:
黑马杨晨
时间:
2012-8-27 15:15
标题:
【已解决】构造函数有没有返回值?
本帖最后由 黑马杨晨 于 2012-8-28 14:58 编辑
String str = new String("abc");
new 的时候调用构造函数,返回给str;
看似又有返回值?
作者:
杨锦
时间:
2012-8-27 15:27
1.构造函数是一种特殊的函数
2.函数名和类名一样, 没有返回值类型, 创建对象时自动调用
3.在定义一个类的时候, 如果希望别人创建对象时就执行某些操作, 那么就可以在构造函数中定义一些代码.
new一个对象只是在堆内存中创建一个对象,然后将对象的地址赋给str变量,并不是构造函数的返回值给了str
作者:
杨鹏鹏
时间:
2012-8-27 15:33
String Pool (字符串池)
String s = “ aaa ” ;
查找 String Pool 中是否存在“ aaa ”这个对象,如果不存在,则在 String Pool 中创建 一个“ aaa ” 对象,然后将 String
Pool 中的这个“ aaa ”对象的地址返回来,赋给引 用变量 s ,这样 s 会指向 String Pool 中的这个“ aaa ”字符串对象 2) 如果存在,则不创建任何对象,直接将 String Pool中的这个“ aaa ”对象地址返回来, 赋给 s 引用。
String s = new String( “ aaa ”);
首先在 String Pool 中查找有没有“ aaa ”这个字符串对象,如果有,则不在String Pool 中再去创建“ aaa ”这个对象了,直接在堆中( heap )中创建一个“ aaa”字符串对 象,然后将堆中的这个“ aaa ”对象的地址返回来,赋给 s 引用,导致 s 指向了堆中 创建的这个“ aaa ”字符串对象。 2) 如果没有,则首先在 String Pool中创建一个“ aaa “对象,然后再在堆中( heap )创 建一个” aaa“对象,然后将堆中的这个” aaa “对象的地址返回来,赋给 s 引用,导致 s指向了堆中所创建的这个” aaa “对象。
作者:
尤泽红
时间:
2012-8-27 15:36
你是String类名??
构造方法是一个特殊的方法,与一般方法有三点不同:
构造方法必须与类同名;
构造方法没有返回类型,连oid都没有;
构造方法调用在创建一个对象时使用new关键字执行。
主要作用初始化对象.
你的没有返回值
作者:
孙岳
时间:
2012-8-27 16:05
构造函数是没有返回值的,它是用来初始化对象的。
str是在栈内存中创建的一块空间的名字,堆内存中存的是abc,然后把abc所在的内存地址赋给str,
或者说str引用了abc所在地址,并没有返回值。
作者:
高廷平
时间:
2012-8-27 16:20
{:soso_e100:}这个真没有!{:soso_e121:}
作者:
王小涛
时间:
2012-8-27 17:22
楼主这样的说法貌似是把返回值和赋值的概念混淆了,
“返回给st”应改为“把“ abc ”的地址赋值给st”
作者:
焦晨光
时间:
2012-8-27 17:42
String str = new String("abc");
new 的时候调用构造函数,返回给str;
看似又有返回值?
严格来说,构造函数是没有返回值的。
它的作用仅仅是初始化对象,并返回该对象的实例
当然你也可以认为它有返回值,因为它返回了对象的实例
new String("abc");这条语句返回了一个对象的实例,并给该对象里的成员初始化初值
你觉得它有返回值 很正常
但是 严格来说 构造函数没有返回值
它只能通过new关键字来返回对象的实例
不能被void修饰 因此它没有返回值
返回的是一个对象实例
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2