String类
描述
String 类描述的是文本字符序列,同时 String 类被 final 关键字所修饰,意味着 String 类不能够继承,而且它的成员方法默认是 final 方法,所以当字符串一旦被创建就无法被修改。
String str1 = "小明";
String str2 = new String("小明");
比较这两条语句:
第一条
第一条语句会检查字符串常量池中是否存有“小明“这个字符串对象,如果有
则返回这个字符串的内存地址,如果没有则会在字符串常量池中创建这个对
象。
第二条语句
第二条语句同样也会检查字符串常量池中是否存有“小明“这个字符串对象,
如果有则返回这个字符串的内存地址,如果没有则会在字符串常量池中创
建这个对象,但再创建之后 new String 又会在内存的堆区创建 str2 对
象,过程一共创建两个对象。
所以为了节省内存,般使用第一种
String中的一些方法及部分演示
字符串中的获取方法 | 用途 |
---|---|
int length | 获取字符串长度 |
cahr charAt(int index) | 获取特定位置的字符串 |
int index(String sstr) | 获取特定字符的位置 |
int lastIndexOf(int ch) | 获取最后一个字符的位置 |
字符串中的判断方法 | 作用 |
---|---|
boolean endWith(String str) | 是否以指定字符结尾 |
boolean isEmpty() | 判断是否为空 |
boolean contains(CharSequence s) | 是否包含指定序列 |
boolean equals(Object object) | 判断是否相等 |
boolean equalsIgnoreCase(String str) | 忽略大小写是否相等 |
字符串中的转换方法 | 作用 |
---|---|
String(char[] value) | 将字符数组转换为字符串(初始化) |
String(char[] value, int offset, int count) | 将字符数组的一部分转化成字符串(初始化) |
static String valueOf(char[] data) | 将字符数组转换为字符串 |
static String valueOf(char[] data, int offset, int count) | 将字符数组的一部分转化成字符串 |
char[] toCharArray() | 将字符串转化为数组 |
char[] cha = {'a','b','c','d'};
String str = new String(cha, 2, 1);
System.out.println(str); //输出结果为 c
char[] cha = {'a','b','c','d'};
System.out.println(String.valueOf(cha, 1, 2)); //输出的结果为 bc 。
字符串的其他方法 | 作用 |
---|---|
String replace(char oldChar, char newChar) | 替换 |
String[] split(String regex) | 切割 |
String substring(int beginIndex) | 从指定位置截取剩余字符串 |
String substring(int beginIndex, int endIndex) | 截取指定头尾的字符串 |
String toUpperCase() | 转大写 |
String toLowerCase() | 转小写 |
String trim() | 去空格 |
//分割的演示
String str ="abc,defg";
String[] strS = str.split(",");
for (String s : strS) {
System.out.println(s);
}
/*
* 结果 abc
* defg
*/
常量池
文章的开头提到了字符串常量池,java中的常量池可以分为两种:
1. 静态常量池
2. 运行时常量池
所谓的静态常量池就是 *.class文件的常量池
运行时常量池 就是在 class 文件加载到内存之后,常量池保存在方法区(其中存了一些常量、静态变量、类信息等)中,通常说的常量池指的是运行时常量池。
常量池可以避免频繁的创建和销毁对象,有利于实现共享。