Java String类型值真的不可改变吗?
2015-03-05 17:02
281 查看
1.Java String 可以改变吗?
一直认为java 中String类型的值不能修改,主要是因为String是final的,而且里面没有设置值的set方法。但是可以通过反射机制改变值。例1
public class Test { public static void main(String[] args) throws Exception { String s="0123456789"; System.out.println("改变前:s=" + s); Field f = s.getClass().getDeclaredField("value"); f.setAccessible(true); f.set(s, new char[]{'a', 'b', 'c'}); System.out.println("改变后:s=" + s); } }
例1 结果:
改变前:s=0123456789 改变后:s=abc
例1 原因
String 类里有个 private final char value[]成员变量, String 类的值都是保存在这个value属性中。可以通过反射来改变这个值,达到改变String类值的目的。同理,通过这种方式
相关文章推荐
- Java String类型值真的不可改变吗?
- Java String类型值真的不可改变吗?
- Java中String类型的不可变性和驻留池
- java基础入门-你不知道的string-不可改变性与编译器优化
- String类型为什么是不可改变的?
- Java中String类型的不可变性和驻留池
- java基础入门-你不知道的string-不可改变性与编译器优化
- 为什么java中的String要设计成不能改变的类型
- JAVA String类型不可变
- java基础入门-你不知道的string-不可改变性与编译器优化
- Java String 设计为不可变类型的好处
- Java中String类型的不可变性和驻留池
- Java String 类型对象不能改变
- 详解Java中的String数据类型
- java里面InputStream类型转换成String类型怎么实现?
- 全面理解Java中的String数据类型
- java中数据类型转换 Integer String Long Float Double Date
- Java 数据类型 和 与String之间的转换
- 解析Java中的String对象的数据类型
- Java中String类型的参数传递问题的解析