您的位置:首页 > 编程语言 > Java开发

java 操作字符串需注意的几个问题

2013-08-02 22:40 260 查看
1、了解“==” 和 “equals”的区别。

在java中,所有的对象名其实中一个引用,这一点在字符串比较中可以很清楚的看到。如下:

String s1=new String("hello");

String s2=new String("hello");

boolean b1=(s1==s2)?true:false;//b1=false;

b1=(s1.equals(s2))?true;false;//b1=true

当用“==”操作符时,比较的是s1和s2两个引用是否是指向同一个对象,而只有equals才是真正比较两个字符串对象的值是否相同。

但要注意这种情况:

String s1="hello";

String s2="hello";

boolean b1=(s1==s2)?true:false;//b1=true;

由于String是不可变类,所以如果不是通过new方法创建的字符串对象,只要值相同,都是指向的同一个对象。

2、用“+”操作符操作字符串:

注意 null 和 ""

String st1=null;

String st2="st2";

String st3=""

System.out.println(st1+st2);//output: nullst2

System.out.println(st3+st2);//output: st2

所以在执行+号运算时,一定要注意字符串赋值为null和""的区别。

3、String变了吗?

String是一个不可变类,即它是只读的。如下面的操作:

String s1="hello";

s1+="world";

这个操作的过程其实是这样的,s1首先指向一个"hello"的String对象,在执行“+”操作后,s1指向一个“hello world”的String对象。而之前的“hello”对象是没有释放的。

从这可以得出下面两个结论:

1)如果程序中有大量的String类值的变更操作,就会带来比较大的内存消耗。

2)在创建一个字符串时,没必要这么做:new String() 来构造新的字符串对象。因为如果是这种方式创建String的话,如果两个字符串引用s1和s2的值相等,它们仍然指向不同的对象。但是如果是这样,s1="hello";s2="hello",这时,s1和s2指向的是同一个对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: