java之String对象的比较
2015-06-15 20:04
465 查看
转载请注明出处
http://blog.csdn.net/pony_maggie/article/details/46507283
作者:小马
String对象的比较与一般的对象还是有些区别的,看下面这段代码,
输出结果:
比较两个字符串一定要用equals而不是直接用==,因为后者比较的是引用,而不实际值,这一点与普通对象是一样的,但是输出结果为什么s1和s2相等呢? 这是因为,如果s1和s2都是同一个字面量赋值,那么无论是用==比较,还是用equals函数比较,都会返回true。多个String引用指向同一个字面量时,在堆内存当中只有一个Java对象。
s3和s4是不相同的,原因是如果调用String的构造函数给String类型的引用赋值,那么每调用一次构造函数,在堆内存当中就会生成一个String对象。
http://blog.csdn.net/pony_maggie/article/details/46507283
作者:小马
String对象的比较与一般的对象还是有些区别的,看下面这段代码,
public static void main(String[] args) { // TODO Auto-generated method stub String s1 = "abd"; String s2 = "abd"; String s3 = new String("123"); String s4 = new String("123"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); System.out.println(s3 == s4); System.out.println(s3.equals(s4));
输出结果:
true true false true
比较两个字符串一定要用equals而不是直接用==,因为后者比较的是引用,而不实际值,这一点与普通对象是一样的,但是输出结果为什么s1和s2相等呢? 这是因为,如果s1和s2都是同一个字面量赋值,那么无论是用==比较,还是用equals函数比较,都会返回true。多个String引用指向同一个字面量时,在堆内存当中只有一个Java对象。
s3和s4是不相同的,原因是如果调用String的构造函数给String类型的引用赋值,那么每调用一次构造函数,在堆内存当中就会生成一个String对象。
相关文章推荐
- Java正则表达式应用总结
- Java产生随机数
- Java集合类型(一)
- SpringMVC_The resource identified by this request is only capable of generating responses with characteristics
- spring xml解析异常
- ArrayList中元素判定相等方法
- Caused by: java.sql.SQLException: ResultSet is from UPDATE. No Data.
- Caused by: java.sql.SQLException: ResultSet is from UPDATE. No Data.
- eclipse maven build 配置
- java.io.IOException: 您的主机中的软件中止了一个已建立的连接。
- java.io.IOException: 您的主机中的软件中止了一个已建立的连接。
- [java]深入理解JVM内存模型
- JAVA中int、String的类型转换
- eclipse设置界面主题
- 理解java中的new
- Java集合系列-总体框架
- Java消息服务(Java Message Service,JMS)
- javaMail发送邮件步骤与实现
- Springmvc+mybatis
- Java类加载器总结