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

学生怎么做网站全球品牌网

学生怎么做网站,全球品牌网,做网站接单渠道,wordpress设计笔记String 对象作为 Java 语言中重要的数据类型#xff0c;是内存中占据空间最大的一个对象。高效地 使用字符串#xff0c;可以提升系统的整体性能。 来一到题来引出这个话题 通过三种不同的方式创建了三个对象#xff0c;再依次两两匹配#xff0c;每组被匹配的两个对象是否… String 对象作为 Java 语言中重要的数据类型是内存中占据空间最大的一个对象。高效地 使用字符串可以提升系统的整体性能。 来一到题来引出这个话题 通过三种不同的方式创建了三个对象再依次两两匹配每组被匹配的两个对象是否相等 代码如下 结尾有东西 String 的不可变性 了解了 String 对象的实现后你有没有发现在实现代码中 String 类被 final 关键字修饰 了而且变量 char 数组也被 final 修饰了。 我们知道类被 final 修饰代表该类不可继承而 char[] 被 finalprivate 修饰代表了 String 对象不可被更改。Java 实现的这个特性叫作 String 对象的不可变性即 String 对 象一旦创建成功就不能再对它进行改变。 String 对象的优化 1. 如何构建超大字符串 字符串常量的累计 编程过程中字符串的拼接很常见。前面我讲过 String 对象是不可变的如果我们使用 String 对象相加拼接我们想要的字符串是不是就会产生多个对象呢例如以下代码 分析代码可知首先会生成 ab 对象再生成 abcd 对象最后生成 abcdef 对象从理论 上来说这段代码是低效的。 但实际运行中我们发现只有一个对象生成这是为什么呢难道我们的理论判断错了我 们再来看编译后的代码你会发现编译器自动优化了这行代码如下 String str abcdef; 字符串变量的累计 上面我介绍的是字符串常量的累计我们再来看看字符串变量的累计又是怎样的呢  上面的代码编译后你可以看到编译器同样对这段代码进行了优化。不难发现Java 在进 行字符串的拼接时偏向使用 StringBuilder这样可以提高程序的效率。 综上已知即使使用 号作为字符串的拼接也一样可以被编译器优化成 StringBuilder 的方式。但再细致些你会发现在编译器优化的代码中每次循环都会生成一个新的 StringBuilder 实例同样也会降低系统的性能。 所以平时做字符串拼接的时候我建议还是要显示地使用 String Builder 来提升系统性 能。 如果在多线程编程中String 对象的拼接涉及到线程安全你可以使用 StringBuffer。但 是要注意由于 StringBuffer 是线程安全的涉及到锁竞争所以从性能上来说要比 StringBuilder 差一些 2 如何使用String.Intern节省内存 Twitter 每次发布消息状态的时候都会产生一个地址信息以当时 Twitter 用户的规模预 估服务器需要 32G 的内存来存储地址信息。 考虑到其中有很多用户在地址信息上是有重合的比如国家、省份、城市等这时就可以 将这部分信息单独列出一个类以减少重复代码如下  通过优化数据存储大小减到了 20G 左右。但对于内存存储这个数据来说依然很大怎 么办呢 提供公共都有的部分 这个案例来自一位 Twitter 工程师在 QCon 全球软件开发大会上的演讲他们想到的解决 方法就是使用 String.intern 来节省内存空间从而优化 String 对象的存储 具体做法就是在每次赋值的时候使用 String 的 intern 方法如果常量池中有相同值就 会重复使用该对象返回对象引用这样一开始的对象就可以被回收掉。这种方式可以使重 复性非常高的地址信息存储大小从 20G 降到几百兆 为了更好地理解我们再来通过一个简单的例子回顾下其中的原理 输出结果 a b 在字符串常量中默认会将对象放入常量池在字符串变量中对象是会创建在堆内存中 同时也会在常量池中创建一个字符串对象复制到堆内存对象中并返回堆内存对象引用。 如果调用 intern 方法会去查看字符串常量池中是否有等于该对象的字符串如果没有 就在常量池中新增该对象并返回该对象引用如果有就返回常量池中的字符串引用。堆 内存中原有的对象由于没有引用指向它将会通过垃圾回收器回收. 了解了原理我们再一起看看上边的例子。 在一开始创建 a 变量时会在堆内存中创建一个对象同时会在加载类时在常量池中创 建一个字符串对象在调用 intern 方法之后会去常量池中查找是否有等于该字符串的对 象有就返回引用。 在创建 b 字符串变量时也会在堆中创建一个对象此时常量池中有该字符串对象就不 再创建。调用 intern 方法则会去常量池中判断是否有等于该字符串的对象发现有等 于abc字符串的对象就直接返回引用。而在堆内存中的对象由于没有引用指向它将 会被垃圾回收。所以 a 和 b 引用的是同一个对象。 下面我用一张图来总结下 String 字符串的创建分配内存地址情况 使用 intern 方法需要注意的一点是一定要结合实际场景。因为常量池的实现是类似于一 个 HashTable 的实现方式HashTable 存储的数据越大遍历的时间复杂度就会增加。如 果数据过大会增加整个字符串常量池的负担。 3. 如何使用字符串的分割方法 最后我想跟你聊聊字符串的分割这种方法在编码中也很最常见。Split() 方法使用了正则 表达式实现了其强大的分割功能而正则表达式的性能是非常不稳定的使用不恰当会引起 回溯问题很可能导致 CPU 居高不下。 所以我们应该慎重使用 Split() 方法我们可以用 String.indexOf() 方法代替 Split() 方法完 成字符串的分割。如果实在无法满足需求你就在使用 Split() 方法时对回溯问题加以重 视就可以了 结尾更容易懂 题解
http://www.w-s-a.com/news/616979/

相关文章:

  • 什么是网站功能源码下载站
  • 石家庄制作网站的公司双柏县住房和城乡建设局网站
  • 影视vip网站建设教程ppt模板免费下载 素材红色
  • 内蒙古城乡建设部网站首页平台网站建设ppt
  • 集约化网站建设项目官方网站建设
  • 原创先锋 北京网站建设网站开发电脑内存要多少
  • 婚恋网站建设项目创业计划书网站建设 食品
  • 免费建网站代码查询做导员的网站
  • 做网站的软件电子可以看女人不易做网站
  • 学校响应式网站模板下载仙居住房和城乡建设规划局网站
  • 推广网站的方法有拍卖网站建设
  • 网站建设网站排名优化中国网站服务器哪个好
  • asp网站应用程序网站建设需要提供的资料
  • 网站开发与设计.net微信小程序设计制作
  • 怎样做网站排名优化展馆设计费取费标准一览表
  • 网站建设去哪可接单网站建设与设计大作业
  • 休闲咖啡厅网站开发目标韩国小清新网站模板
  • 做微景观的网站制作网页模板适应不同分辨率
  • 最简单的网站系统昨天军事新闻最新消息
  • 做ps网页设计的网站有哪些wordpress内容付费
  • 有没有免费注册域名的网站科技小制作 手工 简单
  • 网站支付端口win10优化大师怎么样
  • 怎么做云购网站吗网站流量监测
  • 网站被恶意刷流量可以翻外墙的浏览器
  • 网站做直链下载存储解决方案怎么把网站设置为主页面
  • 西安做网站招聘深圳网站见
  • 网站怎么做优化百度能搜索到wordpress 子分类
  • 六安网站建设培训制作网站需要多少时间
  • 电子商务专业网站建设什么软件可以做动画视频网站
  • wordpress 分享主题做网站优化有必要