求解

dongjuntao1993 2019-04-03 09:01:58
jdk8中,String源码里String类的无参构造有一段代码: this.value = "".value; 请问各位,这一段什么意思,不太明白。
...全文
135 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2019-04-06
  • 打赏
  • 举报
回复
你把你的代码贴出来看看吧。“”.value调用不了上面已经说过了,value是private属性。我不知道你是怎么把源码改造的,你在自己的类里加上string的源码,“”也还是原来的string对象,因为jvm启动时string类会比你的类先加载,这是java的安全机制,防止别人篡改系统类。
dongjuntao1993 2019-04-06
  • 打赏
  • 举报
回复
引用 5 楼 qybao的回复:
这不是很常见吗,“”是个string对象,只是value是string类的private属性,所以你在其他类这样调用就出错。你可以调用别的public方法或属性试试,如“”.equals(“abc”) ,“”.hashCode()等等
你重新写个类试试,把String源码拷贝进去,你看看报错不报错!
qybao 2019-04-05
  • 打赏
  • 举报
回复
这不是很常见吗,“”是个string对象,只是value是string类的private属性,所以你在其他类这样调用就出错。你可以调用别的public方法或属性试试,如“”.equals(“abc”) ,“”.hashCode()等等
dongjuntao1993 2019-04-05
  • 打赏
  • 举报
回复
引用 1 楼 qybao的回复:
value是string类内部的char数组,无參构造方法,就让内部value数组和空字符串的value一样
但是没见过这种写法,"".value你见过吗?我在一个类里这样写,就是报错。
十八道胡同 2019-04-04
  • 打赏
  • 举报
回复
  /**
     * Initializes a newly created {@code String} object so that it represents
     * an empty character sequence.  Note that use of this constructor is
     * unnecessary since Strings are immutable.
     */
    public String() {
        this.value = "".value;
    }
其实他的注释写了,初始化自己为一个空的char集合
十八道胡同 2019-04-04
  • 打赏
  • 举报
回复
 /** The value is used for character storage. */
    private final char value[];
this.value = "".value 就是把空字符串的value数组赋值给自己的value数组,这样自己其实就是""了
qybao 2019-04-03
  • 打赏
  • 举报
回复
value是string类内部的char数组,无參构造方法,就让内部value数组和空字符串的value一样

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧