字符串中"=="和"equals()"&NULL和""问题
2016-04-14 10:55
381 查看
package com.java; public class TestFlyWeight { public static void main(String[] args) { /** * “==” 和 “equals()” * 前者比较的是引用,后者比较的是对象中真正的值。 * ==是对字符串地址的比较,比较两个引用是否指向同一个内存地址。 */ Object s3 = new String("Hello"); Object s4 = new String("Hello"); if(s3 == s4){ System.out.println("s3 and s4 are =="); }else if(s3.equals(s4)){ System.out.println("s3 and s4 are equals()"); } if(s3.equals(s4)){ System.out.println("s3 and s4 are equals()"); }else if(s3 == s4){ System.out.println("s3 and s4 are =="); } /** * 输出: * s3 and s4 are equals() * s3 and s4 are equals() */ System.out.println("=================="); /** * 下面是个特例: * 这是个典型的flyweight模式(享元模式)在字符串对象创建中的应用,这个模式通过减少对象的创建来节约内存。 * String对象会创建一个字符串池(a pool of string),如果当前准备新创建的字符串对象的值在这个池子中已经存在, * 那么就不会生成新对象,而是复用池中已经有的字符串对象。flyweight模式的精髓就是对象复用。 */ Object s1 = "Hello"; Object s2 = "Hello"; if(s1 == s2){ System.out.println("s1 and s2 are =="); }else if(s1.equals(s2)){ System.out.println("s1 and s2 are equals()"); } if(s1.equals(s2)){ System.out.println("s1 and s2 are equals()"); }else if(s1 == s2){ System.out.println("s1 and s2 are =="); } /** * (引用相同并且值相同) * 输出: * s1 and s2 are == * s1 and s2 are equals() */ System.out.println("=================="); /** * null是空对象,""是空字符串 * null可以赋值给任何对象,而""就不行了,只能赋值给字符串对象 * 如: * String s=null;//定义了一个对象实例s,但未将该实例指向任何内存空间 * String s="";//定义了一个对象实例s,指向了一个空串 * null不能调用字符串的任何方法 */ String a1 = null; String a2 = ""; //报错java.lang.NullPointerException // System.out.println(a1.equals(a2)); // System.out.println(a1.length()); System.out.println(a1 == a2);//false System.out.println(s1.equals(a1));//false System.out.println(a2.equals(a1));//false System.out.println(s1.equals(a2));//false } }
相关文章推荐
- spring-IOC
- linux备份mysq脚本
- Ext grid单元格加combobox
- 有效处理java异常的三个原则
- 8天学通MongoDB——第二天 细说增删查改
- Openstack虚拟机内安装docker,容器无法联网问题
- [置顶] IOS 关于取消延迟执行函数的种种。performSelector与cancelPreviousPerformRequestsWithTarget
- iOS9.+如何用Application统一管理状态栏
- 剑指offer 斐波那契数列
- java多线程之wait,notify的使用
- ios UIButton属性大全
- VC2010操作Excel的方法
- Merge的用法
- 词汇相似度计算
- Android之RadioGroup+ViewPager制作的底部导航栏
- C++处理JSON数据交换格式
- 基于hiredis封装HMSET命令
- Java中Textview 在XML中详细配置讲解
- memcache 缓存的批量删除方案(转)
- 07-eclipse中git的使用