认识Java中String与StringBuffer以及StringBuilder
String(引用数据类型)
String对象一经创建就不会发生变化(在常量池里),即便是赋予新的值,也不是在原来的基础上改变,而是创建一个新的字符串对象,将引用指向这个对象,会造成空间的浪费;
String str1="abc"; 字符串 abc存在于常量池 , str1="sss"; 给str1赋予新的sss值,意味着在常量池增加了一个字符串sss,对原来的字符串abc并无影响;str1只是引用,str1由原来指向常量池中abc的地址转为指向常量池中sss的地址;

String的常用方法:
charAt(int index):根据索引返回对应的值;indexOf(String st):找st第一次在字符串中出现的位置;
length():返回字符串的长度;replace( char oldstr, char newstr)//replace( String oldstr, String newstr):将字符串中oldstr用newstr代替;
split():根据某个符号将字符串进行分割;substring(int beginindex,int endindex)//substring(int beginindex):返回一个子串,
trim():返回一个字符串,去掉前导和尾随空格; concat(String str):将指定的字符串拼接到字符串的末尾;
compareTo(String anotherstring):按字典顺序比较两个字符串;toString():返回的是一个字符串;
equals()方法比较的是字符串内容;endWith(String suffix):测试此字符串是否以指定的后缀结尾。
lastindexOf(String str)返回指定子字符串最后一次出现的字符串中的索引。
StringBuffer:
StringBuffer创建一个对象,是在同一个实例的基础上做改变,对字符操作效率高;
线程同步,线程安全效率低;
StringBuilder:线程不安全,并发操作,效率高;
单线程的情况使用StringBuilder比较好,多线程使用使用StringBuilder 加锁,也可以直接使用StringBuffer;
相对String,StringBuffer与StringBuilder另外独有的方法:
append(String str):将字符串加入到序列中;capacity();返回当前的容量;
delete(int start,int end):删除指定位置的字符串;delete(int index):删除指定的索引对应的字符;
reverse():导致序列被序列的相反代替;replace(int satr,int end,String str):用字符串代替指定位置的字符串;
insert(int s,String str):将字符串插入指定序列中
equals():默认比较的是内存地址,如比较内容需要重写equals;
两个等号(==):
基本数据类型:比较内容,引用数据类型:比较地址
String str1="";与String str2=null;的区别:
String str1="' 创建了一个长度为0的字符串,并且为其分配了内存空间;
String str2=null 声明了一个str2对象的引用,但是系统并没分配内存空间;
String st=new String("abc");在内存中有两个对象,堆区有一个new String,常量池有一个字符串;
过多关于String StringBuffer StringBuilder 的知识,看API,以及源代码进一步了解;
认识Java中String与StringBuffer以及StringBuilder的更多相关文章
- java中String、StringBuffer、StringBuilder的区别
java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可 ...
- Java基础知识(JAVA中String、StringBuffer、StringBuilder类的区别)
java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可 ...
- Java基础——java中String、StringBuffer、StringBuilder的区别
(转自:http://www.cnblogs.com/xudong-bupt/p/3961159.html) java中String.StringBuffer.StringBuilder是编程中经常使 ...
- Java中String、StringBuffer、StringBuilder区别与理解
一.先比较String.StringBuffer.StringBuilder变量的HashCode值 使用System.out.println(obj.hashcode())输出的时对象的哈希码, 而 ...
- Java中String、StringBuffer和StringBuilder之间的区别
String在Java中是字符串常量 例如 String str = "abc"; str = str + 1; System.out.println(str); 结果将是abc1 ...
- java中String、StringBuffer和StringBuilder的区别(简单介绍)
简单介绍 java中用于处理字符串常用的有三个类: 1.java.lang.String 2.java.lang.StringBuffer 3.java.lang.StrungBuilder 三者共同 ...
- Java中String、StringBuffer、StringBuilder、StringTokenizer的区别
Java语言中,有4个类可以对字符或字符串进行操作,它们是Character.String.StringBuffer.StringTokenizer,其中Character用于单个字符操作,Strin ...
- Java中String、StringBuffer、StringBuilder
String 对象 String 创建机制 String 是 Java 语言中非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑,由源码可知,它是典型的 Immutable (不可变)类,被fi ...
- Java中String、StringBuffer和StringBuilder的区别
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6581009.html 在编程中,对于字符串拼接,我们可以用String类重载的+或concat(str).S ...
随机推荐
- 面试官问我:如何在 Python 中解析和修改 XML
摘要:我们经常需要解析用不同语言编写的数据.Python提供了许多库来解析或拆分用其他语言编写的数据.在此 Python XML 解析器教程中,您将学习如何使用 Python 解析 XML. 本文分享 ...
- Java必会之多线程
一.线程的基本知识 1.1 线程知识 进程和线程的关系和区别 线程: 线程是进程的基本执行单元,进程想要执行任务,必须要有线程.程序启动默认开启一条线程,这个线程被称为主线程. 进程: 进程是指在系统 ...
- kafka之一:kafka简介
现在从事java开发的同学,不论是在面试过程中还是在日常的工作中,肯定会碰到消息队列的情况,市面上消息队列有很多:kafka.rocketMQ.rabbitMQ.zeroMQ等,从本篇博客起计划分享一 ...
- Vue全家桶之组件化开发
Vue全家桶之组件化开发 一.组件 组件 (Component) 是 Vue.js 最强大的功能之一 组件可以扩展 HTML 元素,封装可重用的代码 二. 组件注册 2.1 全局注册 Vue. ...
- mybatis的多参数传递,使用
1.mybatis的多参数使用 mapper 使用 通过@param注解,传递到xml中的参数名称指定 public interface RedisInstanceTypesMapper extend ...
- SystemML大规模机器学习,优化算子融合方案的研究
SystemML大规模机器学习,优化算子融合方案的研究 摘要 许多大规模机器学习(ML)系统允许通过线性代数程序指定定制的ML算法,然后自动生成有效的执行计划.在这种情况下,优化的机会融合基本算子的熔 ...
- 编译原理-一种词法分析器LEX原理
1.将所有单词的正规集用正规式描述 2.用正规式到NFA的转换算 得到识别所有单词用NFA 3.用NFA到DFA的转换算法 得到识别所有单词用DFA 4.将DFA的状态转换函数表示成二维数组 并与DF ...
- 编译原理-文法(G)和语言(L)
1.设文法G2(S): S->AB A->aA|a B->bB|b G2(S)产生的语言是什么? 解:L(G2)={ambn|m,n≥1} 2.请给出产生语言为{anbn|n≥1}的 ...
- 04:全局解释器锁(GIL)
1 全局解释器锁(GIL) 0 pypy(没有全局解释器锁) cpython(99.999999%) -pypy python好多模块用不了,1 全局解释器锁,GIL锁(cpython解释器的问 ...
- Maven笔记(更新中)
Maven 1.学习目标 会使用maven构建项目的命令 会使用maven构建java项目和java web项目 依赖管理--传递依赖 版本冲突处理 在web的单个工程中实现jsp+servlet整合 ...