Java基础之判断方面学习

版权声明:学习之路,任重道远 https://blog.csdn.net/weixin_43359405/article/details/83178587

1、Java比较存在那些方式呢?

   第一种:==,第二种:equals,第三种:getClass

2、他们之间有哪些差别呢?

第一种==:应用于基础数据类型比较,第二种equals:应用于引用数据类型比较,第三种getClass:应用于导入的是否同一个对象的实例化

注:以上是主要的比较应用方面

3、他们比较的方式到底是怎么样呢?

==和equals比较的话,如果equals没有重写的话,那么他们比较的差不多一致。

  注:  ==比较内存位置是否一致,,equals比较的是对象是否是同一个对象。

getClass比较的就是 class+包名+类名组成一个识别,比较。

4、getClass使用方面

附测试类:

package com.briup.ch22;

public class  GetClassTest
{
	public static void main(String[] args){
	     Student s1 = new Student();
		 Student s2 = new Student();
		 System.out.println("输出GetClass内容:"+s1.getClass()+" "+s2.getClass());
	}
}

class Student{
		public String name = "张三";
}

注输出结果:

 

5、==和equals比较使用方面

 ==     :一般比较内存位置是否一致的问题,比较针对于基础数据类型的话

equals:一般比较是否是同一个对象,(前提无重写equals)

附测试类:

package com.briup.ch22;

public class  GetClassTest
{
	public static void main(String[] args){
	     int a =1 , b =2 , c =3;
		 System.out.println(a == b);
		 System.out.println(b == c);
         Student s1 = new Student();
		 Student s2 = s1;
		 System.out.println(s1 == s2);
		 s2 = new Student();
         System.out.println(s1 == s2);
	}
}

class Student
{
	public String name;
	public int age;
	public String sex;
} 

 附测试类结果:

附equals测试类:

package com.briup.ch22;

public class  GetClassTest
{
	public static void main(String[] args){
         Student s1 = new Student();
		 Student s2 = s1;
		 System.out.println(s1.equals(s2));
		 s2 = new Student();
         System.out.println(s1.equals(s2));
	}
}

class Student
{
	public String name;
	public int age;
	public String sex;
} 

附测试类结果:

结果分析:==比较的是对于引用数据的时候比较的其实是内存地址是否一致,equals比较的同==

6、如何重写equals方法?

步骤:查询java的API,查询equals在那个里面,然后我们就可以重写该方法,实现自定义判断识别。

查询结果equals在默认包(lang),util包(Comparable接口),所以我们实现该接口或者重写该方法

附代码测试类:

package com.briup.ch22;

public class GetClassTest 
{
    static class  Student 
    {
	  public String name;
	  public int age;
	  public String sex;

	  public Student(String name,int age,String sex){
	      this.name = name;
		  this.age = age;
		  this.sex = sex;
	  }

	  public Student(){
	
	  }
	
	  @Override
	  public boolean equals(Object obj){
	      ///第一步判断是否为空对象
		  if(obj == null)
		  	return false;
		  ///第二步判断是否是同一个类是实例化对象
		  if(!obj.getClass().equals( this.getClass() ))
		  	return false;
		  Student temp = (Student)obj;
		  if(temp.name.equals(this.name) && temp.age == this.age && temp.sex.equals(this.sex))
			return true;
		  return false;
	  }
    }

	public static void main(String[] args){
         Student s1 = new Student("张三",20,"男");
		 Student s2 = s1;
         System.out.println(s1.equals(s2));
		 s2 = new Student("张三",20,"男");
		 System.out.println(s1.equals(s2));
		 s2.sex = "女";
         System.out.println(s1.equals(s2));
	}
}

附结构测试类:

猜你喜欢

转载自blog.csdn.net/weixin_43359405/article/details/83178587