String
1. String类基本特性
String类再Java类中也是一个很重要的类,String类的对象是不需要使用new的(免new),打印其对象(toString被重写)是没有地址的
String类的对象字符串是一个常量,例
String str = "stringTest";
str = "abcdef";
System.out.println(str); //这里打印出abcdef,但是stringTest和abcdef是常量,是不可变的
查询String类的申明中前几行可以发现是这样定义的:
String定义的前几行也就是说,String类的对象本质上是一个字符数组,并且定义为了final,一旦字符串数组建立,那么终身不变,为一个常量。
但是str作为一个String类的对象变量,其指向的引用地址是可以改变的,例如:
2 使用String类的构造方法(非免new)和equals方法
str==str2是对象变量指向地址的比较判断,str是免new出来的,而str2是new出来的,地址肯定不一样,所以返回false
str==str3, 由于str赋值的时候已经有"abcdef"了,str3在赋值的时候会去检查是否在常量区中有"abcdef",如果有就不会去创建新的value数组,而使用str创建时的value数组, 因此是返回true
str.equals(str2)可以从下面的String类的equals重写方法中得知:是判断2个字串是否相等,所以返回true
String类equals方法总结:我们可以发现免new的对象,如果字符串相同,则变量指向的地址相同。
而new出来的对象,肯定是地址不同的字符串数组
3. String类的构造方法
3.1 String(byte[] bytes)
通过使用平台的默认字符集(ascii)解码指定的字节数组来构造新的String。
3.2 String(byte[] bytes, int offset, int length)
通过使用平台的默认字符集解码指定的字节子阵列来构造新的String。
3.3 String(char[] value)
分配一个新的String,以便它表示当前包含在字符数组参数中的字符序列。
3.3 和3.1、3.2的区别是char[]数组不去解码编码表,而3.1、3.2需要去查询编码表解码
4. String类的其他常用方法
4.1 lint length()
返回此字符串的长度。
4.2 String substring(int beginIndex, int endIndex)
返回一个字符串,该字符串是此字符串的子字符串。
这个方法也是对字串进行裁剪的常用方式
截取字符串4.3 boolean startsWith(Stringprefix)
测试此字符串是否以指定的前缀开头。
4.4 public boolean contains(CharSequence s)
当且仅当此字符串包含指定的char值序列时才返回true。
4.5 byte[] getBytes()
使用平台的默认字符集将此String编码为字节序列,将结果存储到新的字节数组中。
这个方法在zookeeper的接口参数中有应用
打印结果是97~104这里只能一个个打印,否则是乱码
4.6 char[] toCharArray()
将此字符串转换为新的字符数组。不查询编码表
4.7 public char charAt(int index)
返回char指定索引处的值。指数范围为0至length() - 1。
例:获取置顶字符串中,大写字母、小写字母、数字的个数
4.8 大小写转换
public String toLowerCase()
public String toUpperCase()
例:将给定字符串第一个字母大写,后面的字母全部小写
网友评论