String类的私有属性value 怎么初始化的

0o0o0o1 2016-01-06 03:56:07
String a = "abcd";
System.out.println(a.substring(0,2)); //ab
substring 返回 new String(value,beginIndex, subLen);
value 怎么初始化的


...全文
284 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
oh_Maxy 2016-01-07
  • 打赏
  • 举报
回复
引用 3 楼 u014227743 的回复:
[quote=引用 1 楼 oh_Maxy 的回复:] 可以看看源码呀。 String本身存字符串,就是通过char[]实现的,subString也只是截取数组不同位置的字符,再组合成新字符串对象的char[] 另外,jdk1.6和jdk1.7+的subString实现方式还不太一样,LZ有兴趣可以对比两个版本的源码
String a = "123" 此时没有调用String的构造器 value应该没值啊[/quote] 这里"123"是一个字符串常量,存在栈里的,和new String("123")是不一样的(这就是为什么String a="123";String b="123"; a == b为true的原因)。 当你"123".subString的时候,会将"123"隐式的达到new String("123")的效果。 简单理解,可以当做一种自动装箱的感觉。
0o0o0o1 2016-01-07
  • 打赏
  • 举报
回复
引用 1 楼 oh_Maxy 的回复:
可以看看源码呀。 String本身存字符串,就是通过char[]实现的,subString也只是截取数组不同位置的字符,再组合成新字符串对象的char[] 另外,jdk1.6和jdk1.7+的subString实现方式还不太一样,LZ有兴趣可以对比两个版本的源码
String源码中char[] value 是啥时初始化的 还是没看懂
0o0o0o1 2016-01-07
  • 打赏
  • 举报
回复
引用 1 楼 oh_Maxy 的回复:
可以看看源码呀。 String本身存字符串,就是通过char[]实现的,subString也只是截取数组不同位置的字符,再组合成新字符串对象的char[] 另外,jdk1.6和jdk1.7+的subString实现方式还不太一样,LZ有兴趣可以对比两个版本的源码
String a = "123" 此时没有调用String的构造器 value应该没值啊
oh_Maxy 2016-01-06
  • 打赏
  • 举报
回复
可以看看源码呀。 String本身存字符串,就是通过char[]实现的,subString也只是截取数组不同位置的字符,再组合成新字符串对象的char[] 另外,jdk1.6和jdk1.7+的subString实现方式还不太一样,LZ有兴趣可以对比两个版本的源码

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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