A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 布鲁Go 中级黑马   /  2014-1-18 17:05  /  1197 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Person
{
       Person(){
       //这里应该写什么,才能让newPerson打印的时候,能打印出空参数。而不是地址。
       }
}
class  Demo
{
       public static voidmain(String[] args)
       {
              Person p=new Person();
              //p.Person();
              String s=new String();
              System.out.println(p+"::::"+s);//在这里答应的s 是空参数,p 却不是,请问,上面的构造方法也怎么写,才能然p也答应出空参数
       }
}

……………………………………………………


4 个回复

倒序浏览
陈文杰 来自手机 中级黑马 2014-1-18 17:21:02
沙发
就算这样,s也是指向实体地址。空参数啥情况名字。
回复 使用道具 举报
不是在构造函数里写,而是在class Person里复写toString()方法,你直接System打印某个对象实际就是调用它的toString方法
回复 使用道具 举报
在打印一个对象时,默认调用的是toString()方法,而不是在构造函数中做什么
s是一个String类型变量,而String 类中复写了Object中的toString()方法,所以打印的时候按照String类里的toString()方法中的方式打印
而类都继承自Object ,你写的Person类中并没有覆盖Object类中的toString方法,所以打印,还是按照Object类中toString方法的方式打印,即类名@哈希值
回复 使用道具 举报
打印的是Person@18dd7404这信息吧,这跟数组一样,里面信息就代表着调用的是无参的构造方法,如果你写个有参的,再调用,这个信息就改变了。
直接打印的是Person整体的信息,而String() 是初始化一个新创建的 String 对象,使其表示一个空字符序列。
所以打印出来的是空字符序列
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马