学习总结
2008-12-11
1. String类:
(1)总述:
因为String类被广泛的使用,所以被定义为final属性,不能被修改,避免被重写、覆盖而改变String的值。如果对String类的对象作修改,系统会创建新的String对象,而原来的String类对象还在。实现字符串相加操作的时候不建议使用String类对象,因为每修改一次String对象都会产生一个新的对象,这样会使系统产生大量的String对象导致系统效率降低。我们一般采用StringBuffer类对象,它是可变的。
(2)trim()方法
作用是取出字符串两端的空格(字符串中间的空格不能去掉)后返回一个新的字符串,注意,原来的字符串仍然存在。
String str = “ Hello world ”;
String str0 = str.trim(); //必须要重新赋给一个变量后才能使用
System.out.println(str0);
(3)String str = null //取str长度时空指针异常
String str = “” //取str长度时返回0
(4)String.compareTo()方法:
String str0 = "abc";
String str1 = "a";
System.out.println(str1.compareTo(str0));
/*
* 这是字典排序的定义。如果这两个字符串不同,那么它们要么在某个索引处的字符不同(该索引对二者均为有效索引), 要么长度不同,或者同时具备这两种情况。如果它们在一个或多个索引位置上的字符不同,假设 k 是这类索引的最小值; 则在位置 k
上具有较小值的那个字符串(使用 < 运算符确定),其字典顺序在其他字符串之前。在这种情况下, compareTo 返回这两个字符串在位置 k 处两个char 值的差,即值: this.charAt(k)-anotherString.charAt(k) 如果没有字符不同的索引位置,则较短字符串的字典顺序在较长字符串之前。在这种情况下,compareTo 返回这两个字符串长度的差,即值: this.length()-anotherString.length()
*/
(5)String类型转换成StringBuffer类型
StringBuffer stringBuffer = new StringBuffer(str)使用的是构造方法,将StringBuffer初始化为str
(6)concat操作
相当于StringBuffer里的append方法,不同的是concat操作要赋值给一个新的String对象。
2. StringBuffer类
(1)总述
一个类似于 String
的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
(2)主要的方法
①构造对象
StringBuffer stringBuffer = new StringBuffer();可以给出String类对象的参数。
②append方法
将指定参数以字符串的形式追加到StringBuffer对象的序列末尾:
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("Hello");
stringBuffer.append("world");
stringBuffer.append(2.558);
System.out.println(stringBuffer);
③insert方法
第二个参数的字符串表示形式将被插入此序列中 offset
指示的位置处。此序列的长度将增加 1。
for(int i =1;stringBuffer.length()-3*i>0;i++){
stringBuffer.insert(stringBuffer.length()-3*i, ',');
}
3. ==和equals的比较
(1)总述
Equals()只能比较引用类型,而==一般比较原始数据类型,但也能比较引用类型,但这个时候比较的是对象在内存中的首地址;
Equals默认的是比较对象的引用,如果想自己判断,则需要重写equals方法和hashcode方法;系统的String类型和Wrapper类型已经被重写了。
注:hashcode,哈希码,可以理解成是对象的标记码,但要注意哈希码相等对象不一定相同。
(2)应用
String str1 = “abc”; String str1 = “abc”;?????
String str2 = “abc”; String str2 = “abc”;
Str1 == str2 -àtrue str1 == str2 -à false
第一个指向同一个对象,第二个指向两个不同的对象,尽管二者对象内容一样。
4. 包装类
(1)八种基本数据类型的封装类
(2)原始类型转换成String的两种方法
① char i = 'a';
String m = Character.toString(i);
②int int1 = 3;
String str1 = "" + int1;
这里第二种方法一定要加一个空格的,否则出错。
(3)String类型转换成int类型时,字符串必须是数字串
String str2 = "123";
int int2 = Integer.parseInt(str2);
System.out.println(int2);
(4)toString()方法
toString()方法在根父类Object类中定义,其返回值是String类型,描述当前对象的有关信息如内存地址等。在进行String与其它类型数据的连接操作时,自动调用toString()方法。可以根据需要在用户自定义类型中重写toString()方法。基本类型数据转换为String类型时,调用了对应封装类的toString()方法。
System.out.println(对象)时,如果没有重写toString()方法则会输出对象在内存中地表示,重写toString()方法可以实现其他的功能。