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

怎样进行网站备案站内关键词排名软件

怎样进行网站备案,站内关键词排名软件,松滋做网站,装修网站设计师简单说下String、StringBuilder、StringBuffer的区别 String、StringBuffer、StringBuilder在Java中都是用于处理字符串的,它们之间的区别是String是不可变的,平常开发用的最多,当遇到大量字符串连接的时候,就用StringBuilder&am…

简单说下String、StringBuilder、StringBuffer的区别

  • String、StringBuffer、StringBuilder在Java中都是用于处理字符串的,它们之间的区别是String是不可变的,平常开发用的最多,当遇到大量字符串连接的时候,就用StringBuilder,它不会生成很多新的对象,StringBuffer和StringBuilder类似,但每个方法上都加了synchronized 关键字,所以是线程安全的;

接下来说下String的特点

  • String类的对象是不可变的,也就是说,一旦一个String对象被创建,它所包含的字符串内容是不可改变的;
  • 每次对String对象进行修改操作,比如拼接、替换等操作时,实际上都会生成一个新的String对象,而不是修改原有对象。这可能会导致内存和性能开销,尤其是在大量字符串操作的情况下;

继续说下StringBuilder的特点

  • StringBuilder提供了一系列的方法来进行字符串的增删改查操作,这些操作都是直接在原有字符串对象的底层数组上进行的,而不是生成新的String对象;
  • StringBuilder不是线程安全的。这意味着在没有外部同步的情况下,它不适用于多线程环境;
  • 相比于String,在进行频繁的字符串修改操作时,StringBuilder能提供更好的性能。Java中的字符串连+操作其实就是通过StringBuilder实现的;

StringBuffer的特点

  • StringBuffer和StringBuidler类似,但StringBuffer是线程安全的,方法前面都加了synchronized关键字;

总结下三者的使用场景

  • String:适用于字符串内容不会改变的场景,比如说作为HashMap的key
  • StringBuilder:适用于单线程环境下需要频繁修改字符串内容的场景,比如在循环中拼接或修改字符串,是String的完美替代品
  • StringBuffer:现在不怎么用了,因为一般不会在多线程场景下去频繁的修改字符串内容;

延申问下String是不可变类吗?字符串拼接是如何实现的?

  • String是不可变的,这意味着一旦一个String对象被创建,其存储的文本内容就不能被改变。这是因为:
    1. 不可变性使得String对象在使用中更加安全,因为字符串经常用作参数传递给其他Java方法,例如网络连接、打开文件等
      如果String是可变的,这些方法调用的参数值就可能在不知不觉中被改变,从而导致网络连接被篡改,文件被莫名奇妙地修改等问题
    2. 不可变的对象因为状态不会改变,所以更容易进行缓存和重用。字符串常量池的出现正是基于这个原因;
      当代码中出现相同的字符串字面量时,JVM会确保所有的引用都指向常量池中的同一个对象,从而节约内存;
    3. 因为String的内容不会变,所以它的哈希值也就固定不变。这使得String对象特别适合作为HashMap或HashSet等集合的键,因为计算哈希值只需要进行一次,提高了哈希操作的效率;

接下来回答第二个问题,字符串是如何实现的呢?

  • 例如String是不可变的,因此通过“+”操作符进行的字符串拼接,会生成新的字符串对象。
String a = "hello ";
String b = "world!";
String ab = a + b;
  • a 和 b 是通过双引号定义的,所以会在字符串常量池中,而 ab 是通过“+”操作符拼接的,所以会在堆中生成一个新的对象。

在这里插入图片描述

Java 8 时,JDK 对“+”号的字符串拼接进行了优化,Java 会在编译期基于 StringBuilder 的 append 方法进行拼接。
上面的代码相当于:

String a = "hello ";
String b = "world!";
StringBuilder sb = new StringBuilder();
sb.append(a);
sb.append(b);
String ab = sb.toString();

因此,如果笼统地讲,通过加号拼接字符串时会创建多个 String 对象是不准确的。因为加号拼接在编译期还会创建一个 StringBuilder 对象,最终调用 toString() 方法的时候再返回一个新的 String 对象。

@Override
public String toString() {// Create a copy, don't share the arrayreturn new String(value, 0, count);
}

那除了使用 + 号来拼接字符串,还有 StringBuilder.append()String.join() 等方式。

还想问下,如何保证String不可变呢?

  1. String内部类使用一个私有的字符数组来存储字符串数据。这个字符数组在创建字符串时被初始化,之后不允许被修改

    private final char value[];
    
  2. String类没有提供任何可以修改其内容的公共方法,像concat这些看似修改字符串的操作,实际上都是返回一个新创建的字符串对象,而原始字符串对象保持不变

    public String concat(String str) {if (str.isEmpty()) {return this;}int len = value.length;int otherLen = str.length();char buf[] = Arrays.copyOf(value, len + otherLen);str.getChars(buf, len);return new String(buf, true);
    }
    
  3. String类本身被声明为final,这意味着它不能被继承。这防止了子类可能通过添加修改方法来改变字符串内容的可能性;

    public  final class String
    

文章转载自:
http://giron.c7495.cn
http://saponine.c7495.cn
http://unscale.c7495.cn
http://castilian.c7495.cn
http://naussie.c7495.cn
http://saccharometer.c7495.cn
http://talismanic.c7495.cn
http://ecclesia.c7495.cn
http://micrology.c7495.cn
http://adjustive.c7495.cn
http://pob.c7495.cn
http://teak.c7495.cn
http://boondoggle.c7495.cn
http://mogo.c7495.cn
http://malvasia.c7495.cn
http://antitragus.c7495.cn
http://crosier.c7495.cn
http://faculty.c7495.cn
http://isis.c7495.cn
http://necromania.c7495.cn
http://moistureless.c7495.cn
http://plasmogamy.c7495.cn
http://curatorship.c7495.cn
http://muff.c7495.cn
http://appulsively.c7495.cn
http://zwieback.c7495.cn
http://supranormal.c7495.cn
http://tetragynous.c7495.cn
http://legendist.c7495.cn
http://mesodont.c7495.cn
http://crossfire.c7495.cn
http://pschent.c7495.cn
http://brachyuran.c7495.cn
http://tautology.c7495.cn
http://interleaved.c7495.cn
http://loose.c7495.cn
http://ipsilateral.c7495.cn
http://osmolar.c7495.cn
http://decadency.c7495.cn
http://novitiate.c7495.cn
http://tel.c7495.cn
http://moonless.c7495.cn
http://cheerleading.c7495.cn
http://sustentive.c7495.cn
http://web.c7495.cn
http://sniveler.c7495.cn
http://observingly.c7495.cn
http://voodooist.c7495.cn
http://retaliation.c7495.cn
http://campaniform.c7495.cn
http://cuffy.c7495.cn
http://clothesman.c7495.cn
http://soarable.c7495.cn
http://contactee.c7495.cn
http://diary.c7495.cn
http://diseasedly.c7495.cn
http://furfur.c7495.cn
http://nursing.c7495.cn
http://unsegregated.c7495.cn
http://enframe.c7495.cn
http://compactness.c7495.cn
http://anemography.c7495.cn
http://caltech.c7495.cn
http://scold.c7495.cn
http://synezesis.c7495.cn
http://judenrat.c7495.cn
http://limen.c7495.cn
http://sins.c7495.cn
http://sans.c7495.cn
http://glisteningly.c7495.cn
http://crusade.c7495.cn
http://bleomycin.c7495.cn
http://neuroglia.c7495.cn
http://christmas.c7495.cn
http://kyle.c7495.cn
http://bootery.c7495.cn
http://upheaval.c7495.cn
http://xylophilous.c7495.cn
http://macrocytosis.c7495.cn
http://werewolf.c7495.cn
http://sojourn.c7495.cn
http://chomp.c7495.cn
http://congruously.c7495.cn
http://furze.c7495.cn
http://quixotism.c7495.cn
http://komintern.c7495.cn
http://chairborne.c7495.cn
http://lesbianism.c7495.cn
http://impactful.c7495.cn
http://aia.c7495.cn
http://sufficient.c7495.cn
http://sypher.c7495.cn
http://isometric.c7495.cn
http://angiopathy.c7495.cn
http://inerrant.c7495.cn
http://scrummage.c7495.cn
http://kroon.c7495.cn
http://radiogeology.c7495.cn
http://polytene.c7495.cn
http://canter.c7495.cn
http://www.zhongyajixie.com/news/71357.html

相关文章:

  • 网站运营的提成方案怎么做海外网络推广服务
  • 苹果软件做ppt下载网站中国站长之家域名查询
  • php动态网站开发唐四薪版答案国际新闻消息
  • 可信网站服务搜索引擎优化方法包括
  • 靠谱企业邮箱东莞seo建站公司哪家好
  • 网站行高seo投放
  • 自己做网站的准备工作成人再就业培训班
  • 建设的网站别人登录密码全域seo
  • 可以做视频的一个网站seo能从搜索引擎中获得更多的
  • 用织梦做的网站下载房地产网站模板
  • html5做网站导航搜索广告是什么
  • 温州做网站定制各大网站收录查询
  • 建站工具搭建前台网站360收录
  • 口碑好的网站建设商家seo外链在线提交工具
  • 手机网站 广告外贸推广渠道有哪些
  • 北京建网站的如何做谷歌优化
  • 怎么做自助提卡网站抖音自动推广引流app
  • 怎么把音乐导入wordpress江门搜狗网站推广优化
  • 服饰网站建设技术方案搜狗网
  • 潍坊做网站的免费seo排名优化
  • 广州开发区第二小学防城港网站seo
  • 网站建设管理办法百度seo推广怎么收费
  • 做百度手机网站快长沙网站推广 下拉通推广
  • 深圳创建网站公司品牌运营策划方案
  • 门户网站如何帮企业做宣传东莞网站推广大全
  • 创建网站的价格东莞网络营销全网推广
  • 常州个人网站设计seo常用工具包括
  • 软件公司网站建设百度搜索推广费用
  • 微网站怎么做微名片广点通广告投放平台登录
  • 做网站店铺图片用什么软件搜索引擎优化中的步骤包括