String想问个问题(小白)

wszagq 2015-08-28 04:14:25
String str ="abcdefg";
str.substring(0, 2);
System.out.println(str);

为什么没有截取到字符串 输出的还是abcdefg

我了解到 String 常量池不可改变。
如果String不能做操作改变 为什么这个类还有一系列的API呢。
...全文
150 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
新知识创未来 2015-08-28
  • 打赏
  • 举报
回复
语法上没错误。不过中间那句不新赋值确实没什么意义。
夜游侠 2015-08-28
  • 打赏
  • 举报
回复
你的代码没有编译上的问题,不会报错的,主要是没有重新引用,没达到你的目的而已
fjzhouxy 2015-08-28
  • 打赏
  • 举报
回复
我也是醉了,截取后的字,你没有引用那个字,所以还是原来的值,
马七甲 2015-08-28
  • 打赏
  • 举报
回复
你截取的字符串要记得引用
CNBLUE寻 2015-08-28
  • 打赏
  • 举报
回复
String str ="abcdefg"; str =str.substring(0, 2); System.out.println(str);
  • 打赏
  • 举报
回复
引用 1 楼 andre374 的回复:
请允许我笑一会儿先…… 哪有你这么着的…… String str ="abcdefg"; String slice = str.substring(0, 2); System.out.println(slice ); 请注意看方法的API
哈哈,淡定点 亲,你 str.substring(0, 2);确实截取了,只是你没有重新赋值给str,所以输出仍然是abcdefg 楼上几位都说的对
andre374 2015-08-28
  • 打赏
  • 举报
回复
引用 5 楼 wszagq 的回复:
关键我这么做 eclipse 不给我冒红 我就有点 摸不着头脑 这是不是属于那种什么 编译通过 运行不通过的啊。
你这么做没有任何问题,任何一个语句都是正确的,也不会引起错误,为啥要给你报错?软件又不是智能机器人,要是这么智能了还要你写程序?
wszagq 2015-08-28
  • 打赏
  • 举报
回复
关键我这么做 eclipse 不给我冒红 我就有点 摸不着头脑 这是不是属于那种什么 编译通过 运行不通过的啊。
andre374 2015-08-28
  • 打赏
  • 举报
回复
引用 3 楼 wszagq 的回复:
说白了 是我没重新赋值的原因呗。
正解,你切出来的字符串没有被引用,成了垃圾,然后过一段时间就被回收了
wszagq 2015-08-28
  • 打赏
  • 举报
回复
说白了 是我没重新赋值的原因呗。
andre374 2015-08-28
  • 打赏
  • 举报
回复
Returns a new string that is a substring of this string. The substring begins at the specified beginIndex and extends to the character at index endIndex - 1. Thus the length of the substring is endIndex-beginIndex. Examples: "hamburger".substring(4, 8) returns "urge" "smiles".substring(1, 5) returns "mile"
andre374 2015-08-28
  • 打赏
  • 举报
回复
请允许我笑一会儿先…… 哪有你这么着的…… String str ="abcdefg"; String slice = str.substring(0, 2); System.out.println(slice ); 请注意看方法的API

81,122

社区成员

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

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