yunyuntop 2017-07-22 15:22 采纳率: 80%
浏览 6403
已采纳

打印String对象为什么输出的不是地址啊

String s = new String("abc");
System.out.println(s);
这输出是s的内容,这明明是对象的引用啊,是地址啊
如果这样
Student student =new Student();
System.out.println(student);却打印地址

  • 写回答

8条回答 默认 最新

  • 蓝色D风车 2017-07-23 03:19
    关注

    因为所有的类继承Object类,所以单独输出一个对象的时候,它会调用Object.toString(当然 你没有重写同String的话),打印出来的就是一串表达地址的字符串。图片说明
    图片说明
    图片说明
    就是这样,也就是最后调用了toString().
    然而我们的String类里重写了toString(),它返回的是String自己,String是什么呢,String其实就是字符数组(它内部封装 了一个字符数组),所以打印字符串,其实就是打印字符数组,而不是地址。图片说明
    可以看下源码更好理解

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • IT界的渣 2017-07-24 07:20
    关注

    String s = new String("abc");定义String不要这定义,这样 每次都会产生新的垃圾,即每次都会创建两个对象应使用String s="abc";

    评论
  • T_world 2017-07-23 00:56
    关注
    评论
  • oyljerry 2017-07-23 00:58
    关注

    println做了特殊处理,对于String对象直接打印内容

    评论
  • exception92 2017-07-23 02:22
    关注

    你在student类里重载Tostring方法 也可以输出属性字符串。String内部进行了处理吧,

    评论
  • TastyS 2017-07-23 02:43
    关注

    你试试对象.toString()
    System.out.print(s.toString());

    评论
  • weixin_38753930 2017-07-23 03:03
    关注

    println输出的是对象的toString()方法

    评论
  • lzl_Avery 2017-07-23 16:29
    关注

    你写一个String 按住ctrl 鼠标点左键 怎么进么看 String类重写了 toString()方法这就是原因所在

    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 我不明白为什么c#微软的官方api浏览器为什么不支持函数说明的检索,有支持检索函数说明的工具吗?
  • ¥15 ORBSLAM2框架跑ICL-NUIM数据集
  • ¥15 在我想检测ros是否成功安装时输入roscore出现以下
  • ¥30 老板让我做一个公司的投屏,实时显示日期,时间,安全生产的持续天数,完全没头绪啊
  • ¥15 Google Chrome 所有页面崩溃,三种解决方案都没有解决,我崩溃了
  • ¥20 使用uni-app发起网络请求,获取重定向302返回的cookie
  • ¥20 手机外部浏览器拉起微信小程序支付 (相关搜索:微信小程序)
  • ¥20 怎样通过一个网址找到其他同样模版的网址
  • ¥30 XIAO esp32c3 读取FDC2214的数据
  • ¥15 在工控机(Ubuntu系统)上外接USB蓝牙硬件进行蓝牙通信