一、String类
a.) String类对象的初始化在java中给了一种简化的特殊语法来创建String类的对象,格式如下:
String str = "Hello World!";
当然也可以按照面向对象的标准语法来创建String类的对象,格式如下:
String str1 = new String("Hello World!");
但是按照面向对象的标准语法来创建String类的对象,会造成内存使用的浪费,因为当你new一个对象的时候,
实际上是创建了两个对象,一个是"Hello World!"对象,存在常量空间,一个是使用new的关键字为str1申请的空间。
b.) String类的对象是不能被改变比如当我们这样使用时:
String str = "Hello World!"; str += " xdlove~"; out.print(str);
输出是Hello World! xdlove~,虽然看起来str是被改变了,但是实际上一开始用new关键字申请的空间里面的"Hello World!"
并没有改变,而是系统重新开辟了一段空间来存Hello World! xdlove~,并把原先指向 "Hello World!" 的指向断开,去指向新
的内存块。这样当我们在程序中大量使用这样的语句时,会使程序的效率非常低下,造成了空间的大量浪费。
c.) String类中的重要API
1.public char[] toCharArray() 将字符串转化为字符数组。
例:char c[] = str.toCharArray();
2.char charAt(int index) 返回字符串中下标为index的字符。
3.将字符数组转化为字符串
例:str1 = new String(c) 把字符数组的全部字符转化为字符串
str2 = new String(c,start,num) 把字符数组的部分字符转化为字符串
4.字符串与Byte数组的转换
byte数组(字节数组),在一般的IO操作中会经常使用到。
byte[] getBytes() 将字符串变为字节数组
byte c[] = str.getBytes();
5.查找指定的字符或字符串是否存在
public int indexOf(String str) 返回的是字符串或字符在原串的起始位置,
如果不存在则返回-1
6.去掉字符串首尾的空格
例:str.trim();
7.字符串截取
例:str.substring(6) 从第七个位置开始截取到结尾。
str.sunstring(0,5) 0为起始位置,5为结束位置的子串。
8.spilt方法
#1.该方法的作用是以特定字符串作为间隔,拆分当前字符串的内容,一般拆分后会形成一个字符串数组。
例如:
String str = "12 23"; String[] c = str.split(" "); for(String e: c) out.println(e);
#2.如果字符串中在内部存在和间隔字符串相同的内容时,将拆除空字符串,但是尾部的空字符串会被忽略。例如:
String str = "12 23 "; String[] c = str.split(" "); for(String e: c) out.println(e);
#1会得到字符串集合{“12”,“23”},#2会得到字符串集合{“12”,“”,“23”};
#3.如果需要限定字符串拆分后的字符数组大小,则在split方法再加上一个参数制定最多可以拆分成几个字符串
例如:
String str = "12 23 123"; String[] c = str.split(" ",2); for(String e: c) out.println(e);
#3.拆分后形成两个字符串{“12”,“23 123”};
#4.当参数为负数时,会尽可能的拆完怎个字符串,并且连末尾的空格也拆分出来,这一点和不加参数有点区别