Java基础---常用API: String+ StringBuffer + StringBuilder

String类

字符串 对象  创建方式

构造方法1

public String()           

创建一个空白字符串,不含有任何内容。

构造方法2

public String(char[] array)

根据字符数组的内容,来创建对应的字符串。

构造方法3

public String(byte[] array)

根据字节数组的内容,来创建对应的字符串。

直接创建String str = "Hello"; //右边直接用双引号

          注意:直接写上双引号,就是字符串对象。程序当中所有的双引号字符串,都是String类的对象。(就算没有new,也照样是。) 

                      字符串  进行 + 操作是  拼接作用     生成的是另一个对象(注意转换)

    public static void main(String[] args) {
        // 使用空参构造
        String str1 = new String(); // 小括号留空,说明字符串什么内容都没有。
        System.out.println("第1个字符串:" + str1);

        // 根据字符数组创建字符串
        char[] charArray = { 'A', 'B', 'C' };
        String str2 = new String(charArray);
        System.out.println("第2个字符串:" + str2);

        // 根据字节数组创建字符串
        byte[] byteArray = { 97, 98, 99 };
        String str3 = new String(byteArray);
        System.out.println("第3个字符串:" + str3);

        // 直接创建
        String str4 = "Hello";
        System.out.println("第4个字符串:" + str4);
    }

        字符串常量池(堆内存):程序当中直接写上的双引号字符串,就在字符串常量池中。

注意:
        String str = "aoteman"语句会先检查字符串常量池是否存放"aoteman"这个字符串对象,如果没有,那么就在字符串常量池中创建这个字符串对象,如果存在直接返回该字符串的内存地址值。
        String str = new String("aoteman") 语句会创建两个对象。首先检查字符串常量池中存不存在aoteman这个字符串对象,不存在就会创建,存在就返回内存地址值。创建了出来之后,new String这个语句就会在堆内存中开辟一个字符串对象。
        总共两个对象。

        对于基本类型来说,==  是进行数值的比较。
        对于引用类型来说,==  是进行【地址值】比较。 用equals方法比较内容

public class Demo02StringPool {

    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "abc";

        char[] charArray = {'a', 'b', 'c'};
        String str3 = new String(charArray);

        System.out.println(str1 == str2); // true
        System.out.println(str1 == str3); // false
        System.out.println(str2 == str3); // false
    }

}

常用方法

String str= "hello,world!"

 获取方法

str.length()

获取字符串的长度

str.charAt(索引值)

获取特定位置的字符

str.indexOf(字符串中的某个字符)

获取特定字符的第一位置

str.lastIndexOf(字符串中的某个字符)

获取字符最后的位置

 判断方法

str.endsWith(字符)

是否以指定字符结束

str.isEmpty()

是否长度为0

str.contains(字符串)

是否包含指定序列

str.equals(Object anObject)

另一对象内容是否相等

str.equalsIgnoreCase(String anotherString)

忽略大小写是否相等

 转换方法(数组转换)

String(char[] value)

将字符数组转换为字符串

String(char[] value, int offset, int count)

 

static String valueOf(char[] data)

 

static String valueOf(char[] data, int offset, int count)

 

str.toCharArray()

将字符串转换为字符数组

  其他方法

str.replace(char oldChar, char newChar)

替换

String[] split(str.regex)

切割

如果按照英文句点“.”进行切分,必须写"\\."(两个反斜杠)

str.substring(int beginIndex)

截取

str.substring(int beginIndex, int endIndex)

截取字串

str.toUpperCase()

转大写

str.toLowerCase()

转小写

str.trim()

去除空格

对String对象的任何改变都不影响到原对象,任何change操作只会生成新的对象

基本类型转换String

1.基本类型值与空字符串直接连接   num+ " "
2.包装类的静态方法toString(参数),不是Object类的toString() 重载,  static String toString(int i) 返回一个表示指定整数的 String 对象
3.String类的静态方法valueOf(参数) ,    static String valueOf(int i) 返回 int 参数的字符串表示形式

String转换成对应的基本类型     : 使用包装类的静态方法parseXXX("字符串")

byte  parseByte(String s)

将字符串参数转换为对应的byte基本类型

short  parseShort(String s)

将字符串参数转换为对应的short基本类型

int  parseInt(String s)

将字符串参数转换为对应的int基本类型

long  parseLong(String s)

将字符串参数转换为对应的long基本类型

float  parseFloat(String s)

将字符串参数转换为对应的float基本类型

double  parseDouble(String s)

将字符串参数转换为对应的double基本类型

boolean  parseBoolean(String s)

将字符串参数转换为对应的boolean基本类型

        //基本类型->字符串(String)
        int i1 = 100;
        String s1 = i1+"";
        System.out.println(s1+200);//100200

        String s2 = Integer.toString(100);
        System.out.println(s2+200);//100200

        String s3 = String.valueOf(100);
        System.out.println(s3+200);//100200

 

public class Parse {
    public static void main(String[] args) {
        int num = Integer.parseInt("100");
        //自动拆装箱
    }
}

StringBuffer类

       String对象是不可变的,改变字符串对象要使用可变字符串缓冲区类StringBuffer

方法:
        String str= "hello,world!"
        StringBuffer SB = new StringBuffer(str);
 ----------------------------------------------------------------------------------------------------------------     

添加方法

 

 

 

SB.append(true);

添加true字符

SB.append('a');

添加a字符

SB.append(97).append(34.0).append(new char[]{'o','o'});

链式添加

SB.insert( 索引值, "内容" );

在索引值插入内容

查看方法

 

 

SB.toString()

返回这个容器的字符串

SB.indexOf(字符)

返回第一次出现的字符串的索引。

SB.substring(int start)

从开始的位置开始截取字符串

修改方法

 

SB.replace(int start int endString 内容)

替换开始--结束--替换内容

SB.setCharAt(索引值 字符)

指定索引位置替换一个字符

删除方法

 

SB.delete(开始,结束)

删除

SB.deleteCharAt(位置)

删除该位置内容

反序方法

SB.reverse()

反序


StringBuilder类

对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间---->StringBuilder解决

StringBuilder是个字符串的缓冲区,会自动维护数组的扩容,可以装很多字符串,并能够对其中的字符串进行各种操作。

publicStringBuilder(  )

构造一个空的StringBuilder容器

publicStringBuilder(String str)

构造一个StringBuilder容器,并将字符串添加进去

public StringBuilder append(str)添加任意类型数据的字符串形式,并返回当前对象自身
public String toString()将当前StringBuilder对象转换为String对象

--------------------------------------------------------------------------------------------------------------------------------------------------------------

StringBuffer 与 StringBuilder 区别
    
    相同点:都是字符串缓冲类, 底层都是维护一个字符数组用于存储数据
    不同点: 
                  StringBuffer  是线程安全的,操作效率低。 
                  StringBuilder 是线程非安全的,操作效率高。
推荐使用:StringBuilder 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值