java 操作字符串需注意的几个问题
来源:互联网 发布:手机魔术软件哪些 编辑:程序博客网 时间:2024/06/10 04:57
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指向的是同一个对象。
- java 操作字符串需注意的几个问题
- Java中要注意的几个问题
- 用qsort对字符串数组排序需要注意的几个问题
- 用qsort对字符串数组排序需要注意的几个问题
- 用qsort对字符串数组排序需要注意的几个问题
- 使用CMOS集成电路需注意的几个问题
- Sybase注意的几个问题
- 要注意的几个问题
- 接口注意的几个问题
- composer注意的几个问题
- Java与C通信要注意的几个问题
- Java与C通信要注意的几个问题
- Java可变参数方法重载时要注意的几个问题
- Java可变参数方法重载时要注意的几个问题
- java中泛型使用中值得注意的几个问题
- Java跨平台编码需要注意的几个问题
- Java可变参数(...)方法重载时要注意的几个问题
- Java可变参数方法重载时要注意的几个问题
- vector 与list区别
- u-boot的nand层次分析
- STL源码剖析---红黑树原理详解下
- TCP 程序设计
- SOA体系结构基础培训教程
- java 操作字符串需注意的几个问题
- 同步与死锁
- ARM的启动方式和bootloader解析(上)
- 上海最新住房贷款(含公积金贷款,商业贷款,组合贷款)
- Linux 开发环境工具
- 3120卷
- 关于函数调用约定的学习笔记
- POJ1177+线段树+扫描线
- 宿主机跟Vmware中的linux使用host-only,bridge 方式通信