- 一、简介
- 二、字符串定义
- 2.1 直接定义字符串
- 2.2 通过使用 String 类的构造方法来创建字符串
- 三、如何使用Java API帮助文档
- 3.1 帮助文档下载地址
- 3.2 帮助文档使用
- 3.2 中文帮助文档
- 四、 String字符串和int、double、float 的相互转换
- 4.1 String 转int
- 4.2 String 转Double、Float
- 4.3 int转换为String
- 4.3 Double、Float转换为String
- 五、字符串拼接
- 5.1 使用连接运算符“+”
- 5.2 使用 concat() 方法
- 六 、获取字符串长度
- 七、字符串大小写转换
- 八 、去除字符串中的空格
- 九 、截取字符串
- 十、分割字符串
- 十一、字符串替换
- 十二、字符串比较
- 12.1 equals()
- 12.2 equals() 与 == 比较字符
- 12.3 equalsIgnoreCase()
- 12.4 compareTo() 与 compareToIgnoreCase()
- 十三、 字符串查找
- 13.1 charAt()
- 13.2 indexOf()
- 13.3 lastlndexOf()
- 13.4 contains()
- 十四、字符串按指定字符集转byte序列
- 14.1 getBytes()
- 14.2 getBytes(String charsetName)
- 十五、字符复制
- 15.1 getChars()
- 15.2 copyValueOf()
- 十六、空字符串与null
- 16.1 空字符串与null的区别
- 16.2 非空判断
- 16.3 StringUtils的isBlank与isEmpty
- 十七、String、StringBuilder、StringBuffer
- 17.1 比较
- 17.2 继承结构
- 17.3 使用场景选择
- 17.4 StringBuffer 常用函数
一、简介
Java字符串就是Unicode字符序列。Java里没有内置的字符串类型,而是在标准的类库中提供了一个预定义类,String。每个用双引号""括起来的都是String类的一个实例。
字符串是日常开发中最常用, Java字符串的一个重要特点就是字符串不可变
二、字符串定义
2.1 直接定义字符串
讯享网2.2 通过使用 String 类的构造方法来创建字符串
讯享网
提供的构造方法很多,文章只列举常用的,其余的可自行查找Java帮助文档。帮助文档的使用参照下一小节
三、如何使用Java API帮助文档
3.1 帮助文档下载地址
https://www.oracle.com/java/technologies/downloads/


下载完解压后目录如下

3.2 帮助文档使用
① 双击index.html打开

② 搜索框中输入关键字 找到java.lang包下的String

③ 查看 类的帮助信息
类的基本信息

类public/protected 修饰的属性

类public/protected 修饰所有构造器

类public/protected 修饰所有构造器

3.2 中文帮助文档
如果小伙伴看英文比较吃力,这里也提供了中文帮助文档下载地址(文档包含jdk1.6~jdk10 的帮助文档)。
注: 中文帮助文档采用的是工具翻译的,有些地方可能不准确,请结合着官方英文文档查看


四、 String字符串和int、double、float 的相互转换
4.1 String 转int
String 转换 int 时,String 的值一定是整数,否则会报数字转换异常(java.lang.NumberFormatException)
4.2 String 转Double、Float
String java字符零基础 转换 Double、Float 时,String 的值一定是浮点类型,否则会报数字转换异常(java.lang.NumberFormatException)
讯享网
4.3 int转换为String
使用第三种方法相对第一第二种耗时比较大。在使用第一种 valueOf() 方法时,注意 valueOf 括号中的值不能为空,否则会报空指针异常(NullPointerException)
4.3 Double、Float转换为String
使用第三种方法相对第一第二种耗时比较大。在使用第一种 valueOf() 方法时,注意 valueOf 括号中的值不能为空,否则会报空指针异常(NullPointerException)
五、字符串拼接
5.1 使用连接运算符“+”
5.2 使用 concat() 方法
六 、获取字符串长度
七、字符串大小写转换
- 将字符串中的字母全部转换为小写,非字母不受影响
- 将字符串中的字母全部转换为大写,非字母不受影响
八 、去除字符串中的空格
字符串中存在的首尾空格一般情况下都没有任何意义,如字符串“ Hello ”,但是这些空格会影响到字符串的操作,如连接字符串或比较字符串等,所以应该去掉字符串中的首尾空格,这需要使用 String 类提供的 trim() 方法
注意:
- 只能去掉字符串中前后的半角空格(英文空格),而无法去掉全角空格(中文空格)。
这时候我们只能先将全角空格替换为半角空格再进行操作,其中替换是 String 类的 方法 - 12288 是中文全角空格的 unicode 编码
九 、截取字符串
- //指定位置截取到字符串结尾
- 是截取指定范围的内容
substring() 方法是按字符截取,而不是按字节截取
①
②
注意:, 对于开始位置 beginIndex, Java 是基于字符串的首字符索引为 0 处理的,但是对于结束位置 endIndex,Java 是基于字符串的首字符索引为 1 来处理的 。具体如下图所示

十、分割字符串
- str 为需要分割的目标字符串。
- sign 为指定的分割符,可以是任意字符串。
- limit 表示分割后生成的字符串的限制个数,如果不指定,则表示不限制,直到将整个目标字符串完全分割为止。
对于 ,,,,, , 等转义字符,程序中使用时,需要加上。 实例如下
十一、字符串替换
将目标字符串中的指定字符(串)替换成新的字符(串)
- oldChar 表示被替换的字符串
- newChar 表示用于替换的字符串
将目标字符串中匹配某正则表达式的第一个子字符串替换成新的字符串
- regex 表示正则表达式
- replacement 表示用于替换的字符串
将目标字符串中匹配某正则表达式的所有子字符串替换成新的字符串
- regex 表示正则表达式
- replacement 表示用于替换的字符串
十二、字符串比较
12.1 equals()
逐个地比较两个字符串的每个字符是否相同。如果两个字符串具有相同的字符和长度,它返回 true,否则返回 false。字符大小写不同,返回false
12.2 equals() 与 == 比较字符
== 比较引用地址是否相同,equals() 比较字符串的内容是否相同
12.3 equalsIgnoreCase()
字符串与指定的对象比较,不考虑大小写
12.4 compareTo() 与 compareToIgnoreCase()
基于字符串各个字符的 Unicode 值,按字典顺序(ASCII码顺序)比较两个字符串的大小
如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的长度差值(ASCII码差值)
如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至不等为止,返回该字符的ASCII码差值
如果两个字符串不一样长,可对应字符又完全一样,则返回两个字符串的长度差值
compareToIgnoreCase方法可以忽略大小写
- 如果参数字符串等于此字符串,则返回值 0;
- 如果此字符串小于字符串参数,则返回一个小于 0 的值;
- 如果此字符串大于字符串参数,则返回一个大于 0 的值。
十三、 字符串查找
13.1 charAt()
字符串本质上是由一个个字符组成的字符数组,因此它也有索引,索引跟数组一样从零开始。charAt() 方法可以在字符串内根据指定的索引查找字符
13.2 indexOf()
①public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1
②public int indexOf(int ch, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1
③int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1
④int indexOf(String str, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1
- ch -- 字符,Unicode 编码。
- fromIndex -- 开始搜索的索引位置,第一个字符是 0 ,第二个是 1 ,以此类推。
- str -- 要搜索的子字符串

13.3 lastlndexOf()
用于返回字符(串)在指定字符串中最后一次出现的索引位置,如果能找到则返回索引值,否则返回 -1
lastlndexOf 方法的四种形式
- : 返回指定字符在目标字符串中最后一次出现处的索引,如果指定字符串中没有指定的字符,返回 -1。
- : 返回指定字符在目标字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索,如果目标字符串中没有指定字符,返回 -1。
- : 返回指定子字符串在目标字符串中最后一次出现处的索引,如果目标字符串中没有指定字符,返回 -1。
- : 返回指定子字符串在目标符串中最后一次出现处的索引,从指定的索引开始反向搜索,如果目标字符串中没有指定的字符,返回 -1。
13.4 contains()
查找字符串中是否包含目标字符(串)
十四、字符串按指定字符集转byte序列
14.1 getBytes()
按指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中
14.2 getBytes(String charsetName)
默认字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中
十五、字符复制
15.1 getChars()
将字符从字符串复制到目标字符数组
- srcBegin -- 字符串中要复制的第一个字符的索引。
- srcEnd -- 字符串中要复制的最后一个字符之后的索引。
- dst -- 目标数组。
- dstBegin -- 目标数组中的起始偏移量
15.2 copyValueOf()
将字符数组中指定字符复制到目标字符
①
- data -- 字符数组
②
- data -- 字符数组
- offset -- 子数组的初始偏移量
- count -- 子数组的长度
十六、空字符串与null
一个比较容易混淆的知识点。空串是长度为0的字符串,null表示没有引用任何对象
16.1 空字符串与null的区别
- String str = null ;
表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间; - String str = "";
表示声明一个字符串类型的引用,其值为""空字符串,这个str引用指向的是空字符串的内存空间; - String str = new String();
创建一个字符串对象的默认值为""
16.2 非空判断
非空判断一般包含空字符串和null判断,常见的判断方法主要有以下几种
① 最多人使用的一个方法, 直观, 方便, 但效率很低
注: s==null 判断需要写在前面,要不然还是会报NullPointerException
②比较字符串长度, 效率比第一种方法高
③ Java SE 6.0 才开始提供的方法, 效率和方法②差不多, 但出于兼容性考虑, 推荐使用方法二
16.3 StringUtils的isBlank与isEmpty
与java.lang这个包作用类似,Commons Lang 包是由apache 提供的jar包。这一组API也是提供一些基础的、通用的操作和处理
判断字符串为空,一般会遇到 null 、"" 、字符串中间有空格 " ", 下面是两个方法处理结果
①
②
当然了,StringUtils工具类还有对应的isNotBlank和isNotEmpty 方法,意思是不为空。
十七、String、StringBuilder、StringBuffer
具体区别可以参考https://blog.csdn.net/itchuxuezhe_yang/article/details/ 这篇博文,写的还是挺好的。
17.1 比较
- 类是不可变类,即一旦一个 String 对象被创建以后,包含在这个对象中的字符序列是不可改变的;
- 和 支持可变字符串;
- 和 功能基本相似,方法也差不多;
- 是线程安全的,而 则没有实现线程安全功能;
- 由于没有实现线程安全,所以效率要比高;
17.2 继承结构

17.3 使用场景选择
- 操作少量的数据使用 String。
- 单线程操作大量数据使用 StringBuilder(大多数情况推荐使用)。
- 多线程操作大量数据使用 StringBuffer。
17.4 StringBuffer 常用函数
//追加一个字符串
//将字符串反转
//删除指定位置字符串
//在指定位置插入字符串
//将指定位置字符串替换为新字符串


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/2601.html