Java入门-讨论String中三种加法的区别

2016-02-19 20:26 4 1 收藏

下面这个Java入门-讨论String中三种加法的区别教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!

【 tulaoshi.com - 编程语言 】

  String中三种加法的区别

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  JAVA的确是一种令程序员陷入两难境地的言语, 确切的说是思想. 它提供了如此丰富的library,让程序员能够很容易的写出功能强大的程序. 同时它也封装了如此多的细节, 让程序员能够轻易的写出很拙略的程序. 它所代表的object指向思想设计之初是为了把程序员从纷繁复杂的编程细节中解放出来,来达到对已有程序的利用. 但是在编程 实际上又要求程序员了解其实现的细节而避免写出因调用已有library不正引起的performance慢的,耗费系统资源多的程序.通常成为一个优秀的JAVA程序员需要较长时间的经验积累,包括从程序的tuning中,或从其他有经验的程序员口中,才知道一定功能需要怎样实现,在程序中需要避免那些问题.但这往往是比较片面的,知其然而不知其所以然.我想大多数程序员都有类似的经历,举一个简单的例子,下面有三种对String的累加操作.
  ① String tmp = "a" + "b" + "c";
  ② String tmp = null;
           tmp+= "a";
           tmp+= "b";
           tmp+= "c";
  ③ String tmp = null;
           StringBuffer buf = new StringBuffer();
           buf.append("a");
           buf.append("b");
           buf.append("c");
           tmp = buf.toString();
  有些JAVA程序员在任意的用这三种方法的任一种,无视它们的区别.有 些程序员知道第三种方法好一直在用而不知其为什么好,以至于作为
  经验教条的传授给JAVA新手.真正的答案是什么呢?让我们揭开JAVA String Class和StringBuffer Class的封装面纱看看它的内部实现.在JAVA中的String Class是一个不可变类,所有对一个Sting Object的改变都回导致一个新的String Object的生成.那么对tmp+=a中+符号的实现呢?如果你注意一下StringBuffer的Javadoc会发现.JDK对它的实现是tmp=(new StringBuffer().append(tmp).append("a")).toSting(); 这样我们发现②这种方法在隐性生成了一个StringBuffer Object和一个String Object 再乘3就是六个object 的资源耗费.(还不包括String Class 和StringBuffer Class内部使用的Char[])而方法③只用了两个.也许有些程序员会对这些耗费不以为然,的确也是,不过在一些场景下它会成为perfamence的瓶颈.再回头看看①这种方法,它会被JAVA编译器编译为tmp=(new StringBuffer().append("a").append("b").append("c")).to String();我们发现做的和③方法是同样的事.

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1623685.html

延伸阅读
太极拳教程 浅谈太极拳中三种矛盾运动 太极拳是我国传统武术的瑰宝,也是现代人养生的好运动。练习太极拳的好处是强身健体,长期练习能祛病延年。太极拳的特点是阴阳变化,在太极拳练习中体现了对称变化,下面我们先学习一下太极拳教程吧! 太极拳中三种矛盾运动 初学太极拳会遇到很多问题,例如太极拳的矛盾运...
标签: 电脑入门
提到VMware大家就想起了虚拟机技术,虚拟机技术在最近的几年中得到了广泛的发展,一些大型网络服务商都开始采用虚拟机技术,不仅节省了投资成本,更节约了能源的消耗。 我们知道VMware也分几种版本,普通用户最常用的就是Workstation,但是不管使用哪种版本,我们都能发现在安装过程中让我们选择 网络模式。在默认情况下会选中桥接模式,但...
标签: 电脑入门
LVS集群采用三种ip负载均衡技术,即VS/NAT、VS/TUN和VS/DR技术,那么这三种负载均衡方式之间有哪些区别呢?下面图老师小编就给大家介绍下LVS的三种负载均衡方式的区别比较。 1、LVS的定义? LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基...
标签: Web开发
1、$()可以是$(expresion),即css选择器、Xpath或html元素,也就是通过上述表达式来匹配目标元素。 比如:$("a")构造的这个对象,是用CSS选择器构建了一个jQuery对象——它选择了所有的a/这个标签。如: $("a").click(function(){...}) 就是在点击页面上的任何一个链接时的触发事件。确切地说,就是jQuery用a/这个标签构建了一个对象$("a"),...
标签: 游戏动漫
《质量效应3》三种结局 三种体验《质量效应3》三种结局分别为:结局1(红光):摧毁所有的机械生命,结局2(蓝光):控制Reaper,结局3(绿光):融合全银河的有机和机械生命。不同的结局带我们完全不一样的体验。 《质量效应3》三种结局分别为:结局1(红光):摧毁所有的机械生命,结局2(蓝光):控制Reaper,结局3(绿光):融合全...

经验教程

287

收藏

100
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部