博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
stringbuffer 编码_Java中String、StringBuffer(Builder)类
阅读量:6621 次
发布时间:2019-06-25

本文共 4966 字,大约阅读时间需要 16 分钟。

字符串是一连串的字符序列,Java提供了String、StringBuffer、StringBuilder三个类来封装字符串,并提供一系列的方法来操作字符串对象,它们三个都实现了CharSequence接口。

下面将着重介绍这三个类和三个类的常用方法

封装字符串的三个类

1.String类

在Java中,字符串属于对象,String类是不可变类,即一个对象被创建后,包含在此对象中的字符序列是不可改变的,直到这个对象被销毁。

2.StringBuffer类

StringBuffer对象代表一个字符序列可变的字符串,即一个对象被创建后,可通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法改变此对象的字符序列。

在通过StringBuffer对象生成指定字符串后,可通过.toString()方法将其转为一个String对象。

3.StringBuilder类

StringBuilder对象也代表一个可变的字符串对象,它与StringBuffer对象基本相似,两个类的构造器和方法也基本相同。不同之处是,StringBuffer是线程安全的,StringBuilder是非线程安全的,因此StringBuilder性能略高。


82b73fc255d7a68824aaf1efeff6db41.gif

String类操作字符串对象常用方法

1.str.charAt(int index),获取字符串中指定下标位置的字符

字符串的序数从0开始到length()-1

String str = "abcxyz"; System.out.println(str.charAt(3));  //输出结果为x

2.str.length(),获取字符串的长度

String str = "abcxyz"; System.out.println(str.length());  //输出结果为6

3.str.compareTo(Sting anotherString),比较两个字符串的大小

两个字符串长度相等时,如果两个字符串的字符序列相等,则返回0,不相等时,从两个字符串第0个字符开始比较,返回第一个不相等字符之间unicode差值

如果字符串长度不等,而且较长字符串的前面部分恰好是较短的字符串,则返回它们的长度差

String str = "abcxyz"; System.out.println(str.compareTo("abczyx"));  //输出结果为-2 String str1 = "abc"; System.out.println(str.compareTo(str1));  //输出结果为3

4.str.compareToIgnoreCase(Sting anotherString)忽略字符串的大小写比较两个字符串是否相等

String str = "abcxyz"; System.out.println(str.compareToIgnoreCase("ABCXYZ")); //返回结果为true

5.str.concat(Sting anotherString)字符串拼接,与字符串连接运算符"+"功能相同

String str = "abcxyz"; System.out.println(str.concat("abc")); //输出结果为abcxyzabc

6.str.equals(Sting anotherString),比较两个字符串的值是否相等

String str = "abcxyz"; System.out.println(str.equals("abcxyz")); //输出结果为true

7.str.equalsIgnoreCase(Sting anotherString),忽略大小写,比较两个字符串的值是否相等

String str = "abcxyz"; System.out.println(str.equalsIgnoreCase("ABCXYZ")); //输出结果为true

8.str.indexOf(Sting str),获取字符串中指定字符第一次出现的下标位置

String str = "abcxyz"; System.out.println(str.indexOf("a"));//输出结果为0

9.str.indexOf(Sting str,int fromIndex),获取str子字符串在该字符串从下标fromIndex开始后第一次出现的位置

String str = "xyzabc"; System.out.println(str.indexOf("abc", 2));//输出结果为3

10.str.substring(int beginIndex),获取从指定下标开始到结束的子字符串

String str = "abcxyz"; System.out.println(str.substring(3));//输出结果为xyz

11.str.substring(int beginIndex,int endIndex),获取从beginIndex位置开始,到endIndex结束的子字符串,包含开始但不包含结束

String str = "abcxyz"; System.out.println(str.substring(3,4));//输出结果为x

12.str.toUpperCase(),将字符串转换为大写

String str = "abcxyz"; System.out.println(str.toUpperCase());//输出结果为ABCXYZ

13.str.toLowerCase(),将字符串转换为小写

String str = "abcxyz"; System.out.println(str.toLowerCase());//输出结果为abcxyz

14.String.valueOf(X x),一系列用于将基本类型值转换为String对象的方法

int a = 20; System.out.println(String.valueOf(a));//输出结果为String类型的20

15.str.replace(oldChar, newChar),将字符串中的第一个oldChar替换成newChar

String str = "abcxyz"; System.out.println(str.replace("b", "5"));//输出结果为a5cxyz

16.str.toString(),返回对象本身

String str = "abcxyz"; System.out.println(str.toString());//输出结果为abcxyz

17.str.isEmpty(),判断字符串是否为空

String str = "abcxyz"; System.out.println(str.isEmpty());//输出结果为false

18.str.getBytes(),将String编码转换为byte序列,并将结果存储到一个新的byte数组进行输出

String str = "abcxyz"; System.out.println(str.getBytes());//输出结果为[B@15db9742

19.str.lastIndexOf("z"),返回str字符在该字符串中最后一次出现的下标位置

String str = "abcxyz"; System.out.println(str.lastIndexOf("z"));//输出结果为5

20.str.hashCode(),返回字符串的哈希值

String str = "abcxyz"; System.out.println(str.hashCode()); //输出结果为-1424366089

21.str.intern(),返回字符串对象的规范化表示形式

String str = "abcxyz"; System.out.println(str.intern());//输出结果为abcxyz

22.trim(),忽略字符串中的所有空白进行输出

System.out.println("       abc     ".trim());//输出结果为abc(没有空格)

23.str.codePointAt(int index),获取指定下标位置的字符的unicode编码

String str = "abcxyz"; System.out.println(str.codePointAt(0));//输出结果为97

24.str.codePointCount(int beginInde, int endIndex),获取从指定开始下标到结束下标之间下标的绝对差值(差值的绝对值)

String str = "abcxyz"; System.out.println(str.codePointCount(0, 3));//输出结果为3

25.str.codePointBefore(int index),获取指定下标的前一个字符的unicode编码

String str = "abcxyz"; System.out.println(str.codePointBefore(1));//输出结果为97


                                                 
82b73fc255d7a68824aaf1efeff6db41.gif

StringBuilder类的常用方法

StringBuffer(Builder)有两个属性:length和capacity,length属性表示其包含字符序列的长度,可以通过length()、setLength(int len)方法来访问和修改其字符序列的长度,而capacity属性表示StringBuffer的容量。

StringBuffer、StringBuilder操作方法完全相同,只是StringBuilder执行效率更高一些,因此更多的会使用这个类

1.sb.append(str),字符串拼接

StringBuilder sb = new StringBuilder(); System.out.println(sb.append("Java"));//输出结果为Java

2.sb.insert(offset, str),从指定索引下标开始添加字符串

System.out.println(sb.insert(0, "Hello "));//输出结果为Hello Java

3.sb.replace(start, end, str),从开始下标到结束下标,替换其字符串为str

System.out.println(sb.replace(5, 6, ","));//输出结果为Hello,Java

4.sb.delete(start, end),删除从开始下标到结束下标之间的字符

System.out.println(sb.delete(5, 6));//输出结果为HelloJava

5.sb.reverse(),反转字符串

System.out.println(sb.reverse());//输出结果为avaJolleH

6.sb.setLength(newLength),改变字符串长度,仅保留指定索引下标之前的部分

sb.setLength(4); System.out.println(sb);//输出结果为avaJ

7.sb.length(),输出字符串长度

System.out.println(sb.length());//输出结果为4

8.sb.capacity(),输出字符串容量

System.out.println(sb.capacity());//输出结果为16

通过对String、StringBuffer、StringBuilder这三个对象的理解和基本方法的使用,对这些基础知识有了明确的认识,掌握这些知识,那么在使用中会得心应手~

0d543e8e24b34733d7ee1a136bd684b1.png

不定期分享知识学习内容和学习体会

7bc273901c282d92bf9f4b800016ee42.png
79f65f3bfdce2b9dcec764ef1310d70c.png 公众号ID:Javaklr 长按图片,扫码关注最新动态觉得可以点个好看
86f8d931dd087752b997d542b50f5caf.png
b9e7d593714437268bb1577b244c9cf9.gif

转载地址:http://eucpo.baihongyu.com/

你可能感兴趣的文章
Java 程序执行过程的内存分析
查看>>
灾难恢复-boot分区的恢复方法
查看>>
小游戏-猜数字
查看>>
深度学习到顶,AI寒冬将至!
查看>>
【投资】欧盟区块链创业公司投资超500万欧元
查看>>
优傲机器人:人机协作机器人助推电子制造业智慧升级
查看>>
IBM利用“沃森”超级电脑帮助员工对抗癌症
查看>>
区块链研习 | 区块链中的默克尔树
查看>>
「镁客·请讲」珍为科技周朔鹏:打造科技产品传播平台,对接智能制造产业上下游...
查看>>
75岁的霍金:地球即将毁灭,移民太空是人类的唯一生存途径
查看>>
学习笔记:openstack 实验环境安装
查看>>
专访CSDN孟岩:我的区块链第一性原理
查看>>
高校“人工智能热”:人工智能应该怎么学?
查看>>
VR混战已开始,看各大虚拟现实如何争春?
查看>>
DRDS和RDS只读实例性能对比测试
查看>>
升级HTTP2、nginx1.12、openssl1.0.2
查看>>
上海市大数据技术与应用创新中心在上海交大成立
查看>>
IBM研发新算法 商用量子技术或可期
查看>>
细数国内无人机的江湖门派
查看>>
Python 数据科学手册 5.1 什么是机器学习
查看>>