java Object static final总结

1、Object中的equals方法是对两个对象的地址值进行的比较(即比较引用是否相同),String类重写了equals方法,能够判断两个字符串包含的内容是否相同。

public boolean equals(Object obj){
    return (this == obj);
}

2、hashCode方法给对象返回一个hashcode值。这个方法被用于hashtables,例如常用的hashMap

它的性质是:在一个Java应用的执行期间,如果一个对象提供给equals做比较的信息没有被修改的话,该对象多次调用hashCode()方法,该方法必须始终如一返回同一个值。

如果两个对象根据equals方法是相等的,那么调用二者各自的hashCode方法必须产生同一个integer值。

并不要求根据equals方法不相等的两个对象,调用二者各自的hashCode方法必须产生不同的integer结果值。这样有助于提高Hashtable的性能。

在JDK中,Object的hashCode方法是本地方法,也就是用c语言或c++实现的,该方法直接返回对象的内存地址。在String类,重写了hashCode方法

public int hashCode(){

       int h = hash;//hash默认为0
        
       if(h==0&&value.length>0){
        char val[] = value;
        for(int i=0;i<value.length;i++){
            h = 31*h+val[i];
        
        }
        hash = h;
    }
    return h;
}

3、static关键字

static 关键子修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。

被static关键字修饰的变量等,是随着类的加载而加载,并且只加载一次。

静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。

能通过this访问静态成员变量。

static是不允许用来修饰局部变量

4、final关键字

可以声明成员变量方法类以及本地变量,String就是final类

final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误

final 变量是只读的,不能更改

final申明的方法不可以被子类的方法重写

final类通常功能是完整的,不能被继承

final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销

final 关键字提高了性能,JVM和Java应用都会缓存final变量,会对方法,变量及类进行优化

方法的内部类访问方法中的局部变量,但必须用final修饰才能访问

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值