(一)字符串被作为String类型的对象处理。String类位于java.lang包中。默认情况下,该包被自动导入所有的程序。
创建String对象的方法:
String s1 = “haha”;
String s2 = new String();
String s3 = new String("haha");
(二)字符串的不变性
String对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。
String s1 = "hi";
String s2 = "hi";
String s3 = new String("hi");
String s4 = new String("hi");
System.out.println(s1=s2);//多次出现的字符常量,Java编译程序只创建一个,所以返回true
System.out.println(s1=s3);//s1和s3是不同的对象,所以返回true
System.out.println(s3=s4);//s3和s4是不同的对象,所以返回true
s1 = “欢迎:”+s1;
System.out.println(s1);//字符串1被修改,指向新的内存空间
一旦一个字符串在内存中创建,则这个字符串将不可改变。如需要一个可改变的字符串,可用StringBuffer或StringBuilder。
每次new一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用“==”比较时也为“false”,如只需比较内容是否相同,应用“equals()”方法。
(三)String类的常用方法
int length | 返回当前字符串的长度 |
int indexOf(int ch) | 查找ch字符在该字符串中第一次出现的位置 |
int indexOf(String str) | 查找str子字符串在该字符串中第一次出现的位置 |
int lastIndexOf(int ch) | 查找ch字符在该字符串中最后一次出现德尔位置 |
int lastIndexOf(String str) | 查找str子字符串在该字符串中最后一次出现的位置 |
String substring(int beginIndex) | 获取从beginIndex位置开始到结束的子字符串 |
String substring(int beginIndex , int endIndex) | 获取从beginIndex位置(包括)开始到endIndex位置(不包括)的字符串 |
String trim() | 返回去除了前后空格的字符串 |
boolean equals(Object obj) | 将该字符串与指定对象比较,返回true或者false |
String toLowerCase() | 将字符串转换成小写 |
String toUpperCase() | 将字符串转换成大写 |
char charAt(int index) | 获取字符串指定位置的字符 |
String[ ] split(String regex, , int limit) | 将字符串分割为子字符串,返回字符串数组 |
byte[ ] getBytes() | 将该字符串转换为byte数组 |
(四)String类的常用方法
==:判断两个字符串在内存中首地址是否相同,即判断呢是否是同一个子字符串对象。
equals:比较存储在两个字符串对象中的内容是否一致。
字节:计算机存储信息的基本单位,1个字节等于8位,gbk编码中一个汉字字符存储需要2个字节,1个英文字符存储需要1个字节。每个字节是8位,最大不能超过127,而汉字转换为字节后超过127,如果超过就会溢出,以负数的形式显示。
(五)StringBuilder类
除了可用String类来存储字符串,还可用StringBuilder类或StringBuffer类存储字符串。当频繁操作字符串时,就会额外产生很多临时变量。使用StringBuilder或StringBuffer就可避免这个问题。
StringBuffer是线程安全,而StringBuilder则没有实现线程安全功能,所以性能略高。一般,如需创建一个内容可变的字符串对象,优先考虑用StringBuilder类。
StringBuilder str1 = new StringBuilder();
StringBuilder str2 = new StringBuilder("hello");
System.out.println(str2);
(六)StringBuilder类常用方法
StringBuilder append(参数) | 追加内容到当前StringBuilder对象的末尾 |
StringBuilder insert(位置,参数) | 将内容插入到StringBuilder对象的指定位置 |
String toString() | 将StringBuilder对象转换为String对象 |
int length() | 获取子字符串的长度 |