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. Spring Cloud Alibaba(13)---Sleuth概述

    Sleuth概述 前言 在微服务架构中,众多的微服务之间互相调用,如何清晰地记录服务的调用链路是一个需要解决的问题.同时,由于各种原因,跨进程的服务调用失败时,运维人员希望能够通过 查看日志和查看服务 ...

  2. kafka之二:手把手教你安装kafka2.8.0(绝对实用)

    前面分享了kafka的基本知识,下面就要对kafka进行实操,先看如何安装. kafka需要zookepper的支持,所以要安装kafka需要有zookeeper的环境,zookeeper安装请参见& ...

  3. 高频访问SQLite数据库

    SQLite 是一款开源的 SQL 数据库引擎,由于其自包含.无服务.零配置和友好的使用许可(完全免费)等特点,在桌面和移动平台被广泛使用. 在应用开发过程中,如果想保存点数据,自然而然地就会想到 S ...

  4. Raft: 一点阅读笔记

    前言 如果想要对Raft算法的了解更深入一点的话,仅仅做6.824的Lab和读<In Search of an Understandable Consensus Algorithm>这篇论 ...

  5. 浅谈:Redis持久化机制(二)AOF篇

    浅谈:Redis持久化机制(二)AOF篇 ​ 上一篇我们提及到了redis的默认持久化方式RDB,是一种通过存储快照数据方式持久化的机制,它在宕机后会丢失掉最后一次更新RDB文件后的数据,这也是由于它 ...

  6. 广播 (broadcasting)

    广播 (broadcasting) 飞桨(PaddlePaddle,以下简称Paddle)和其他框架一样,提供的一些API支持广播(broadcasting)机制,允许在一些运算时使用不同形状的张量. ...

  7. MindSpore后端运行类

    MindSpore后端运行类 Q:如何在训练过程中监控loss在最低的时候并保存训练参数? A:可以自定义一个Callback.参考ModelCheckpoint的写法,此外再增加判断loss的逻辑: ...

  8. 图像超分辨率算法:CVPR2020

    图像超分辨率算法:CVPR2020 Unpaired Image Super-Resolution using Pseudo-Supervision 论文地址: http://openaccess.t ...

  9. P4779 【模板】单源最短路径(标准版)单源最短路Dijkstra

    题目描述 给定一个$n$个点,$m$条有向边的带非负权图,请你计算从$s$出发,到每个点的距离. 数据保证你能从$s$出发到任意点. 输入格式 第一行为三个正整数$n,m,s$. 第二行起$m$行,每 ...

  10. 如何基于 String 实现同步锁?

    如何基于String实现同步锁? 在某些时候,我们可能想基于字符串做一些事情,比如:针对同一用户的并发同步操作,使用锁字符串的方式实现比较合理. 因为只有在相同字符串的情况下,并发操作才是不被允许的. ...