API
1. 概念
- 应用程序编程接口, 其实就是java提供的一些核心类库;
2. 作用
- 我们可以通过查询API文档来查询并使用java已经提前写好的类和方法;
String类
1. 概述
- String类代表了所有字符创类型的对象;
- 在java.lang包下, 使用不需要导包;
- 该类中提供了很多关于字符串操作的成员方法, 我们可以使用这些方法处理字符串;
2. 特点
① 字符串不可改变,它的值在创建后不可更改;
② 虽然值不可改变,但是值可以被共享使用;
③ 字符串效果上相当于字符数组,但底层原理是字节数组;
3. 创建方式
① 构造方法
// 空参构造
String s = new String();
// 使用指定的字节数组构造
byte[] b = {65, 66};
String s1 = new String(b); //AB
// 使用指定的字符数组构造
char[] c = {'a', 'b'};
String s2 = new String(c); //ab
② 使用双引号定义字符串
String s = "hello";
4. 字符串的比较
① == 号的功能
- 如果比较的是基本数据类型, 比较的是具体的值;
- 如果比较的是引用数据类型, 比较的是对象的地址值;
② 字符串内容的比较 - equals 严格比较(两个字符串完全一样,则返回true,否则返回false);
- equalsIgnoreCase 忽略大小写比较;
5. 常用方法
① charAt(int index) 返回指定索引处的 char值。
② startsWith(String prefix) 测试此字符串是否以指定的前缀开头。
③ endsWith(String suffix) 测试此字符串是否以指定的后缀结尾。
④ getBytes() 使用平台的默认字符集将该 String编码为一系列字节,将结果存储到新的字节数组中。
⑤ indexOf(String str) 返回指定子字符串第一次出现的字符串内的索引。
⑥ length() 返回此字符串的长度。
⑦ replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
⑧ split(String regex) 根据给定正则表达式的匹配拆分此字符串。
⑨ substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。
⑩ toCharArray() 将此字符串转换为一个新的字符数组。
6. 特点
- 使用双引号创建出来的字符串对象是常量,可以被多个变量共享使用;
- 字符串中所有的方法,都不会改变原字符串的值,方法执行后会得到一个新的字符串对象;
StringBuilder
1. 概念
- StringBuilder代表字符串缓冲区
2. 作用
- 用于拼接字符串的时候,提升程序的性能,减少字符串拼接过程中产生的字符串常量垃圾;
3. 创建方法
// 1. 空参构造
StringBuilder sb1 = new StringBuilder();
// 2. 带参构造
StringBuilder sb2 = new StringBuilder("hello");
4. 常用方法
① append(String str) 将指定的字符串追加到此字符序列。
② charAt(int index) 返回此序列中指定索引处的 char 值。
③ insert(int offset, String str) 将字符串插入此字符序列中.
④ length() 返回长度(字符数)。
⑤ replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。
⑥ reverse() 将此字符序列用其反转形式取代。
⑦ toString() 返回此序列中数据的字符串表示形式。
5. String与StringBuilder的转换
- 使用StringBuilder的toString方法,可以将字符串缓冲区转成字符串对象;
- 使用StringBuilder的构造方法,可以将字符串对象转成字符串缓冲区对象;
6. String与StringBuilder的区别
- 字符串内容不可改变;
- 字符串缓冲区内容可以改变;
- 3:StringBuilder的优势:
- 有reverse方法,可以对内容反转,而字符串中没有这个方法;
- 使用append方法对字符串拼接的过程中不会产生垃圾常量,性能高;
String和StringBuilder的练习
1.定义String getStr()方法
功能描述:
获取长度为5的随机字符串,字符串由随机的5个大小写字母组成
2.在main方法中调用上述方法,并打印结果
public class StringBuilderDemo {
public static void main(String[] args) {
// 调用方法,获取字符串
String s = getStr();
System.out.println(s);
}
private static String getStr() {
// 创建StringBuilder对象
StringBuilder sb = new StringBuilder();
// 创建随机数对象
Random r = new Random();
// 循环5次, 产生5个随机字符
for (int j = 0; j < 5; j++) {
// 产生0-1的随机数
int i = r.nextInt(2);
// 如果产生的i是0, 就去获取随机的大写字母, 如果是1, 就去获取小写字母
switch (i) {
case 0:// 取随机的大写字母
int i1 = r.nextInt('Z' - 'A' + 1) + 'A';
// 将获取到的随机数转为字符,添加到sb中
sb.append((char)i1);
break;
case 1:// 取随机的小写字母
int i2 = r.nextInt('z' - 'a' + 1) + 'a';
// 将获取到的随机数转为字符,添加到sb中
sb.append((char)i2);
break;
default:
break;
}
}
// 将sb转换为String, 并返回
return sb.toString();
}
}