当前位置: 首页 > news >正文

网站开发的技术可行性线上推广的方法

网站开发的技术可行性,线上推广的方法,销售型网站营销目标,公司网站怎么修改目录 概述 String是如何实现不可变的 String为何设计成不可变的 1.缓存和性能优化 2.安全性 3.线程安全性 4.API设计和预测性能 概述 String类的不可变性意味着一旦创建了一个字符串对象,它的值就不能被修改。 String是如何实现不可变的 查看源码 public …

目录

概述

String是如何实现不可变的

String为何设计成不可变的

1.缓存和性能优化

2.安全性

3.线程安全性

4.API设计和预测性能


概述

String类的不可变性意味着一旦创建了一个字符串对象,它的值就不能被修改。

String是如何实现不可变的

查看源码

public final class String implements java.io.Serializable, Comparable<String>, CharSequence {// 字符数组value用于存储字符序列private final char value[];// substring方法返回一个新的String对象public String substring(int beginIndex) {if (beginIndex < 0 || beginIndex > value.length) {throw new StringIndexOutOfBoundsException(beginIndex);}int subLen = value.length - beginIndex;if (subLen < 0) {throw new StringIndexOutOfBoundsException(subLen);}return (beginIndex == 0) ? this : new String(value, beginIndex, subLen);}// concat方法用于连接字符串并返回一个新的String对象public String concat(String str) {int otherLen = str.length();if (otherLen == 0) {return this;}int len = value.length;char buf[] = Arrays.copyOf(value, len + otherLen);str.getChars(buf, len);return new String(buf, true);}
}

1.String类被声明为final,这意味着它不能被继承。那么他里面的方法就是没办法被覆盖的。


2.用final修饰字符串内容的char[] (从JDK 1.9开始,char[]变成了byte[]),由于该数组被声明为final,一旦数组被初始化,就不能再指向其他数组


3.String类没有提供用于修改字符串内容的公共方法。例如,没有提供用于追加、删除或修改字符的方法。如儿果需要对字符串进行修改,会创建一个新的String对象。

String为何设计成不可变的

为什么要把String设计成不可变的呢? 有什么好处呢?


这个问题,困扰过很多人,甚至有人直接问过Java的创始人James Gosling。
在一次采访中James Gosling被问到什么时候应该使用不可变变量,他给出的回答是:
I would use an immutable whenever I can(我会尽可能使用不可变的。)


那么,他给出这个答案背后的原因是什么呢? 是基于哪些思考的呢?
其实,主要是从缓存、安全性、线程安全和性能等角度出发的。

1.缓存和性能优化

字符串是使用最广泛的数据结构。大量的字符串的创建是非常耗费资源的,所以,Java提供了对字符串的缓存功能,可以大大的节省堆空间。
JVM中专门开辟了一部分空间来存储Java字符串,那就是字符串池
通过字符串池,两个内容相同的字符串变量,可以从池中指向同一个字符串对象,从而节省了关键的内存资源。

String s="abcd";
String s2=s1;

对于这个例子,s和s2都表示"abcd",所以他们会指向字符串池中的同一个字符串对象.

但是,之所以可以这么做,主要是因为字符串的不变性。试想一下,如果字符串是可变的,我们一旦修改了s的内容,那必然导致s2的内容也被动的改变了,这显然不是我们想看到的。

缓存HashCode。由于字符串的不可变性,可以将字符串的哈希码(HashCode)缓存起来,这样在多次使用字符串的哈希码时就不需要重新计算,提高了性能。

2.安全性

String对象在Java中广泛用于存储敏感信息,例如密码、数据库连接等。如果String是可变的,那么它的值可以被修改,这可能导致潜在的安全漏洞。通过将String设计为不可变的,可以确保其值在创建后不能被修改,提高了数据的安全性。

3.线程安全性

不可变会自动使字符串成为线程安全的,因为当从多个线程访问它们时,它们不会被更改。
因此,一般来说,不可变对象可以在同时运行的多个线程之间共享。它们也是线程安全的,因为如果线程更改了值,那么将在字符串池中创建一个新的字符串,而不是修改相同的值。因此,字符串对于多线程来说是安全的。

4.API设计和预测性能

String的不可变性使得它的API设计更加简单和一致。在使用String时,我们可以放心地传递和接收String对象,不必担心它的值会被修改。此外,不可变性还使得String的哈希值和相等性判断可以预先计算,提高了这些操作的性能。

http://www.hrbkazy.com/news/27274.html

相关文章:

  • 免费的室内设计网站微商已经被国家定为传销了
  • 扬中热线论坛扬中人家广州百度网站排名优化
  • 宁波网站免费制作网络服务提供者知道或者应当知道
  • 上海高端网站定制开发广告联盟
  • 怎么做网站发货百度推广在哪里
  • 学校网站建设规划书实时热点新闻事件
  • 做早餐煲汤网站360优化大师官方网站
  • 网站建设论坛快速建站网络营销的推广方式都有哪些
  • 深圳优秀网站建设公司上海做网站优化
  • 深圳网站建设toolcat电商网站建设价格
  • 广州专业做网站建设重庆网站快速排名优化
  • 如何做自己的个人网站免费发布推广信息的平台
  • jsp网站建设上海优化价格
  • 网站建设设计的流程网络营销方法
  • 网站的维护工作内容广州抖音推广
  • 网站开发建设明细报价表网红推广
  • 网站建设没有业务怎么办河南网站建设
  • 什么网站做禽苗好的网站今天最新的新闻头条
  • 网站建设公司有多少钱什么是淘宝搜索关键词
  • 字画价格网站建设方案怎么优化自己公司的网站
  • 网站设计与制seo网站推广是什么
  • 淘宝客有必须做网站吗千网推软文推广平台
  • 徐州企业网站制作软文推广代理平台
  • 罗湖区住房和建设局网站官网vi设计
  • 站群服务器怎么自己开网站
  • 个人网站备案麻烦淘宝网店运营
  • 企业商城网站开发建设好的网站或网页
  • 做网站的后台用什么开发比较好可以推广的软件
  • 所有网站打不开漯河seo公司
  • 河池网络推广北京搜索引擎优化经理