对象里的地址值和值不可以被改变, 比如 String s = "abc" ; 那么abc就是一个对象,值一直都是abc
从源码的底层进行分析:
1,在String类的底层其实封装了一个字符数组,private final char value[];
同时在官方文档(API)里也有说明,事例如下:
String str = "abc";
等效于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
那么,也就说明刚才直接赋值的"abc"在String类的底层先把"abc"字符串转成对应
的字符数组,然后,再转成字符串的!!!
2,那么被private修饰的这个字符数组,外界不可以访问
同时String类也不可以被继承,因为被final所修饰,String类中没有提供公有的访问方式setValue() 和 getValue()
通过查看源码并没有发现,也就意味着一旦赋值后是无法改变的
3,被final修饰的引用数据类型说明地址值不可以被改变
String 是赋值是存储在常量池中的 |