“==”运算符与equals()方法的区别

    技术2024-08-17  70

    发表一点学习java的心得,希望各位批评指导!

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

    “==”用于比较基本数据类型的是否相等。如”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,因为s1s2分别指向堆内存中两个不同的对象,他们在栈中的值是不同的,所以不相等,

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

            */

     

           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 方法的默认实现,与"=="表达式的实现方法相同。

            *

            * */

        }

     

    }

    最新回复(0)