jdk1.6 和 jdk1.7中的 substring(ing begin int end)中的不同
首先String 内部存储的仍然是一个char[]
String a = "abcdef" b= a.subString(0,1)
(1)1.6中b返回的仍然是a那块内存只是偏移量和边界不同,这时候如果a长度很大,b长度很小而且b生命周期长的话,容易内存泄露,如果想返回一个新的内存块呢 b= a.subString(0,1) + “” ,我们知道String是不可变对象,这样就新建了一个对象,
(2)1.7中b便是返回一个新的对象了
(3)如果是在1.6环境中,很多b这样的小块的话,这样的设计是很合理的,能起到节约内存的效果。