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

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

*有可能造成溢出 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

猜你喜欢

转载自blog.csdn.net/qq_36154665/article/details/80499867