学习字符串
1.API和API帮助文档
API: 应用程序编程接口
简单理解: 就是别人已经写好的东西, 我们不需要自己编写, 直接使用即可
比如: Random, Scanner
java API: 指的就是JDK中提供的各种功能的java类
这些类将底层的实现封装了起来, 我们不需要关心这些类是如何实现的, 只需要学习这些类如何使用即可
API帮助文档: 利用这个文档可以查找已经做好的类, 直接拿来使用, 提高效率
2.String
- Strin是java定义好的一个类, 定义在java.lang包中, 所以使用的时候不需要导包
- java程序中的所有字符串文字(例如: "abcdefg"), 都被视为此类的对象
- 字符串不能发生改变, 它们的值在创建后不能被更改
java的内存配置:
注意: 只有第一种的赋值方式才有串池空间, 其他的都没有, 都直接存在堆内存当中, 没有区分
一般使用第一种赋值方式:
- 因为第一种在直接赋值时系统会检查该字符串在串池中是否存在, 如果不存在就会创建新的, 如果存在会进行复用, 二者的地址值是相同的, 比如:
String s1 = "abc";
String s2 = "abc";
s1和s2的地址值一样
- 而其他的需要创建新空间的就不会进行检查复用, 这样就会导致内存空间的浪费, 所以一般用第一种的直接赋值
3.字符串的比较
"==":
- 如果比较的是基本数据类型, 那么比较的就是数据值
- 如果比较的是引用数据类型, 那么比较的就是地址值
证明:
实现字符串比较数据值:(调用方法)
- boolean equals(要比较的字符串): 完全一样结果才是true, 否则为false
- boolean equalsIgnoreCase(要比较的字符串): 忽略大小写的比较
扩展:
如果是通过键盘录入的字符串进行比较, 内容一样但是结果为false
比如:
练习:
当然, 这里也可以不用创建对象来实现代码, 可以直接把正确的用户名和密码定义在测试类当中就行
遍历字符串:
- public char charAt(int index): 根据索引返回字符
- public int length(): 返回此字符串的长度
- 数组的长度: 数组名.length
- 字符串的长度: 字符串对象.length()
应用:
练习1:
练习2:
练习3:
练习4:
练习5:
截取字符串中的一部分并改为*, 比如123456------12**56
知识扩展:
- String substring(int beginIndex, int endIndex) --------截取
注意点: 包头不包尾, 包左不包右, 只有返回值才是截取的小串
- String substring(int beginIndex) ---------截取到末尾(重载方法)
应用:
知识扩展:
替换字符串中的一部分:
String replace(旧值,新值) 替换
注意点: 之后返回值才是替换之后的结果
应用:
4.StringBuilder
StringBuilder 可以看成是一个容器, 创建之后里面的内容是可变的
(一般使用在字符串的拼接和反转)
作用: 可以提高字符串的操作效率
在之前,直接进行相加拼接得到的字符串, 在多个字符串相加时, 会先相加前两个, 产生一个新的字符串, 然后再和下一个相加, 依此类推, 这样不仅很慢, 效率低, 而且中间产生的新字符串会占用空间内存
而StringBuilder是把要拼接的内容直接在StringBuilder对象中进行拼接, 且可以在原来的基础上进行修改
常用方法:
StringBuilder()----空的
StringBuilder(要拼接的东西)
public StringBuilder append(任意类型)------添加数据, 并返回
public StringBuilder reverse()-------反转容器中的内容
public int length()-------返回长度(字符出现的个数)
public String toString()-------通过toString就可以实现把StringBuilder转换为String
应用:
链式编程:
当我们在调用一个方法的时候,不需要用变量接收他的结果,可以继续调用其他方法
比如:
练习:
注意: 通过StringJoiner, StringBuilder得到的返回值要转换成String才能进行字符串可以进行的操作, 比如: equals比较内容
5.StringJoiner
- StringJoiner跟StringBuilder一样, 也可以看成是一个容器, 创建之后里面的内容是可变的
作用: 提供字符串的操作效率, 而且代码的编写特别简洁, 但是目前市场上很少有人用
- public StringJoiner(间隔符号):
创建一个StringJoiner对象, 指定拼接时的间隔符号
- public StringJoiner(间隔符号, 开始符号, 结束符号):
创建一个StringJoiner对象, 指定拼接时的间隔符号,开始符号,结束符号
- StringJoiner的成员方法:
- public StringJoiner add(添加的内容):
添加数据, 并返回对象本身
- public int length():
返回长度(字符出现的个数)
- public String toString():
返回一个字符串(该字符串就是拼接之后的结果)
应用:
小技巧: Ctrl + Z可以撤回上一步操作, Z要大写!!!
练习1:
方法1:
方法2:(利用switch)
方法3:(是方法2的简化版)
练习2:
方法1: 用subString进行截取,把左边的字符截取出来拼接到右侧去
方法2: 可以把字符串先变成一个字符数组, 然后调整字符数组里面的数据, 最后把字符数组变成字符串
练习3:
扩展:
char[] newArr = str.toCharArray();//字符串变字符数组
String newStr = new String(newArr);//字符数组变字符串