5.28课堂笔记之等值比较&equals()比较

本文探讨了Java中对象和基本类型之间的等值比较,包括运算符、算术异常、取余操作以及equals方法的使用。强调了Integer对象在不同情况下的比较,以及String类型的等值比较和equals方法在登录注册场景的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象的生存周期可以大于变量的生存周期

*有可能造成溢出 byte

长度不一样的类型相互赋值时,短的可以给长的,长的不能给短的

运算符:单目、双目、三目


ArithmeticException 运行时出错 (运行异常,算术异常) eg:17/0、0/0

实型:运行无异常

17.0/0 = infinity(正无穷大)

-17.0/0 = -infinity(负无穷大)

0/0.0=NaN


取余

整数取余:17/4=4

17%4=1

17%18=17 (被除数小于除数,则为被除数)

0%17=0


ArithmeticException 运行时出错 (运行异常) 17%0=

17.6 mod 4=1.6000000000014 小数不变,整数取余

17.6 mod 0=NaN

-17.6 mod 0=NaN

0.0 mod 0=NaN


关系运算

5==3 false

n1=130;n2=130;

等值比较(适用于基本类型、引用类型)

Integer n1=new Integer(47);

Integer n2=new Integer(47);

n1==n2;false 地址是否一样,两个变量的内容比较

n1==n2; true 这两个变量指的是同一个对象


equals比较 (只限于引用类型。 基本类型不能用)

n1.equals(n2);n2.equals(n1); true

n1=null,则运行异常 NullPointerException(空指针异常) 空串儿也是对象

integer复写了equals,对象比较, 类型、每个属性是否相同


a1与a2只能等值比较 a1、a2在栈里开辟空间

a1=130;a2=130;

a1==a2;

a1.equals(a2); 基本类型不能用,没有重写equals方法, 对象才可以用


装箱:n1=130 n1:Integer类型, 130false

Integer n1=new Integer(130);

Integer n2=new Integer(130);

n1==n2 120 true 方法的常量区存放(-128 ~ 127的Integer类型)

equals比较也为true 基本类型的300转换为Integer类型赋值给引用类型

Integer类型赋给引用类型的变量 超过了在堆里创建对象,未超过则在方法区的常量池创建对象,效率提高,只创建了一个对象


String类型的等值比较和equals比较

用于项目的注册、登录

String str1;
str1=new String(“Hello”);
String s2=new String(“Hello”);
str1==str2   false
str1.hashCode()
str2.hashCode()//此时调用hashCode一样
                //哈希地址比较,为true

Question:

如果两个对象的hashCode相同,能否说明这两个对象是同一个对象 no
反之,两个对象的地址一样,可以证明哈希地址相同。

字符串的哈希地址不是它的真正地址

减少存储碰撞,提高检索与查找的速率

str1.equals(str2)  // true

表单里拿到一个数据,字符串类型,String
表单里什么都没写,参数值为空串儿,不为null


Equals比较

登录时,表单的equals来比较数据库的equals,都为String类型, 不产生空指针

超级管理员,硬编码,equals比较 常量.equals()

eg: “Hello”.equals(str2);

复选框 checkbox 一个都不选则为null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值