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的更多相关文章

  1. java中String、StringBuffer、StringBuilder的区别

    java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可 ...

  2. Java基础知识(JAVA中String、StringBuffer、StringBuilder类的区别)

    java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可 ...

  3. Java基础——java中String、StringBuffer、StringBuilder的区别

    (转自:http://www.cnblogs.com/xudong-bupt/p/3961159.html) java中String.StringBuffer.StringBuilder是编程中经常使 ...

  4. Java中String、StringBuffer、StringBuilder区别与理解

    一.先比较String.StringBuffer.StringBuilder变量的HashCode值 使用System.out.println(obj.hashcode())输出的时对象的哈希码, 而 ...

  5. Java中String、StringBuffer和StringBuilder之间的区别

    String在Java中是字符串常量 例如 String str = "abc"; str = str + 1; System.out.println(str); 结果将是abc1 ...

  6. java中String、StringBuffer和StringBuilder的区别(简单介绍)

    简单介绍 java中用于处理字符串常用的有三个类: 1.java.lang.String 2.java.lang.StringBuffer 3.java.lang.StrungBuilder 三者共同 ...

  7. Java中String、StringBuffer、StringBuilder、StringTokenizer的区别

    Java语言中,有4个类可以对字符或字符串进行操作,它们是Character.String.StringBuffer.StringTokenizer,其中Character用于单个字符操作,Strin ...

  8. Java中String、StringBuffer、StringBuilder

    String 对象 String 创建机制 String 是 Java 语言中非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑,由源码可知,它是典型的 Immutable (不可变)类,被fi ...

  9. Java中String、StringBuffer和StringBuilder的区别

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6581009.html  在编程中,对于字符串拼接,我们可以用String类重载的+或concat(str).S ...

随机推荐

  1. selenium常用代码

    from selenium import webdriver # 1. 添加浏览器设置参数对象 options = webdriver.ChromeOptions() # 2. 设置中文,与下载无弹窗 ...

  2. Centos 7常见问题——SMBus Host Controller not enabled!

    在使用虚拟机Centos7操作系统偶尔会遇到,重启开机过程中出现如下图情况,无法正常开机 出现这种情况的可能原因就是你在虚拟机中添加了网卡或硬盘,还有给内存添加了容量之类就会导致开机有这种报错 解决方 ...

  3. C++编程计算图形的面积(圆、矩形)

    C++基础,while循环与if判断实现的计算图形面积 1 #include <iostream> 2 3 int main() { 4 while (true){ 5 int input ...

  4. mysql数据库-运维合集

    目录 RDBMS 术语 整删改查操作 库操作 表操作 账号与授权 匹配符(条件查询) MySQL三大类数据类型 函数 其他操作 查看数据库的占用空间大小 开启慢查询 状态查询 字符集设置 忘记密码重置 ...

  5. 微服务架构(Microservices) ——Martin Flower

    不知不觉到达了Sring Boot的学习中了,在学习之前,了解微服务架构是很有必要的,对于自己提升今后面试的软实力有很大帮助,在此写下. 让我们接下来看下Martin Flower 如何解释微服务架构 ...

  6. 在windows上 使用celery 报错

    在windows上 使用celery 报错       在windows上 使用celery 报错 ValueError: not enough values to unpack (expected ...

  7. java中的NIO和IO到底是什么区别?20个问题告诉你答案

    摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...

  8. 降维-基于RDD的API

    降维-基于RDD的API Singular value decomposition (SVD) Performance SVD Example Principal component analysis ...

  9. JUC 并发编程--10, 阻塞队列之--LinkedBlockingDeque 工作窃取, 代码演示

    直接上代码 class LinkedBlockingDequeDemo { // 循环是否结束的开关 private static volatile boolean flag1 = true; pri ...

  10. XML文件存在中文注释报错问题( 3 字节的 UTF-8 序列的字节 3 无效)

    今天在做mybatis项目的时候,给映射文件添加了中文注释后,程序就报错.把中文注释删除后,程序又可以正常执行.解决方法在下文提到. 我的xml映射文件如下: <?xml version=&qu ...