字符序列
一:字符序列
1:定义
多个字符按照一定的顺序组成的列表就叫做字符序列。
2:分类
String 表示字符串 StringBuffer 字符串缓冲区,是线程安全的 StringBuilder 字符串构造器 是非线程安全
字符串 + 字符串 表示拼接字符串
转义字符 \;
3:字符串是引用数据类型,默认值为null
二:String
1:文本块
可以将字符内容以我们输入的形式按原样输出。
""" 字符内容 """
输入形式1:
String text = """ 序号 姓名 1 张三 2 李四 """ ; System.out.println(text);
2:输入形式2
String text = """ 序号 姓名 1 张三 2 李四""" ; System.out.println(text);
3:输入形式3
输出一个 "\"
String text = """ \\ """ ; System.out.println(text);
4:输入形式4
输出一个 “
代码
String text = """ " """ ; System.out.println(text);
5:输入形式5
输入一个hi ,然后换行,再按一个空格后输入"Bob"
String text = """ hi "Bob" """ ; System.out.println(text);
2:字符串具有不可变特性
字符串不可变的原因:
是因为字符串内容存储内容的元素是由final修饰的,所有字符串不可变。
3:创建对象
*//* *创建了几个对象 *String s1 = new String("abc");
该语句创建了两个对象,一个是字符串常量池对象abc,另外一个是new了一个新的空间,是字符串对象。
4:构造方法摘要
Sting方法
咱们在声明字符串时,使用字符串对象的方式来声明时使用的方法。共有 15 个构造
方法名及描述
1:Sting() 初始化新创建的String对象,使其表示空字符系列。 2:String(byte[] bytes) 通过使用平台的默认字符集解码指定的字节数组来构造新的Sting 3:String(byte[] bytes, Charset charset) 构造一个新的String用指定的字节的数组解码charset 4:String(byte[] bytes, String charsetName) 构造一个新的String用指定的字节的数组解码charsetName 5:String(char[] value) 构造一个新的String由指定的字符的数组构成 6:String(String original) 初始化新创建的String对象,使其表示与参数相同的字 符序列; 换句话说,新创建的字符串是参数字符串的副本 7:String(StringBuffer buffer) 分配一个新的字符串,其中包含当前包含在字符串缓冲区 参数中的字符序列 8:String(StringBuilde rbuilder) 分配一个新的字符串,其中包含当前包含在字符串构建器 参数中的字符序列
编译时优化
String d = "a" + "b"; // 编译时会优化为 ab
5:方法摘要
(1):返回字符串
toString() String 返回字符串
(2): 去掉首尾空格
trim() String 去掉首尾空格
(3):转化为大写
toUpperCase() String 转换大写
(4):转化为小写
toLowerCase() String 转换小写
(5)从指定索引开始(包括)到指定索引结束(不包括)
substring(int beginIndex, int endIndex) String 从指定索引开始(包括)到指定索引结束(不包括)
(6): 从指定索引开始(包括)截取字符串并且返回
substring(int beginIndex) String 从指定索引开始(包括)截取字符串并返回
(7):判断字符串是否是空串
isEmpty 当且仅当字符串长度为0时返回 true
(8):如果字符串为空或仅包含空白代码点,则返回true,否则返回false。
isBlank 当字符串长度为0或字符串中全是空白字符时都是 true
特例代码
public static void main(String[] args) { // 空串 != null String str = ""; // 空串 String s = null; System.out.println(str.length()); // 0 System.out.println(str); // System.out.println(s.length()); // NullPointerException str.isEmpty(); // length == 0 System.out.println(str.isEmpty()); // true str = "\t"; System.out.println(str.length()); // 1 System.out.println(str.isEmpty());// false str = ""; System.out.println(str.isBlank()); // true str = "\t"; System.out.println(str.length()); // 1 System.out.println(str.isBlank());// true str = " \t hello word \t"; System.out.println(str.length()); // 21 // 去除两端空格返回新的字符串 // str = str.trim(); str = str.strip(); // 去除前边的空白 // str = str.stripLeading(); // 去除后边的空白 // str = str.stripTrailing(); // 去除缩进 // str = str.stripIndent(); System.out.println(str.length());// 11 System.out.println(str); // 随机访问 str = "hello world"; // 获取指定字符 char c = str.charAt(0); System.out.println(c); // 子串 // [beginIndex ~) String sub = str.substring(5); // [beginIndex, endIndex) sub = str.substring(3, 10); System.out.println(sub); // lo worl // 比较字符串 0 小于0 大于0 String a = "Abc"; String b = "abc"; System.out.println(a.compareTo(b)); // -32 // 忽略大小写 System.out.println(a.compareToIgnoreCase(b)); // 0 }
1:区别:
isEmpty 和 isBlank 区别 isEmpty 当且仅当字符串长度为0时返回 true isBlank 当字符串长度为0或字符串中全是空白字符时都是 true