写一个简单的代码
运行之后发现还是有空格的存在
原因是没有提供任何方法去改变它的内容,肯定有疑问,trim()不是去掉空格吗?,substring
()不是获得子字符串吗?其实把上面的trim方法换成什么都不会改变原字符串,而是返回新的字符串,例如:
注意:只是string类中无法进行修改,而不是无法修改,可以用反射来实现对原字符串的修改
发现可以进行修改
代码如下:
package com.me.test; import java.lang.reflect.Field; /** * @author sbr * @create 2020-11-17 10:34 */ public class Stirng { public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { String name=" a b c "; String tname=name.trim(); System.out.println("!!"+name+"!!"); System.out.println("!!"+tname+"!!"); final Field declaredField = String.class.getDeclaredField("value"); declaredField.setAccessible(true); final char[] cs =(char[])declaredField.get(name); cs[0]='a'; cs[6]='a'; System.out.println(name); } }