String中三种加法的区别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();我们发现做的和③方法是同样的事.
分享到:
相关推荐
本实例中,我们将探讨如何利用C++的`std::string`来实现高精度加法运算。 首先,`std::string`在这里作为一个容器,用来存储由单个字符组成的数字,每个字符代表一个数字位。这种方式非常适合处理大整数,因为字符...
C++使用string的大数加法运算是一种常见的编程技术,特别是在大规模数据处理和科学计算领域中。本文将详细介绍如何使用C++的string类来实现大数的加法运算。 大数加法运算的定义 ----------------- 大数指的是远超...
`string`支持诸如加法运算符(`+`)、赋值运算符(`=、+=`)、比较运算符(`<、==`)以及索引访问(`[]`)等操作。 **示例代码:** ```cpp #include <string> #include int main() { std::string strinfo = ...
加法计算器代码是一种基本的程序设计任务,通常用于教学或初学者练习编程语言的基本语法和逻辑控制。在本文中,我们将深入探讨加法计算器代码的实现、涉及的关键知识点以及如何在不同编程语言中构建它。 1. **基本...
在编程领域,浮点数加法是常见的运算操作,尤其在科学计算和工程应用中尤为重要。C++作为一种强大的系统级编程语言,提供了内置的浮点数类型(如float和double)来支持这样的运算。本篇文章将深入探讨浮点数加法在...
在编程领域,16进制加法是一种基本的计算操作,尤其在处理计算机内存地址、颜色编码、硬件接口数据等场景中十分常见。本篇将深入探讨如何使用C++语言来实现16进制加法的程序。 首先,我们要了解16进制(Hexadecimal...
在计算机科学与编程领域中,汇编语言是一种低级程序设计语言,它与特定类型的处理器架构紧密相关。本文将深入探讨一个具体的汇编语言示例——“汇编十进制加法”,并详细分析其背后的原理和技术细节。 #### 概述 ...
4. **数据处理**:在这个加法计算器中,需要获取用户在EditText中输入的数字,这可以通过`getText().toString()`来实现,并将其转换为整数或浮点数。然后,两个数字相加的结果会显示在另一个TextView控件上。 5. **...
在MATLAB环境中,GUI(图形用户界面)是一种强大的工具,用于创建交互式应用程序。本教程将详细介绍如何使用MATLAB的GUIDE(GUI开发环境)来设计一个简单的加法计算器。 首先,我们需要理解GUI的基本概念。GUI是...
本文将深入探讨如何在计算机程序中实现"算两个数的加法"这一核心知识点。 首先,我们要理解计算机如何处理加法。在二进制系统中,计算机通过逻辑门电路(如与门、或门和非门)执行加法运算。对于简单的整数加法,...
Java AWT 和 Swing 提供了一种事件驱动的编程模型,允许程序响应用户的各种交互行为。在代码中,`addActionListener(this)` 将当前类(cal 类)注册为按钮的监听器。这意味着当按钮被点击时,`cal` 类中的 `...
在这个例子中,`BigInteger`类有一个成员变量`value`用于存储大数,`operator+`重载了加法操作符,实现了大数的加法逻辑。 在实际应用中,除了基础的大数加法,还可能涉及到大数减法、乘法、除法等操作。大数的高效...
在iOS开发中,创建一个简单的加法应用是一个很好的起点,尤其对于初学者而言。这个应用展示了如何构建用户界面(UI)以及实现基本的计算逻辑。接下来,我们将详细探讨标题和描述中涉及的知识点。 首先,我们需要...
### C++封装的多项式加法器:实现与关键技术点 #### 一、概述 本文将详细介绍一个基于C++封装的多项式加法器的设计与实现。该加法器不仅支持基本的多项式运算(包括加法、减法、乘法、求值、求导、求积分),还...
本文将详细讲解如何在C++中实现长整型加法运算,并探讨其背后的原理。 长整型加法的基本思路是类似于小学数学中的竖式加法。当两个整数相加时,我们从低位到高位逐位相加,如果某一位上的数字相加超过10,那么就会...
7. **编程实现**:在`execute.java`和`string.java`文件中,我们可以看到具体的实现代码。`execute.java`可能包含了主函数和调用逻辑,而`string.java`则可能包含了字符串解析和计算的核心功能。这两个文件的交互是...