- 浏览: 470626 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
excellent95:
谢楼主分享,确实是CSS图片问题
Struts2判断页面是POST方式提交还是GET方式提交 -
wangluo2:
javaBase那个包显示有问题啊pom文件那一行报错了
微信公众平台开发实战(08) 基于地理信息的服务(LBS) -
andilyliao:
jd技术这么渣也好意思出书,真是醉了
《京东技术解密》试读--十年磨一剑 -
bitray:
刘强东作序多什么,他也不会什么技术,腾讯出来帮他还不是因为腾讯 ...
《京东技术解密》试读--十年磨一剑 -
come_for_dream:
想试试搞这个
《大型分布式网站架构设计与实践》试读
String 与StringBuffer区别详解
1. 概念
1.1、 String 与 StringBuffer 的区别
String :在String 类中没有用来改变已有字符串中的某个字符的方法,由于不能改变一个Java 字符串中的某个单独字符,所以在JDK 文档中称String 类的对象是不可改变 的。
但是,不可改变的字符串具有一个很大的优点:编译器可以把字符串设为共享的。如果新建一个对象指向已有相同内容的String 对象,这会直接指向已有的对象(共享对象),而不会新建String 对象。
StringBuffer :StringBuffer 类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区。这样使用StringBuffer 类的append 方法追加字符。例如String 使用(+ )操作符添加字符到一个已经存在的字符串后面有效率得多。因为使用(+ )操作符每一次将字符添加到一个字符串中去时,字符串对象都需要寻找一个新的内存空间来容纳更大的字符串,这无凝是一个非常消耗时间的操作。添加多个字符也就意味着要一次又一次的对字符串 重新分配内存。使用StringBuffer 类就避免了这个问题。
1.2、 示例 1
代码清单1 :StringAndStringBuffer .java 片段
public static void stringReplace(String text) {
text = text.replace( 'j' , 'i' );
System. out .println( "text in stringReplace: " + text);
}
public static void bufferReplace(StringBuffer text) {
text = text.append( "C" );
System. out .println( "text in bufferReplace: " + text);
}
@Test
public void test1() {
String textString = new String( "java" );
StringBuffer textBuffer = new StringBuffer( "java" );
stringReplace (textString);
bufferReplace (textBuffer);
System. out .println(textString + textBuffer);
}
输出结果:
text in stringReplace: iava
text in bufferReplace: javaC
javajavaC
1.3、 解析
String 示例
1) 先创建了一个名textString 的String 类型的对象引用;
2) 创建一个内容为java 的String 对象(我们假定为对象a );
3) 将textString 引用指向对象a ;
4) 执行stringReplace 方法时,将textString 的地址copy 给text ,text 也指向了textString 的对象a ;
5) text.replace('j', 'i'); 的结果是生成新的String 类型对象b , 内容为"iava" ;
6) 这里要注意,String 对象时final 类型的,内容是不可以改变的,所以会新建一个String 类型的对象b ;
7) 所以,text = text.replace('j', 'i'); 就会重新使text 指向对象b ;
8) 由于该方法的返回类型是void, 所以原来的textString 没变。
StringBuffer 示例
1) 先创建了一个名textBuffer 的StringBuffer 类型的对象引用;
2) 创建一个内容为java 的StringBuffer 对象(我们假定为对象a );
3) 将textBuffer 引用指向对象a ;
4) 执行bufferReplace 方法时,把textBuffer 的地址copy 给text ;
5) 然后沿着text 指向的字符串( 其实也就是textBuffer 指向的对象) 操作,添加一个"C" ;
6) 虽然没有任何返回,但是这个操作影响到了textBuffer 所指向的字符串;
7) 所以这里打印"javaC" 。
1.4、 示例 2
代码清单2 :StringAndStringBuffer .java 片段
@Test
public void test2() {
// 生成一个新的引用对象,指向 String 对象 "java"
String textString = new String( "java" );
System. out .println( "HashCode: " + textString.hashCode() + "\tValue:"
+ textString);
// 引用对象指向新的 String 对象 "ja"
textString = textString.substring(0, 2);
// 前后指向不同的引用,所以 HashCode 不同
System. out .println( "HashCode: " + textString.hashCode() + "\tValue:"
+ textString);
// 生成一个新的引用对象,指向 StringBuffer 对象 "java"
StringBuffer textBuffer = new StringBuffer( "java" );
System. out .println( "HashCode: " + textBuffer.hashCode() + "\tValue:"
+ textBuffer);
// 直接操作 StringBuffer 对象,在后面加字符串 "abc"
textBuffer.append( "abc" );
// 前后引用指向不变,所以 HashCode 相同
System. out .println( "HashCode: " + textBuffer.hashCode() + "\tValue:"
+ textBuffer);
}
输出结果:
HashCode: 3254818 Value:java
HashCode: 3383 Value:ja
HashCode: 17682935 Value:java
HashCode: 17682935 Value:javaabc
1.5、 源代码
见附件。
我的联系方式: 85337464
我的博客 1 : http : //coderdream.iteye.com/
我的博客 2 : http://coderdream.blogjava.net/
- StringAndStringBuffer.rar (4.1 KB)
- 下载次数: 5
- String与StringBuffer.pdf (289.4 KB)
- 下载次数: 8
发表评论
-
Spring Security 3.0 记住密码功能
2016-01-13 22:58 20621,在数据库中新增记录表 -- ---------- ... -
解决JavaMail发邮件抛出找不到SharedByteArrayInputStream类的异常
2011-07-22 11:21 7410在最近项目开发过程中 ... -
怎样让Word自动更新图片与表格编号
2010-12-31 17:03 11665怎样让Word 自动更新图片与表格编号 ... -
W3C_School在线教程chm版制作教程
2010-12-22 21:48 7634W3C_School 在线教程chm 版制作教程 ... -
Spring 3.0 新特性
2010-12-10 10:58 3357Spring 3.0 新特性 ... -
iText生成PDF时表头设置错误导出数据不能完全导出
2010-07-20 12:16 2145在利用iText生成PDF文件时,通常由于数据量比较多时会产生 ... -
事务管理入门-JDBC/Hibernate事务管理器/Spring注解 3种方式
2009-07-28 15:09 4640在软件开发过程中,经 ... -
JavaMail
2009-07-16 16:56 0javamail 怎样设置发件人的名字 http://to ... -
IBM Ajax系列教程
2009-02-16 20:39 1707第 1 部分: Ajax 简介 Ajax ... -
项目经验之弹出页面再弹出页面
2009-02-13 18:58 1060在项目中有这样一个场景,某弹出页面要弹出另一个: 弹出页面: ... -
正则表达式使用之替换多个字符串
2009-02-13 15:44 2533想一次性去掉某个文本文件中的某些字符串: 实现方式: 直接用竖 ... -
OGNL的jar档、文档和源代码
2009-02-05 09:25 51871、官方网站: http://mirrors.ibiblio. ... -
Calendar与java.sql.Date
2008-12-08 15:29 1662在Oracle数据库中,我们会有Date类型的数据,存储格 ... -
利用JavaScript控制单选框
2008-12-04 19:14 2273<script> function f(index ... -
JSP中使用JavaScript重定向页面
2008-12-03 10:04 3325第一种,不重定向,推荐使用。 function init( ... -
如何去掉 Code Pro 的警告标志
2008-11-07 16:35 1307Code Pro 是一个很好的代码格式检查工具,不过有时我们只 ... -
使用Struts提交多行数据
2008-11-07 11:27 3881使用Struts提交多行数据 http://blog.fl ... -
Ant使用经验
2008-10-22 10:18 12571、【示例1】: <?xml version=" ... -
利用JXL(JExcelApi)操作Excel文档
2008-10-09 10:51 51821、工具类: package com.coderdream. ... -
JSP下载文档
2008-10-07 14:08 18841、设置doc格式的文件弹出对话框: <?xml v ...
相关推荐
详解string与stringbuffer的区别,详述了String 是不可变,以及他们的再字符串连接时的效率区别!
详细的String特性和有关StringBuffer的区别比较
主要介绍了Java String 和StringBuffer的详解及区别的相关资料,需要的朋友可以参考下
主要介绍了java中 String和StringBuffer的区别实例详解的相关资料,一个小的例子,来测试String和StringBuffer在时间和空间使用上的差别,需要的朋友可以参考下
NULL 博文链接:https://hui-jing-880210.iteye.com/blog/2173150
主要介绍了Java 中String StringBuilder 与 StringBuffer详解及用法实例的相关资料,需要的朋友可以参考下
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间有什么区别呢?下面小编给大家总结了Java中String、StringBuffer、StringBuilder的区别详解,需要的朋友参考下吧
主要介绍了java String、StringBuilder和StringBuffer的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
一、String类 String的部分源码如下 public final class String implements java.io.Serializable, Comparable, CharSequence { /** The value is used for character storage. */ private final char value[]; ...
StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。 所以在实际使用时,如果...
详解Java的String类型程序,直接运行
StringBuffer与String类似,只不过StringBuffer在进行字符串处理时不生成新的对象,下面我们就来详解Java中字符串缓冲区StringBuffer类的使用:
内容讲解了Java的字符串实现String和StringBuffer,以及对应的方法,同时包含讲解的测试例子。
因为参数 str 是一个引用,而且它与 string 是不同的引用,虽然它们都是同一个对象的引用。str = "World" 则改变了 str 的值,使之指向了另一个对象,然而 str 指向的对象改变了,但它并没有对 "Hello" 造成任何影响...
Java面试常见问题,详解 super this String StringBuffer
031101_【第11章:Java常用类库】_StringBuffer笔记.pdf 031102_【第11章:Java常用类库】_Runtime类笔记.pdf 031103_【第11章:Java常用类库】_国际化程序笔记.pdf 031104_【第11章:Java常用类库】_System类笔记....
9.2 StringBuffer类的使用231 9.3 StringBuilder类的使用233 9.4 日期类简介234 9.5 Java语言国际化时间获取与计算238 9.6 Random类和Math类240 9.7 本章习题243 第10章 10.1 异常概述246 10.2 使用try和catch捕获...