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. DDD兴起的原因以及与微服务的关系

    DDD为什么能火起来? 我们先不讨论DDD的定义, 先梳理一下DDD火起来的背景, 根据我学习的套路, 永远是为什么为先,再是解决什么问题,是什么东西, 最后如何使用.我们都知道这些年随着设备以及技术 ...

  2. ADAS超声波雷达

    ADAS超声波雷达 在倒车入库,慢慢挪动车子的过程中,在驾驶室内能听到"滴滴滴"的声音,这些声音就是根据超声波雷达的检测距离给司机的反馈信息. 倒车雷达系统,英文全称为REVERS ...

  3. 马斯克如何颠覆航天? 1/5385成本,c++和python编程!

    马斯克如何颠覆航天? 1/5385成本,c++和python编程! 5月31日,经历了重重困难,马斯克的SpaceX载人飞船成功发射,这是美国自2011年以来首次发射载人航天飞船,也是美国进入由商业主 ...

  4. Redux/Mobx/Akita/Vuex对比 - 选择更适合低代码场景的状态管理方案

    近期准备开发一个数据分析 SDK,定位是作为数据中台向外输出数据分析能力的载体,前端的功能表现类似低代码平台的各种拖拉拽.作为中台能力的载体,SDK 未来很大概率会需要支持多种视图层框架,比如Vue2 ...

  5. postman之内建变量的基础应用

    一.Postman有以下内建变量,适合一次性使用:{{$guid}}//生成GUID{{$timestamp}}//当前时间戳{{$randomInt}}//0-1000的随机整数 简单应用举例: 二 ...

  6. Selenium-python 之弹窗处理

    在Selenium-python 中,有时候需要对弹窗进行处理,比如获取弹窗上的内容.确定.取消.在弹窗上输入内容后点击确定-再次点出弹窗,需要专门的处理. 一.获取弹窗的内容 driver.find ...

  7. 在centos上安装docker

    安装docker 卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docke ...

  8. Go语言中slice作为参数传递时遇到的一些“坑”

    前言 相信看到这个题目,可能大家都觉得是一个老生常谈的月经topic了.一直以来其实把握一个"值传递"基本上就能理解各种情况了,不过最近遇到了更深一点的"小坑" ...

  9. javascript之强制类型转换

    在javascript中,常会发生强制类型转换的情况有以下几种 字符串拼接 var a = 1; var b = a + '1'; console.log(b); //11 ==运算符 var a = ...

  10. excel判断数据是否存在另一列中

    1.if(EXACT(A2,B2)=TRUE,"相同","不同"),A2,B2相同(字母区分大小写)则函数值true正确,反馈相同,反之返回不同.注:单元格值受 ...