可变的String字符串

简介

        String类使用char value[]来存字符数据,它的类型为:private final char value[];

可变的String字符串_第1张图片

        看上去它是不可更改的,因为是final类型。注意:final只是表示不能指向其他地址,它里边的内容是可以更改的。

结论:String是可以更改的,使用反射,value.setAccessible(true),然后修改它即可。

如下:

public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
        String mode = "1234";
        System.out.println("改变前:mode=" + mode);
        Field field = mode.getClass().getDeclaredField("value");
        field.setAccessible(true);
        field.set(mode, new byte[]{'a', 'b', 'c'});
        System.out.println("改变后:mode=" + mode);
    }

输出结果:

改变前:mode=1234
改变后:mode=abc

你可能感兴趣的:(java,开发语言)