String类
String类的理解和创建对象
-
String对象用于保存字符串,也就是一组字符序列
-
字符串常量对象使用双引号括起的字符序列
-
字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节
-
String类实现接口
Serializable
,可以序列化,可以在网络传输
实现接口Comparable
,对象可以比较大小 -
String类的属性
private final char value[]
用于存放字符串内容 -
String类有final关键字修饰,不能被继承
-
String类常用的构造方法:
String s1 = new String(); String s2 = new String(String original); String s3 = new String(char[] a); String s4 = new String(char[] a,int startIndex,int count);
两种创建String对象的区别
-
直接赋值
String str = "xxx";
先从常量池查看是否有“xxx”数据空间,如果有就直接指向,没有则重新创建然后指向。str最终指向的是常量池的空间地址 -
调用构造器
String s2 = new String("xxx");
先从堆中创建空间,里面维护了value属性,指向常量池的“xxx”空间。如果常量池中没有“xxx”,重新创建,如果有,直接通过value指向。最终指向的是堆中的空间地址
面试题相关
String方法intern()
最终返回的是常量池的地址
字符串特性
-
String是一个final类,代表不可变的字符序列
-
字符串是不可变的。一个字符串对象一旦被分配,其内容是不可变的。
说明
String类是保存字符串常量的,每次更新都需要重新开辟空间,效率较低,因此java设计者提供了StringBuffer
和StringBuilder
增强String的功能并提升效率。
String类常用方法
-
equals
区分大小写,判断内容是否相等 -
equalsIgnoreCase
忽略大小写的判断内容是否相等 -
length
获取字符的个数,字符串的长度 -
indexOf
获取字符在字符串中第一次出现的索引,索引从0开始,如果找不到则返回-1 -
lastIndexOf
获取字符在字符串中最后一次出现的索引,索引从0开始,如果找不到则返回-1 -
substring
截取指定范围的子串 -
trim
去前后空格 -
charAt
获取某索引处的字符,注意不能使用Str[index]这种方式