equals()方法与“==”的使用以及注意事项;final关键字用

equals()方法

概念

equals()方法是对象比较函数,按照对象比较,系统默认四个类覆写该方法:Integer , String,Date,file
没有覆写equals()方法的类会调用Object的equals()方法,Object类的equals()方法直接用==实现 比较过程:
1.首先判断两个比较对象类型是否相同
如果不同返回false
2.如果相同继续判断对象内容是否相同
如果相同返回true 如果不同返回false

使用方法以及注意事项
e.g.:

String s1=new String("aaa"); 
String s2=new String("aaa"); 
s1.equals(s2);

s1与s2的类型相同并但内容不一样,此时equals方法返回值为false。

String s1=new String("aaa"); 
String s2=new String("bbb"); 
s1.equals(s2);

s1与s2的类型相同并但内容不一样,此时equals方法返回值为false。

String s1=null; 
String s2=new String("bbb"); 
s1.equals(s2);

此时会抛出NullPointerException异常,在做equals比较的时候一定要确保调用equals方法的对象不为空。

String currentName;
"123".equals(currentName);
currentName.equals("123") ;

equals前面的数据必须是String类型的,而括号里面的测试Object类型的。
所以上面的第二种比较方法很危险,不注意就会出现错误。

"= ="判等比较

概念

“= =”是等值比较,比较的是变量的内容
1.当比较对象为基本数据类型时,比较的是数据的大小
2.当比较对象为引用类型时,比较的是引用类型中存放的地址 使用方法以及注意事项

e.g.:

 int n1=10;
 int n2=10;
 n1==n2;

因为n1,n2是基本数据类型,并且数据值相等所以此时返回true。

String s1="aaa"; 
String s2="aaa"; 
n1==n2;

由于字符串”aaa”创建时是在方法区的常量池中开辟的空间,并且下次使用时可以重复使用,s1,s2指向的地址是相同的,所以判等的结果是true

Integer n1=new Integer(45); 
Integer n2=new Integer(45);
n1==n2;

n1与n2分别在堆区开辟了空间,两个变量所指向的地址不同,即使指向地址中的内容相同,判等的结果也是为false。
注意:

Integer n1=128; 
Integer n2=128;
 n1==n2; 

Integer n3=127; 
Integer n4=127; 
n3==n4;

Integer包装类型中存在自动装箱的情况,当数据范围在-128~127之间时,创建的对象会在方法区的常量池中开辟空间(可复用),数据超出范围就会在堆区中开辟空间,由于指向不同对象所以n1==n2判等的结果为false,n3与n4指向常量池同一地址所以判等结果为true。

final关键字用法

1.修饰类当用final去修饰一个类的时候,表示这个类不能被继承。

注意:a. 被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为fianl。b. final类中的成员方法都会被隐式的指定为final方法。说明:在自己设计一个类的时候,要想好这个类将来是否会被继承,如果可以被继承,则该类不能使用fianl修饰,在这里呢,一般来说工具类我们往往都会设计成为一个fianl类。在JDK中,被设计为final类的有String、System等。

2.修饰方法被final修饰的方法不能被重写。

注意:
a. 一个类的private方法会隐式的被指定为final方法。
b. 如果父类中有final修饰的方法,那么子类不能去重写。

3.修饰成员变量

注意:
a.必须要赋初始值,而且是只能初始化一次。

4.修饰成员变量

注意:
a. 必须初始化值。
b. 被fianl修饰的成员变量赋值,有两种方式:1、直接赋值 2、全部在构造方法中赋初值。
c. 如果修饰的成员变量是基本类型,则表示这个变量的值不能改变。
d. 如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,但是这个引用所指向的对象里面的内容还是可以改变的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值