网站下拉菜单怎么做,成都企业网站建设模板,网页设计平面设计,网络推广活动策划1、典型回答
对于这个问题#xff0c;Java之父詹姆斯 高斯林#xff08;James Gosling#xff09; 是这样回答的#xff1a; I would use an immutable whenever I can 翻译为中文#xff1a;只要允许#xff0c;我就会使用不可变对象 而作为普通人的我们来说#xff0…1、典型回答
对于这个问题Java之父詹姆斯 ·高斯林James Gosling 是这样回答的 I would use an immutable whenever I can 翻译为中文只要允许我就会使用不可变对象 而作为普通人的我们来说理解 String 为什么要用 final 来修饰可以从以下方面入手
1、安全性由于 String 是不可变类即不能被修改所以使用 final 修饰可以确保 String 类的内部结构不能被修改从而保证了 String 的数据的安全性。例如这幅图中的 “0X1010”系统中只要认定这个指针之后它就不能被改变了从而就保证了其安全性但是需要注意的是安全这个概念永远是相对的没有绝对的安全所以不要死扣字眼 2、线程安全性String 是不可变的因此多个线程可以同时访问和共享 String 对象而无需进行额外的同步措施。这样可以提高程序的并发性能并减少线程安全问题的出现。线程不安全是由于多个线程同时修改同一个变量才会导致线程安全问题而 String 是不可变的每次操作的都是新对象那么多个线程操作的就是各自的新对象了那么就不会有线程安全问题了
3、用作键值的准确性由于 String 的不可变性它可以安全地用作 HashMap、HashSet 等集合类的键值这样可以确保散列算法的准确性避免因修改 String 对象导致哈希值发生变化的情况
4、性能String 类在许多地方被广泛使用使用 final 修饰可以使编译器在编译时对 String 类进行一些优化从而提高程序的执行效率
2、全面剖析
使用 final 修饰 String 可以保证安全性、线程安全性、可稳定的用作键值和提供程序性能
在 String 的源码实现中不单单是类使用 final 修饰其中的很多属性也使用了 final 进行修饰了如下所示 3、知识扩展
String 既然是不可变的那么它的 “” 操作是怎么实现的呢
String “” 操作底层实现
当我们将字符串反编译的时候就能看出 String的 “” 操作是怎么实现了例如以下代码 以上代码反编译的代码如下使用 jad 反编译 从上述代码可以看出String的 “” 操作是使用 StringBuilder 的 append 来实现的
String、StringBuilder、StringBuffer 有什么区别-CSDN博客