版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dear_Alice_moon/article/details/83344932
Java中, Long类型是long的包装类。 在进行 Long类型的对象比较中,需要弄清楚Long类型的对象是比较具体的值是否相等,还是需要比较对象是否相同。
若要对本文的Demo有一个更好的理解,可以先观看博客: 【java】Long.valueOf()和longValue()区别
以下是2个小Demo的例子:
Demo1, User.java类
package com.test.fastJson.entity;
public class User {
public String name;
public int age;
public String sex;
public Long phoneNumber; // 电话号码, 暂且使用该数据类型.
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", sex=" + sex + ", phoneNumber=" + phoneNumber + "]";
}
public User(int age, String sex) {
super();
this.age = age;
this.sex = sex;
}
public User(String name, int age, String sex, Long phoneNumber) {
super();
this.name = name;
this.age = age;
this.sex = sex;
this.phoneNumber = phoneNumber;
}
public User() {
super();
}
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Long getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(Long phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
Demo1, Test7.java类
package com.test.fastJson;
import com.alibaba.fastjson.JSON;
import com.test.fastJson.entity.User;
public class Test7 {
public static void main(String[] args) {
User user = new User("张三", 23, "男", 12345678L);
System.out.println("user为:" + user);
System.out.println("----------------------------------------");
System.out.println("'user.getPhoneNumber()' 与 '12345678L' 是否相等: " + (user.getPhoneNumber() == 12345678L));
System.out.println("----------------------------------------");
System.out.println("'user.getPhoneNumber().longValue()' 与 '12345678L' 是否相等: " + (user.getPhoneNumber().longValue() == 12345678L));
System.out.println("----------------------------------------");
Long test = 12345678L;
System.out.println("'user.getPhoneNumber()' 与 'test' 是否相等:" + (test == user.getPhoneNumber()));
System.out.println("----------------------------------------");
System.out.println("'user.getPhoneNumber().longValue()' 与 'test' 是否相等:" + ( test == user.getPhoneNumber().longValue() ) );
System.out.println("----------------------------------------");
}
}
运行结果如下图一所示:
图一
Demo2, Test8.java类
package com.test.fastJson;
public class Test8 {
public static void main(String[] args) {
long num1 = 1234567;
long num2 = 1234567;
System.out.println(" 'num1' 与 'num2' 是否相等:" + (num1==num2));
}
}
运行结果如下图二所示:
图二
对于文中Demo1中的例子,下列的情况,我也不是很明白其中的原理是什么!如果有哪位小伙伴懂,可以指定一二,谢谢。对Java理论知识、基础知识非常缺乏的我,有时在编程时真的感到好“难受”, 有小伙伴可以指点我一二么? 谢谢
(user.getPhoneNumber() == 12345678L) 为:true,
(user.getPhoneNumber().longValue() == 12345678L) 为 true,
(test == user.getPhoneNumber()) 为:false,
(test == user.getPhoneNumber().longValue()) 为:true