• Java中的equals和==使用


        equals方法来自于基类Object,==二目运算符,比较的是值,在java中8种基本类型比较的值,存储在栈上,一般没问题,对于对象,在java中一切皆对象,两个对象该怎么比较,有两种比较方式,第一:比较栈中的引用地址是否指向同一个对象,第二:比较堆中的对象内容,可以看String类equals方法重写了Object中的方法,另外也需要注意一点,String是final类型的

    public class Test {
    	public static void main(String[] args) {
    		String s1 = "hello";
    		String s2 = "hello";
    		// s1,s2引用变量指向相同的内容,故引用地址相同,没有new
    		System.out.println(s1.equals(s2));
    		System.out.println(s1 == s2);
    		// 既然引用地址是一样的,故地址和内容比较都是一样的
    		String s3 = new String("hello");
    		System.out.println(s1 == s3);
    		String s4 = new String("hello");
    		System.out.println(s3 == s4);
    		// s3,s4指向不用的对象(实例),虽然内容是一样的,故内存地址是不一样的
    		System.out.println(s3.equals(s4));
    		// String类重写了Object父类的equals方法,通过比较char[]在每一个位置上的值,判断值是否相同
    		Test test1 = new Test();
    		Test test2 = new Test();
    		System.out.println(test1 == test2);
    		System.out.println(test1.equals(test2));
    		// 没有重写equals方法,调用的还是父类的方法比较的是引用的值
    		// String,Date,Integer,Double,这些基本类型的包装类都重写了Object的equals方法
    		// StringBuffer及其他的,使用比较方法前先看是否实现了这个方法,如果没有实现,就需要自己来做。
    		//打开类快捷键:Ctrl+Shift+T
    	}
    }
    

      输出结果:

    true
    true
    false
    false
    true
    false
    false

    参考:http://www.cnblogs.com/Qian123/p/5704007.html

  • 相关阅读:
    FindWindowEx使用方法
    什么是VSync
    getParameter
    高等数学积分公式大全
    为什么没有好用的Android游戏引擎?
    Best Time to Buy and Sell Stock III
    5.3 适配器模式(4.1)
    在动态网络下实现分布式共享存储
    人类智商一般在多少左右?爱因斯坦的智商是多少?
    海量数据处理面试题集锦
  • 原文地址:https://www.cnblogs.com/tsxf/p/6477970.html
Copyright © 2020-2023  润新知