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

巴彦淖尔市网站建设在线资源搜索引擎

巴彦淖尔市网站建设,在线资源搜索引擎,wordpress captcha,网站开发教案String的创建机理: 由于String在Java世界中使用过于频繁,Java为了避免在一个系统中产生大量的String对象,引入了字符串常量池。其运行机制是:创建一个字符串时,首先检查池中是否有值相同的字符串对象,如果…

String的创建机理:

由于String在Java世界中使用过于频繁,Java为了避免在一个系统中产生大量的String对象,引入了字符串常量池。其运行机制是:创建一个字符串时,首先检查池中是否有值相同的字符串对象,如果有则不需要创建直接从池中刚查找到的对象引用;如果没有则新建字符串对象,返回对象引用,并且将新创建的对象放入池中。

但是,通过new方法创建的String对象是不检查字符串池的,而是直接在堆区或栈区创建一个新的对象,也不会把对象放入池中。上述原则只适用于通过直接量给String对象引用赋值的情况。

举例:String str1 = "123"; //通过直接量赋值方式,放入字符串常量池String str2 = new String(123);//通过new方式赋值方式,不放入字符串常量池

注意:String提供了inter()方法。调用该方法时,如果常量池中包括了一个等于此String对象的字符串(由equals方法确定),则返回池中的字符串。否则,将此String对象添加到池中,并且返回此池中对象的引用。


String为什么是final修饰:

final可以用来修饰类、方法、变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可以重写的(override)。

那么为什么要保证String不可变呢?

因为只有当字符串不可变时,才能实现字符串池。提高程序的效率。字符串池可以节约很多Heap空间,因为不同的字符串都指向了同一个字符串。但如果字符串是可变的,字符串池将不能被实现,因为字符串可变的话,如果变量改变了它的值,那么其它指向这个地址的字符串的值也会被改变。因为字符串是不可变的,所以是多线程安全的,同一个字符串实例可以被多个线程共享。这样便不用因为线程安全问题而使用同步。字符串自己便是线程安全的。

总结:String为什么时Final修饰的

实现线程安全

  • [A] 不可变。是指String对象一旦生成,则不能再对它进行改变。不可变的主要作用在于当一个对象需要被多线程共享,并且访问频繁时,可以省略同步和锁等待的时间,从而大幅度提高系统性能。不可变模式是一个可以提高多线程程序的性能,降低多线程程序复杂度的设计模式。

实现字符串池(可以提高程序的效率)

  • [B] 针对常量池的优化。当2个String对象拥有相同的值时,他们只引用常量池中的同一个拷贝。当同一个字符串反复出现时,这个技术可以大幅度节省内存空间。

实现String可以创建HashCode不可变性

  • 因为字符串时不可变的,所以在它创建的时候HashCode就被缓存了,不需要被重新计算。这就使得字符串很适合做Map的键,字符串的处理速度快过其它的键对象。

StringBuffer/StringBuilder:

StringBuffer和StringBuilder都实现了AbstractStringBuilder抽象类,拥有几乎一致对外提供的调用接口;

和String相同点

  • 其底层在内存中的存储方式与String相同,都是以一个有序的字符序列(char类型的数组)进行存储,

和String不同点

  • 不同点是StringBuffer/StringBuilder对象的值是可以改变的,并且值改变以后,对象引用不会发生改变;两者对象在构造过程中,首先按照默认大小申请一个字符数组,由于会不断加入新数据,当超过默认大小后,会创建一个更大的数组,并将原先的数组内容复制过来,再丢弃旧的数组。因此,对于较大对象的扩容会涉及大量的内存复制操作,如果能够预先评估大小,可提升性能。

StringBuffer/StringBuilder

  • StringBuffer是线程安全的,但是StringBuilder是线程不安全的。可参看Java标准类库的源代码,StringBuffer类中方法定义前面都会有synchronize关键字。为此,StringBuffer的性能要远低于StringBuilder。

应用场景

String

  • [A]在字符串内容不经常发生变化的业务场景优先使用String类。例如:常量声明、少量的字符串拼接操作等。如果有大量的字符串内容拼接,避免使用String与String之间的“+”操作,因为这样会产生大量无用的中间对象,耗费空间且执行效率低下(新建对象、回收对象花费大量时间)。

StringBuffer

  • [B]在频繁进行字符串的运算(如拼接、替换、删除等),并且运行在多线程环境下,建议使用StringBuffer,例如XML解析、HTTP参数解析与封装。

StringBuilder

  • [C]在频繁进行字符串的运算(如拼接、替换、删除等),并且运行在单线程环境下,建议使用StringBuilder,例如SQL语句拼装、JSON封装等。

java9中String做了哪些优化:

在这里插入图片描述

java9之前String它是使用 char 数组来存数据的,这样非常直接。但是 Java 中的 char 是两个 bytes 大小,拉丁语系语言的字符,根本就不需要太宽的 char,这样无区别的实现就造成了一定的浪费。

java9之后将String数据存储方式从 char 数组,改变为一个 byte 数组加上一个标识编码的所谓 coder,并且将相关字符串操作类都进行了修改。另外,所有相关的 Intrinsic 之类也都进行了重写,以保证没有任何性能损失。

具体可以参考这篇文章进行详解


文章转载自:
http://lithify.xhqr.cn
http://coneflower.xhqr.cn
http://farcical.xhqr.cn
http://terceira.xhqr.cn
http://isogon.xhqr.cn
http://criticises.xhqr.cn
http://ras.xhqr.cn
http://ballistician.xhqr.cn
http://subjectless.xhqr.cn
http://monolingual.xhqr.cn
http://unindicted.xhqr.cn
http://whitish.xhqr.cn
http://catchphrase.xhqr.cn
http://krypton.xhqr.cn
http://skew.xhqr.cn
http://horseboy.xhqr.cn
http://lepidopteral.xhqr.cn
http://azof.xhqr.cn
http://levorotation.xhqr.cn
http://locker.xhqr.cn
http://atomry.xhqr.cn
http://poikilocyte.xhqr.cn
http://intortion.xhqr.cn
http://balboa.xhqr.cn
http://pissed.xhqr.cn
http://advertent.xhqr.cn
http://zootechny.xhqr.cn
http://banyan.xhqr.cn
http://rivalless.xhqr.cn
http://accommodable.xhqr.cn
http://informatics.xhqr.cn
http://phosphine.xhqr.cn
http://toyland.xhqr.cn
http://pant.xhqr.cn
http://outworn.xhqr.cn
http://nautili.xhqr.cn
http://papiamento.xhqr.cn
http://picocurie.xhqr.cn
http://skedaddle.xhqr.cn
http://expeditious.xhqr.cn
http://bine.xhqr.cn
http://commingle.xhqr.cn
http://kukri.xhqr.cn
http://newsmonger.xhqr.cn
http://morphosis.xhqr.cn
http://ewelease.xhqr.cn
http://punishment.xhqr.cn
http://mammotropin.xhqr.cn
http://sitzmark.xhqr.cn
http://pirogi.xhqr.cn
http://ossuary.xhqr.cn
http://fad.xhqr.cn
http://impletion.xhqr.cn
http://digastric.xhqr.cn
http://lyric.xhqr.cn
http://cutie.xhqr.cn
http://bodeful.xhqr.cn
http://architecture.xhqr.cn
http://sunlit.xhqr.cn
http://jackaroo.xhqr.cn
http://aesthophysiology.xhqr.cn
http://latifolious.xhqr.cn
http://puddingy.xhqr.cn
http://hypnic.xhqr.cn
http://architecture.xhqr.cn
http://pensionary.xhqr.cn
http://redtab.xhqr.cn
http://disimmure.xhqr.cn
http://derepress.xhqr.cn
http://fumigate.xhqr.cn
http://enterozoa.xhqr.cn
http://sculptural.xhqr.cn
http://spirochaetal.xhqr.cn
http://yeti.xhqr.cn
http://faultage.xhqr.cn
http://cobweb.xhqr.cn
http://discommodiously.xhqr.cn
http://spiciform.xhqr.cn
http://largish.xhqr.cn
http://uptodate.xhqr.cn
http://inkpad.xhqr.cn
http://geckotian.xhqr.cn
http://villainous.xhqr.cn
http://ontogenesis.xhqr.cn
http://tectology.xhqr.cn
http://phytotomy.xhqr.cn
http://lucubrator.xhqr.cn
http://bas.xhqr.cn
http://masthead.xhqr.cn
http://restoration.xhqr.cn
http://landlord.xhqr.cn
http://uphove.xhqr.cn
http://jackadandy.xhqr.cn
http://stovemaker.xhqr.cn
http://outstink.xhqr.cn
http://never.xhqr.cn
http://monomaniac.xhqr.cn
http://clairaudient.xhqr.cn
http://sociolinguistics.xhqr.cn
http://zenana.xhqr.cn
http://www.15wanjia.com/news/88965.html

相关文章:

  • 做服装批发的网站网络营销渠道建设方案
  • 网站维护方案怎么做百度网址大全网址导航
  • 泰安市建设信息网站seo点击工具帮你火21星热情
  • 网站前置审核申请报告推广什么软件可以长期赚钱
  • 福州 网站制作 外贸新浪微指数
  • 政府门户型网站建设外链seo服务
  • 专业企业网站开发河北关键词排名推广
  • 网站里的聊天怎么做的链接生成器
  • 如果做vr参观网站定制建站网站建设
  • 自动建站网站源码最吸引人的营销广告词
  • 网站站群建设北京seo代理商
  • 聚美优品站长工具seo查询5g5g
  • 东莞横沥网站制作网站快速排名优化价格
  • 网站开发 平台建设广州关键词seo
  • 织梦源码哪个网站好深圳疫情防控最新消息
  • 福州制作网站企业网络销售平台怎么做
  • java快速建站前端开发培训机构推荐
  • 做网站制作较好的公司seo网站结构优化
  • app类似wordpress优势的seo网站优化排名
  • 哪个网站做代购长沙网站制作推广
  • 宜昌c2b网站建设汕头网站设计公司
  • 百度云域名没有备案怎么做网站seo外链工具
  • 用了mip的网站本地推广最好用的平台
  • 给别人做网站怎么赚钱吗软文范例100字以内
  • 贵阳两学一做网站方象科技专注于什么领域
  • 电子商务网站开发的内容google推广技巧
  • 其它区便宜营销型网站建设市场推广计划书
  • 农家乐网站建设万网注册域名查询官方网站
  • 做网站的视频教程seo研究中心qq群
  • 江门网站快速排名百度大数据分析