zoukankan      html  css  js  c++  java
  • static,final关键字,Object类的tostring方法,equals方法,hashCode方法

    1)static关键字

    static可以修饰:属性、方法、代码块

    静态方法不能访问非静态 属性 或 方法

    属性(变量):
    成员变量:
    静态变量: 通过 类名.静态变量来访问
    通过 对象名.静态变量来访问(是有警告的)
    存在于方法区中,有且仅有一份
    非静态变量
    局部变量
    代码块
    代码块的执行顺序

    1、静态代码块:哪个静态代码块放在前边,就先执行谁
    2、普通代码块:哪个普通代码块放在前边,就先执行谁
    3、构造方法

    如果有两个类,一个类是Father,另一个类是Child , Child 继承了 Father ,
    这两个类中都有 构造方法,普通代码块、静态代码块
    那么当 new Child() 的时候,执行顺序是什么?

    代码块执行顺序:父类static(同级别与出现顺序有关)--->子类static--->父类普通-->父类构造--->子类普通-->子类构造
    代码块的作用:

    可以对 属性 进行一个初始化的操作

    我们在一个类中可以写什么呢?

    目前为止:
    1、属性:静态属性 和 实例属性
    2、方法:静态方法 和 实例方法
    3、构造方法: 与类名相同的 ,没有返回的 公开的 方法
    4、代码块:静态代码块 和 非静态代码块(普通代码块)
    静态代码块 可以为 静态属性 进行 初始化操作
    普通代码块 可以为 实例属性 进行初始化操作

    2)

    final
    表示最终的,不可修改的,经常用于修饰类、方法、变量

    final 修饰的类,不可以被继承
    final 修饰的方法,不能被重写
    final 修饰的变量 ,不能被更改
    建议:用final 修饰的变量 全部大写

    3)

    toString() :
    本来在Object中的形式:
    getClass().getName() + "@" + Integer.toHexString(hashCode());
    得到对应的类,从而得到对应的类型,然后 通过计算 hashCode 的 十六进制 数 拼接而成的字符串

    重写之后的形式:
    String s = "[" + this.studentName + "," +this.sutdentNumber + " , " + this.gender + " , " + this.age + "]" ;
    理论上说,可以写任何形式的toString形式,但是,建议使用 属性来写toString


    作用:
    为了查看到 对象中的 具体的属性 的 值

    4)
    equals() :
    在Object 类中 equals 是这么写的:
    public boolean equals(Object obj) {
    return (this == obj); // 底层还是用 == 比较,比较的还是地址
    }

    我们判断两个对象是否"相等"
    可能在某种情况下( 在某种条件下 ) 我们认为是相等的
    针对于学生来说:
    学号、姓名、年龄、性别都相等,那么我就认为他们是相等的

    官方建议: 重写 hashCode()
    如果说 不重写 hashCode() , 会默认调用 Object 的hashCode()方法,但是 不一定能保证 维护 hashCode 方法的常规协定
    5)
    hashCode() :
    hashCode 是 一种 特殊的 数组 通过 一系列的公式来算 hashCode

    元素 11 22 33 44 55
    下标 0 1 2 3 4
    (下标+ 1 ) × 11

    如果重写了 equals 必须重写 hashCode 方法
    保证 维护 hashCode 方法的常规协定(三条)








  • 相关阅读:
    重磅!阿里发布《Java开发手册(泰山版)》
    IntelliJ IDEA 快捷键终极大全,速度收藏!
    Java多态的实现机制是什么,写得非常好!
    Intellij IDEA 非常 6 的 10 个姿势!
    深入浅出Java中的clone克隆方法,写得太棒了!
    Java集合类,一张图说清楚!
    在 IntelliJ IDEA 中使用 Git,太方便了!.md
    Http(get,post)及HttpClient(get,post)的简单使用
    java servlet+jquery+json学习小例子
    JAVA中使用JSON进行数据传递
  • 原文地址:https://www.cnblogs.com/nje19951205/p/6523462.html
Copyright © 2011-2022 走看看