再解Java中的String
作者:网络转载 发布时间:[ 2014/5/8 11:04:49 ] 推荐标签:软件开发 Java
朋友问我String的内容是真的不可变吗?我肯定告诉他是的?因为在我的主观意识里String是一个不可变的对象。于是他给我发了这段程序:
|
public class StringTest {
public static void main(String[] args) throws Exception {
String a = "chenssy";
System.out.println("a = " + a);
Field a_ = String.class.getDeclaredField("value");
a.setAccessible(true);
char[] value=(char[])a.get(a);
value[4]='_'; //修改a所指向的值
System.out.println("a = " + a);
}
}
|
看到这个简单的程序,我笑了,你这不是从底层来修改String的值么?从这里来理解String的值肯定是可以改变的啦(我们应该始终相信String的不可变性)!接着他再给我一段程序:
|
public class StringTest {
public static void main(String[] args) throws Exception {
String a = "chenssy";
String b = "chenssy";
String c = new String("chenssy");
System.out.println("--------------修改前值-------------------");
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
//修改String的值
Field a_ = String.class.getDeclaredField("value");
a_.setAccessible(true);
char[] value=(char[])a_.get(a);
value[4]='_'; //修改a所指向的值
System.out.println("--------------修改后值-------------------");
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("chenssy");
System.out.println("c = " + c);
}
}
|
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
Java性能测试有哪些不为众人所知的原则?Java设计模式??装饰者模式谈谈Java中遍历Map的几种方法Java Web入门必知你需要理解的Java反射机制知识总结编写更好的Java单元测试的7个技巧编程常用的几种时间戳转换(java .net 数据库)适合Java开发者学习的Python入门教程Java webdriver如何获取浏览器新窗口中的元素?Java重写与重载(区别与用途)Java变量的分类与初始化JavaScript有这几种测试分类Java有哪四个核心技术?给 Java开发者的10个大数据工具和框架Java中几个常用设计模式汇总java生态圈常用技术框架、开源中间件,系统架构及经典案例等

sales@spasvo.com