Java—String和StringBuffer类

Java String 类

字符串在Java中属于对象,Java提供String类来创建和操作字符串。

创建字符串

创建字符串常用的方法如下:

​ 1.最简单的方法(等号赋值)

String str1="hello java";
String str2="hello java";

​ 这种直接赋值的方法,在堆中创建常量值。如本例,str1 初始化赋值 hello java ,在常量值中没有,然后开辟空间创建 ”hello java“ 到常量池中,str2 初始化赋值 hello java ,在常量池中找到 ”hello java“ ,不要在开辟新的空间。

if(str1==str2){return ture;}else{return false;}

​ 由于 str1 和 str2 公用同一个 ”hello java“ 所以返回true。(可以理解为指向的内存空间相同)

​ 2.用构造函数创建字符串

String str=new String(str);

​ 该方法,在堆中开辟一个空间创建String类( str 为类名)

**注意:**String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了

String中的方法

1. charAt()方法

public char charAt(int index) {
if (isLatin1()) {
return StringLatin1.charAt(value, index);
} else {
return StringUTF16.charAt(value, index);
}
}
/*
参数:index–字符值的索引。
返回值:此字符串指定索引处的char值。第一个char值位于索引0处。
抛出:索引超出边界异常–如果索引参数为负或不小于此字符串的长度。 */

charAt()方法用于返回指定索引处的字符。索引范围 0~length-1

public class Test {
public static void main(String args[]) {
String s = "www.runoob.com";
char result = s.charAt(6);
System.out.println(result);
}
} // n

2. equals()方法

 public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String aString = (String)anObject;
if (!COMPACT_STRINGS || this.coder == aString.coder) {
return StringLatin1.equals(value, aString.value);
}
}
return false;
}
/*
参数:anObject–将此字符串与之进行比较的对象
返回值:如果给定对象表示与此字符串等效的字符串,则为true,否则为false
*/

equals()方法用于将字符串与指定的对象比较

String 类中重写equals()方法用于比较两个字符串的内容是否相等。

返回值: 如果相等返回true 否则返回false

public class Test {
public static void main(String args[]) {
String Str1 = new String("runoob");
String Str2 = Str1;
String Str3 = new String("runoob");
boolean retVal; retVal = Str1.equals( Str2 );
System.out.println("返回值 = " + retVal ); retVal = Str1.equals( Str3 );
System.out.println("返回值 = " + retVal );
}
} //返回值 = true
//返回值 = true

== 与 equals 的区别:

String中 == 比较引用地址是否相同,equals 比较字符串的内容是否相同

3. length()方法

public int length() {
return value.length >> coder();
}

length() 方法用于返回字符串的长度。

空字符串的长度返回 0。

public class Test{
public static void main(String[] args){
String str=new String(['a','b','c','d']);
System.out.println(str.length());
}
}
// 4

4. isEmpty()方法

public boolean isEmpty() {
return value.length == 0;
}

isEmpty() 方法用于判断字符串是否为空。

返回值 如果字符串为空返回 true,否则返回 false。

Java StringBuffer 类

StringBuffer 和 String 的区别

和 String 类不同的是,StringBuffer 类的对象能够被多次的修改,并且不产生新的未使用对象。

在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。

StringBuffer 和 String 的相互转换

1. StringBuffer 转 String 类

toString()方法实现 StringBuffer 转 String

StringBuffer str1=new StringBuffer("str");
String str=str1.tostring();
2. String 转 StringBuffer 类

使用 StringBuffer 的构造方法实现 String 转 StringBuffer

String str="abc";
StringBuffer str1=new StringBuffer(str);

StringBuffer 中的构造函数

//1.构造一个字符串缓冲区,其中没有字符,初始容量为16个字符。
StringBuffer() //2.构造一个字符串缓冲区,其中没有字符和指定的初始容量。
StringBuffer(int capacity) /*
参数:capacity - 初始容量。
异常:NegativeArraySizeException - 如果 capacity参数 小于 0 。
*/ //3.构造一个字符串缓冲区,其中包含与指定的 CharSequence相同的字符。
//CharSequence是char值的可读序列。 该接口提供对许多不同类型的char序列的统一,只读访问。 char值表示基本多语言平面(BMP)中的字符或代理项。 StringBuffer(CharSequence seq) /*
参数:seq - 要复制的序列。
*/ //4.构造一个初始化为指定字符串内容的字符串缓冲区。 字符串缓冲区的初始容量是16加上字符串参数的长度。
StringBuffer(String str) /*
参数:str - 缓冲区的初始内容。
*/

StringBuffer 中的方法

1. append()方法
public StringBuffer append(String s)

将指定的字符串追加到此字符序列。返回本类型对象。

2. reverse()方法
public StringBuffer reverse()

将此字符序列用反转形式取代

3. delete()方法
public StringBuffer delete(int start ,int end)

移除此序列的子字符串中的字符。

4. insert()方法
public StringBuffer insert(int offset, int i)

将 int 参数的字符串表示形式插入此序列中。

5. replace()方法
public StringBuffer replace(int start,int end,String str)

使用给定 String 中的字符替换此序列的子字符串中的字符。

java---String 和 StringBuffer的更多相关文章

  1. JAVA String、StringBuffer、StringBuilder类解读

    JAVA String.StringBuffer.StringBuilder类解读 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作 ...

  2. Java—String,StringBuffer,StringBuilde区别和操作

    Java语言有关字符串的类有三种 java.lang.String:一般作为简单字符串类型 java.lang.StringBuffer:字符串缓冲区 java.lang.StringBuider:字 ...

  3. Java——String,StringBuffer,StringBuilder

    String 一经创建,不可更改,每次更改都是创建新对象,销毁旧对象 StringBuilder 创建后可修改,多线程不安全 StringBuffer 创建后可修改,多线程安全 StringBuffe ...

  4. Java ——String 类 StringBuffer 和 StringBuilder类 随机字符

    本节重点思维导图 String 类 创建字符串 String str = "I love ai"; 在代码中遇到字符串常量时,"I love ai",编译器会使 ...

  5. Java String,StringBuffer和StringBuilder的区别

    [可变与不可变] String是字符串常量,不可变. StringBuffer和StringBuilder是字符串变量,可变. [执行速度方面] StringBuilder > StringBu ...

  6. Java String和StringBuffer和StringBuilder

    最近在牛课网上做了几道字符串操作的题目,好久没有做题了,之前用的也是大一时C语言做的,对Java字符串操作不太了解,所以深入了解一下String类的相关用法 String构造方法 String() 空 ...

  7. 【转载】关于Java String, StringBuilder, StringBuffer, Hashtable, HashMap的面试题

    REF: http://blog.csdn.net/fightforyourdream/article/details/15333405 题目是一道简单的小程序,像下面这样:[java] view p ...

  8. Java String、StringBuffer、StringBuilder有什么区别

    ① String是Java语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑.它是典型的immutable类,被声明成final class,所有属性也都是final的,由于它的不可变性,类 ...

  9. java String,StringBuffer,StringBuilder区别及联系

    String 字符串常量(不可变)StringBuffer 字符串变量(线程安全,可变) StringBuilder 字符串变量(非线程安全,性能优,可变) 简要的说, String 类型和 Stri ...

  10. java——String、StringBuffer、StringBuilder、包装类、单双引号

    String: String是一个特殊的类,被定义为final类型,为字符串常量,同样的字符串在常量池中不能重复. 但是由于使用关键字new创建新的字符串,java会在对中分配新的空间,这样即使字符串 ...

随机推荐

  1. SQLServer数据库之连接查询

    SQLServer数据库之连接查询 表的连接查询的几种方法介绍: inner join on内连接,left join on 左连接 , rigth join on 右连接, full join on ...

  2. WebService学习总结(六)--CXF 与Spring结合+tomcat发布

    该项目在上文   WebService学习总结(四)--基于CXF的服务端开发  的基础上修改为spring上发布的webservice接口 1.新建web project 工程 2.导入spring ...

  3. spring整合jdbc方法一

    用了一段时间的spring这,闲来没事做一下spring整合jdbc 目录文件 导入jar包 由于spring的jar包是在myeclipse中自动导入的有些暂时用不到的也没有处理. Emp类 pac ...

  4. Element UI:DatePicker的终止日期与起始日期关联

    Template // 起始日期 <el-date-picker v-model="queryParams.startTime" :picker-options=" ...

  5. GC-优化-案例

    优化案例 Service S 优化 现在看一下执行jstat -gcutil的结果 S0 S1 E O P YGC YGCT FGC FGCT GCT 12.16 0.00 5.18 63.78 20 ...

  6. 【第三篇】- Git 工作流程之Spring Cloud直播商城 b2b2c电子商务技术总结

    Git 工作流程 本章节我们将为大家介绍 Git 的工作流程. 一般工作流程如下: 克隆 Git 资源作为工作目录. 在克隆的资源上添加或修改文件. 如果其他人修改了,你可以更新资源. 在提交前查看修 ...

  7. ACID的实现原理

    引言 ACID是事务的特点也是必须的要求,只有保证ACID事务的执行才不会出错,分别是原子性.一致性.隔离性和持久性.我们知道典型的MySQL事务是这样执行的: start transaction 开 ...

  8. Java on Visual Studio Code的更新 – 2021年8月

    Nick Senior Program Manager, Developer Division at Microsoft 大家好,欢迎来到 8 月版的 Visual Studio Code Java ...

  9. PHP怎么遍历对象?

    对于php来说,foreach是非常方便好用的一个语法,几乎对于每一个PHPer它都是日常接触最多的请求之一.那么对象是否能通过foreach来遍历呢? 答案是肯定的,但是有个条件,那就是对象的遍历只 ...

  10. phpstrom 在smarty 中tpl模版注释怎么修改?

    {*<div class="col-sm-10">*} phpstorm注释tpl文件代码为上面,但是这个不符合本框架的注释方式,会报错,需要调整为: <!-- ...