一、认识String类
1、String表示字符串类型,属于 引用数据类型 ,不属于基本数据类型。
2、在java中随便使用 双引号括起来
的都是String对象。
例如:“abc”,“2344f”,“hello world!”,这是3个String对象。
1.字符串的构建
String
类提供的构造方式非常多,常用的就以下三种:
二、String属于 引用数据类型
1.
String
是引用类型,内部并不存储字符串本身
,在
String
类的实现源码中,String类实例变量如下:
如上图:字符串实际是保存在char 类型数组中
具体可以看下示意图:
三、字符串的比较
1. ==比较是否引用同一个对象
注意:对于内置类型,
==
比较的是变量中的值;对于引用类型
==
比较的是引用中的地址。
对于引用类型==比较的是引用中的地址,所以s1和s2比较是false,s2与s3比也为false,而s4是s1引用的地址所赋值,因此比较为true。
2.equals方法比较
比较字符串内容就要用到equals方法。
String
类重写了父类
Object
中
equals方法,Object中
equals
默认按照
==
比较,
String
重写
equals
方法后,按照 如下规则进行比较,比如: s1.equals(s2)
即字符串内容相同为true,不同为false。
3.compareTo与 compareToIgnoreCase
3.1int compareTo(String s) 方法: 按照字典序进行比较
与
equals
不同的是,
equals
返回的是
boolean
类型,而
compareTo
返回的是
int
类型。具体比较方式:
1.
先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值
2.
如果前
k
个字符相等
(k
为两个字符长度最小值
)
,返回值两个字符串长度差值
3.2int compareToIgnoreCase(String str) 方法:
与compareTo方式相同,但是忽略大小写比较
四、字符串查找
关于String类型的一些使用方法总结:
五、StringBuilder和StringBuffer
前言:字符串修改
注意:尽量避免直接对
String
类型对象进行修改,因为
String
类是不能修改的,所有的修改都会创建新对象,效率
非常低下。
public static void main ( String [] args ) {String s = "hello" ;s += " world" ;System . out . println ( s ); // 输出: hello world}
可以看待在对
String
类进行修改时,效率是非常慢的,因此:尽量避免对
String
的直接需要,如果要修改建议尽量使用StringBuffer
或者
StringBuilder
。
5.1 StringBuilder
由于
String
的不可更改特性,为了方便字符串的修改,
Java
中又提供
StringBuilder
和
StringBuffer
类。这两个类大部分功能是相同的,这里介绍 StringBuilder
常用的一些方法,其它需要用到了大家可参阅
StringBuilder
在线文档
StringBuilder的部分运用: