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类)

    一.StringBuffer连接字符操作 当一个字符串的内容需要被经常改变时就要使用StringBuffer 在StringBuffer中使用append()方法,完成字符串的连接操作   二.Str ...

  3. Java基础(三十四)String、StringBuffer类和数据缓冲区Buffer类

    一.String类 1.创建字符串对象 创建字符串对象有两种方法:直接用“=”或者使用“new String(...)” String aStr = "TMZ"; String b ...

  4. Java 中 常用API概述之 Math, Object, String,StringBuffer类,Arrays,Integer类

    Math Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数. 与StrictMath类的一些数字方法不同,Math类的StrictMath所有Math都没有定义为返回比特位相同 ...

  5. Java中的Stringbuffer类解析

    StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存 ...

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

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

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

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

  8. [Java]String、 StringBuffer、StringBuilder的区别

    一.异同点: 1) 都是 final 类, 都不允许被继承; 2) String 长度是不可变的, StringBuffer.StringBuilder 长度是可变的; 3) StringBuffer ...

  9. java学习笔记 --- StringBuffer类

    1.定义:字符串缓冲区,即它是一个容器,容器中可以装很多字符.并且能够对其中的字符进行各种操作. StringBuffer的特点: 1.是一个字符串缓冲区,其实就是一个容器. 2.长度是可变,任意类型 ...

  10. Java——String,StringBuffer,StringBuilder

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

随机推荐

  1. Eclipse中安装配置Gradle

    Gradle是以Groovy语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具. gradle对多工程的构建支持很出色,工程依赖是gradle的第一功能. gradle支 ...

  2. 剑指 Offer 31. 栈的压入、弹出序列

    剑指 Offer 31. 栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某 ...

  3. 手动编译部署LNMP环境(CentOS7.5+Nginx-1.18.0+MySQL-5.7.30+PHP-7.4.14)

    在平时运维工作中,经常需要用到LNMP应用框架.LNMP环境是指在Linux系统下,由Nginx + MySQL + PHP组成的网站服务器架构. 可参考前面的文章: 如何在CentOS 7上搭建LA ...

  4. 110_SSM框架

    目录 需求分析->功能设计->数据库设计 环境要求 环境 要求 数据库环境 基本环境搭建 创建maven项目 pom.xml添加依赖,添加资源导出 idea连接数据库 提交项目到Git 创 ...

  5. Intel® QAT 加速卡之IPSec示例

    Intel QAT 加速卡之IPSec示例 文章目录 Intel QAT 加速卡之IPSec示例 1. QAT处理IPSec入站报文 2. QAT处理IPSec出站报文 3. 组织架构 4. 示例源码 ...

  6. 简单内存池的C实现

    1. 序言 对于程序开发人员来说,会经常听到这种"池"的概念,例如"进程池","线程池","内存池"等,虽然很多时没有吃 ...

  7. Java匿名内部类只可使用一次的理解

    匿名内部类只能使用一次,就不能在使用. 为了验证"只能使用一次"的实际含义,首先在程序中实例化了两个对象.并且在相应的类中加入了实现接口的匿名内部类: package com.An ...

  8. Nginx rewrite跳转 location匹配

    目录: 一.常用的Nginx 正则表达式 二.location 三.rewrite 一.常用的Nginx 正则表达式 1 ^ :匹配输入字符串的起始位置 2 $ :匹配输入字符串的结束位置 3 * : ...

  9. Java基础之代理模式

    代理模式是常见的设计模式之一,意图在为指定对象提供一种代理以控制对这个对象的访问.Java中的代理分为动态代理和静态代理,动态代理在Java中的应用比较广泛,比如Spring的AOP实现.远程RPC调 ...

  10. 使用tasker定时打开一耳光应用

    比如现在要做一个:到9点钟自动打开"酷狗音乐"1.任务→点击"+"→填写"打开酷狗音乐"→点击"√"2.任务编辑→点击& ...