Notifier's Blog

常遇困境,说明你在进步!
       常有压力,说明你有目标!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Java学习笔记---8.面向对象编程03-String类的重点应用

Posted on 2010-09-20 10:42  notifier  阅读(423)  评论(0编辑  收藏  举报

    String为Java一个很重要的内置类(说最重要也不算很过分吧\(^o^)/~),String类是我们在项目开发中最常使用的一个,这里将String类单独列出来进行学习.

      在String类这一部分中,分为三个问题来做笔记.


1. String对象的赋值方式

      String对象有两种赋值方式, String str = "abc" 或者 String str = new String("abc") .两种赋值方式的效率是不一样的, 这是因为String类型与数组类似, 也是引用类型,具体分析一下:

      对于String str ="abc"的方式, 程序首先在栈内存中声明str引用, 然后在常量池中分配一个"abc"的匿名类对象空间,通过引用将str与"abc"联系起来. 这里感谢ZangTX老乡的提醒, "笔记"一下: 在Java源代码中,以""包围的字符串,会自动的放到常量池中. 就是说,""包围的字符串是一种匿名对象,  字符串的匿名对象是放在常量池的,而通过new创建的对象是在堆内存开辟的. 例图如下(按照上面的说法,下图有误,注意注意!):

      

      而对于String str = new String("abc")这种方式而言,程序首先在栈内存声明str引用, 而后有些不同: 在常量池中,先分配一个"abc"的匿名对象空间,然后通过 new String()方法, 将该空间复制一份, 最后将复制后的空间与str对象引用联系起来. 这里多了一次堆内存的分配,因此比第一种赋值方式更耗空间.

      所以, 在进行String对象的赋值的时候,尽量采取String str ="abc"这样的方式, 避免使用String str = new String("abc")方式.


2. String对象的比较

      String对象的比较方法有两种 : "=="和 equals()方法.

      "==" 方法用于比较String对象时,比较的是双方的内存地址的值, 即两个对象是否指向的是同一个地址;

      equals()用于比较String对象时, 比较的是两个String对象的内容是否一致.


3. String对象常用的几个方法总结

      (1) 求字符串长度

       这个容易和求数组的长度混淆:

       求数组的长度: 数组名.length  如 a.length;

       求字符串长度: 字符串名.length() 如 str.length();

      (2)将字符串转变为字符数组

       使用的方法是 char[]  toCharArray(). 这里要注意的是, 需要用一个字符数组即 char[]  数组来接收.

      (3)判定字符串是否相等的方法

       即上面说到的equal()方法, 该方法返回的是布尔值.

      (4)"瘦身"方法

       即trim()方法, 用于去掉输入字符串左右的空格,在实际应用中较常用到.

      (5)将字符串转为全大写/小写

       toUpperCase()方法和toLowerCase()方法

 

       其他还有一些如截取字符串,替换字符串等方法,在使用时查下API好了~