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好了~
常遇困境,说明你在进步!
常有压力,说明你有目标!
作者:notifier
出处:http://www.cnblogs.com/notifier/
本文版权归作者notifier和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利!