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

人人车的网站找谁做的建立网站的基本步骤

人人车的网站找谁做的,建立网站的基本步骤,如何安全的做黄色网站,南通制作网站公司前言 看了一篇文章,大概是讲面试中的java基础的,有如题这么个面试题。我又翻了一些文章看了下,然后去看源码。看一下源码大概能更加了解一些。 String String类是final的,表示不可被继承,不可变的。注释上也有说明&…

前言

  看了一篇文章,大概是讲面试中的java基础的,有如题这么个面试题。我又翻了一些文章看了下,然后去看源码。看一下源码大概能更加了解一些。

String

  String类是final的,表示不可被继承,不可变的。注释上也有说明:

 

  

  其中用一个char[]来保存String的值。

 private final char value[];

  一旦赋值,就不可改变。看一下,操作string的源码,例如 substringreplaceconcat 等方法,最终结果都是返回 new String(...). 也就是重新创建了一个String对象。

 public String substring(int beginIndex, int endIndex) {if (beginIndex < 0) {throw new StringIndexOutOfBoundsException(beginIndex);}if (endIndex > value.length) {throw new StringIndexOutOfBoundsException(endIndex);}int subLen = endIndex - beginIndex;if (subLen < 0) {throw new StringIndexOutOfBoundsException(subLen);}return ((beginIndex == 0) && (endIndex == value.length)) ? this: new String(value, beginIndex, subLen);}

  

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);}

  

public String replace(char oldChar, char newChar) {if (oldChar != newChar) {int len = value.length;int i = -1;char[] val = value; /* avoid getfield opcode */while (++i < len) {if (val[i] == oldChar) {break;}}if (i < len) {char buf[] = new char[len];for (int j = 0; j < i; j++) {buf[j] = val[j];}while (i < len) {char c = val[i];buf[i] = (c == oldChar) ? newChar : c;i++;}return new String(buf, true);}}return this;}

StringBuffer 和 StringBuilder

  它两个都是继承自 AbstractStringBuilder 抽象类,不同的是StringBuffer类都是带有 synchronized 关键字的。也就是说,StringBuffer是线程安全的,而 StringBuilder不是。他们中的方法基本上调用 super的方法。也就是AbstractStringBuilder 里实现的方法

  平时用的比较多的就是 append 方法。我们看一下代码实现:

 public AbstractStringBuilder append(String str) {if (str == null)return appendNull();int len = str.length();ensureCapacityInternal(count + len);str.getChars(0, len, value, count);count += len;return this;}

  

private void ensureCapacityInternal(int minimumCapacity) {// 当append之后的长度大于当前value的长度的时候,需要重新生成一个char[]数组。if (minimumCapacity - value.length > 0) {value = Arrays.copyOf(value,newCapacity(minimumCapacity));}}

 

 public static char[] copyOf(char[] original, int newLength) {
     //重新创建一个char[]数组char[] copy = new char[newLength];
    //将之前的值赋值到该数组中System.arraycopy(original, 0, copy, 0,Math.min(original.length, newLength));return copy;}

  

 ensureCapacityInternal 方法中,将 value的值重新扩展比如  str.append("abc")。假如之前value的值为:{'h','e','l','l','o'},当调用 str.getChars方法之后,会将 abc 追加到value数组后,value值就变成 :{'h','e','l','l','o','a','b','c'}

 其实 getChars 方法只是做了一件事情 :System.arraycopy。

 如图:

 执行完arraycopy之后

总结

  String 不可变,StringBuffer和StringBuilder可变,但是StringBuilder非线程安全。可以根据他们不同的特性分情况使用。

 

转载于:https://www.cnblogs.com/panzi/p/8558810.html

http://www.lbrq.cn/news/2523151.html

相关文章:

  • 专业网站优化制作公司百度网站下载
  • 青岛网站设计手机怎么在百度上发布信息
  • 徐汇区网站建设哪家比较靠谱新人跑业务怎么找客户
  • 上海专业网站营销网站建设关键词排名
  • 上海个人网站制作公司高德北斗导航
  • 建站工具 风铃百度推广开户
  • 如何做网站商城国内产女装一线二线品牌知乎
  • wordpress运行加速长沙企业seo优化
  • 建设银行光明支行网站有哪些推广平台和渠道
  • 抚州公司做网站广告
  • 雅马哈摩托车官网宁波seo网络推广咨询热线
  • 推荐定制型网站建设福州seo服务
  • 简单的网站建设怎么做产品推广平台排行榜
  • 建设商城网站价格百度开车关键词
  • 乐清做网站培训百度百科搜索入口
  • 推荐 官网 潍坊网站建设为什么不建议去外包公司上班
  • 网站建设服务器托管策划公司厦门人才网个人版
  • 美食网站html模板2023新闻大事件摘抄
  • 常州网站建设费用综合型b2b电子商务平台网站
  • 织梦培训机构网站模板游戏推广员上班靠谱吗
  • 中央气象台官网上海专业的seo推广咨询电话
  • 成功案例展示网站电商培训机构有哪些?哪家比较好
  • 乐拾seo优化视频
  • 网站开发语言哪一种好些免费观看短视频的app软件推荐
  • 大型网站建设建设公司排名google下载安卓版
  • 连接国外网站做端口映射长沙网络推广只选智投未来
  • 中华智能自建代理网站最近发生的重大新闻事件
  • 免费 网站 平台网页优化公司
  • wordpress智能内部搜索引擎优化
  • 社群营销平台有哪些凯里seo排名优化
  • C++ 中 NULL 与 nullptr 有什么区别?
  • 第七章:进入Redis的SET核心
  • 光伏气象监测系统:当阳光遇见科技
  • Excel文件批量加密工具
  • 网络原理--HTTPHTTPS
  • buuctf_crypto26-30