Java字符串——String深入

转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10840495.html

一:字符串的不可变性

   1、可变 与 不可变 辨析

    Java中的对象按照创建后,对象的内容是否可以被修改,分为 mutable object 和 immutable object。【注意:是对象的内容不可变,而不是指向该对象的引用变量内容不可变。】

    我们常见的不可变对象是几个基本数据类型的包装类——Integer、Double、String等。【想想为什么?——Tips:出于节省内存开销,避免重复创建。】

    不可变类有5大基本原则:

    1)类定义时,添加final修饰符,保证类不被继承【即:不允许在子类中被修改】

    2)类定义时,其成员变量一概使用 final private 修饰,保证变量私有的同时不允许修改

    3)不提供可以修改成员变量的方法,包括setter

    4)在构造函数中采用deep copy的形式将参数值拷贝给成员变量,而不是直接将参数值赋给成员变量【因为引用类型的参数只是传了一个地址,这样在外部改变该地址的内容会导致不可变对象的成员变量改变】

    5)在成员变量的getter方法中,不能直接返回成员变量本身,而是返回成员变量的copy对象【这也是为了防止引用类型的成员变量被外部获取后,改变引用指向的对象值引起不可变对象的内容变化】

    

二:replaceFirst、replaceAll、replace 区别

三:String 对“+”的重载、字符串拼接的几种方式和区别

四:String.valueOf 和 Integer.toString 的区别

五:switch 对 String 的支持

六:字符串池、常量池(运行时常量池、Class 常量池)、intern

猜你喜欢

转载自www.cnblogs.com/ygj0930/p/10840495.html