我爱编程

Java之String类

2018-06-11  本文已影响0人  如果仲有听日

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()

例:将给定字符串第一个字母大写,后面的字母全部小写

上一篇下一篇

猜你喜欢

热点阅读