黑马程序员入学篇——(2)“==”运算符与equals()方法的区别

首先它们都是对对象进行比较的操作。

“==”用于比较基本数据类型的是否相等。如”if(2==3)”语句。而equals()方法用于比较对象中的内容是否完全一样。

 

public class Student {

    private String name;

    private int age;

    private int marks;

    private int number;

 

    public int getNumber() {

       return number;

    }

    public void setNumber(int number) {

       this.number = number;

    }

    public Student(String name, int age, int marks,int number) {

 

       this.number=number;

       this.name = name;

       this.age = age;

       this.marks = marks;

      

    }

/*

    public boolean equals(Student s){

       if(this.number==s.number)

           return true;

       else return false;

      

    }

*/

    public String getName() {

       return name;

    }

 

    public void setName(String name) {

       this.name = name;

    }

 

    public int getAge() {

       return age;

    }

 

    public void setAge(int age) {

       this.age = age;

    }

 

    public int getMarks() {

       return marks;

    }

 

    public void setMarks(int marks) {

       this.marks = marks;

    }

 

}

 

public class SortStudents {

    public static void main(String[] args) {

       Student s1 = new Student("student", 18, 88,1);

       Student s2 = new Student("student", 18, 88,1);

       Student s3 = s1;

 

       if (s1 == s2)

           System.out.println("s1==s2");

       else

           System.out.println("s1!=s2");

 

       /*

        * 输出 s1!=s2

        * 此处s1不等于s2,因为s1和s2分别指向堆内存中两个不同的对象,他们在栈中的值是不同的,所以不相等,

        * 也即是"=="表达式比较的是栈内存中两个变量的值是否相同。

        */

 

       if (s1.equals(s2))

           System.out.println("s1 equals to s2");

       else

           System.out.println("s1 not equals to s2");

      

       /*输出s1 not equals to s2

        * object 类中的 equals 方法的默认实现是比较两个对象是不是同一个对象

        * 即比较的是引用是否相同,这与"=="表达式相同

        * 在这里我们要比较两个学生是不是同一个学生只要他们的学号相同即可。

        * 所以通常要重写 object 类的 equals 方法 通过比较他们的学号是否相同来判断两个学生是不是同一个 。

        *

        *

        *如果在 Student 类中添加方法:

        * public boolean equals(Student s){           }

       if(this.number==s.number)

           return true;

       else return false;

 

        * 则 此处应输出 s1 equals to s2

        * 因为我们重写了object 类中的 equals 方法   我们规定 当两个学生的学号相同时就认为是同一个学生

        * */

      

      

       if (s1 == s3)

           System.out.println("s1==s3");

       else

           System.out.println("s1!=s3");

 

       /*

        * 输出 s1==s3

        * 这里s1等于s3,因为Student s3 = s1;语句是把s1的值赋给s3,这样他们在栈内存中的值是相等的,

        * 也即是他们指向堆内存中的同一个对象。

        */

      

      

       if (s1.equals(s3))

           System.out.println("s1 equals to s3");

       else

           System.out.println("s1 not equals to s3");

      

      

       /*输出 s1 equals to s3

        * 这里是  object 类中的 equals 方法的默认实现,与"=="表达式的实现方法相同。

        *

        * */

    }

 

}

 

”if(2==3)”语句。而equals()方法用于比较对象中的内容是否完全一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值