zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    CF899A Splitting in Teams
    CF898A Rounding
    CF914A Perfect Squares
    CF864A Fair Game
    CF909A Generate Login
    关于C++的一些函数的使用方法
    又是一个二模02,不过day2
    2模02day1题解
    二模Day2题解
    KMP算法心得
  • 原文地址:https://www.cnblogs.com/tsxf/p/6477970.html
Copyright © 2011-2022 走看看