String和StringBuffer、包装类等

学习总结

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()方法可以实现其他的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值