Immutable Strings 字符串对象不可变
来源:互联网 发布:怎么通过网络赚钱 编辑:程序博客网 时间:2024/06/01 10:21
1、字符串操作,几乎是计算机程序中最频繁的活动之一。
无论你写什么程序,总能看到它的身影。
2、对于这样的对象,太忙了,不再安排新活让它干,哪么让它单独存在吧!
设置:1》final 类,不继承,无子类。
2》对象也是不可变,如果原对象的数据要加工,哪么建立一个新对象,
里面的数据,初始化时建立,对象活着的时间总和数据绑定在一起,不能改,只能看一下或复制一份
3、final 类,主要功能:只存数据,不存在一个String 对象和另一个对象相连。
1》 private final char value[]:只有在建立String 对象时赋值,就再不变了。
2》String qq = upcase(q);
upcase(String s) :方法参数里面的String s只是一个空实例变量,等待别人传入值,但是从方法的初始化来说,应该在堆栈本地变量中,分配了一个4个字节,什么也不 放, 等待别人传一个地址过来,而且方法初始化应该是在运行时,对象才开始调用方法。
s=q 地址相同,指向同一对象,所以不建立新的String s对象。
哪么 就相当把String q对象取一个别名s,所以堆中没有建立任何数据。
3》s=q 指向同一对象,执行 s.toUpperCase(),执行过程中主要是这句,会复制对象的值放入char[] 中。
System.arraycopy(value, 0, result, 0, firstLower);
value:就是对象的值。
char[] result = new char[len]; //原始的字符数组,把值复制到这里面。
return new String(result, 0, len + resultOffset); 进行转换,形成一个新字符串
4、例子
package str;import static net.mindview.util.Print.*;
public class Immutable {
public static String upcase(String s) {
return s.toUpperCase();
}
public static void main(String[] args) {
String q = "howdy";
print(q); // howdy
String qq = upcase(q);
print(qq); // HOWDY
print(q); // howdy
}
}
upcase:原始地址复制一份给函数 s,
1、q:literal 值(固定值)入inter池
2、qq:变量 值在堆中
图一:表示拷贝q的地址给 s,两个共用一个对象howdy 图二:表示upcase把数据改成大写,形成新的对象,放入堆中。
- Immutable Strings 字符串对象不可变
- 不可变(Immutable)字符串
- Immutable Objects 不可变对象
- java中不可变对象(Immutable)
- Java不可变对象(Immutable Objects)
- immutable Object 不可变对象设计模式
- Immutable(不可变)集合
- 不可变对象(Immutable Objects)in Java
- 什么是不可变对象(immutable object)?Java 中怎么创建一个不可变对象?
- 不可变类(immutable class)
- Java Immutable不可变类
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- PHP中VC6、VC9、TS、NTS版本的区别与用法详解
- 一阶段-EighteenthWork-1-字符流+缓冲流
- linux中S3C2440的物理地址映射到虚拟地址详解
- Python——XML解析
- The Solution to Leetcode 563 Binary Tree Tilt
- Immutable Strings 字符串对象不可变
- 一阶段-EighteenthWork-2-数据库操作
- 一阶段-EighthWork-1-字符流+缓冲流
- 一阶段-FifteenthWork-2-使用ArrayList
- 3D游戏社区内双人交互实现
- 一阶段-FifteenthWork-3-HashMap对象
- 一阶段-SeventeenWork-3-用户和密码信息保存到test.txt文件中
- Android圆形按钮,点击可以变色
- 1030. 完美数列(25)