JavaSE :自问自答

目录

    1. "==" 和 ".equals"之间的区别。

    2.为什么重写".equals"方法一定要重写hashcode方法?

    3.什么时候"finalize"方法会被调用?

    4.什么是动态绑定机制?

    5.类变量(静态变量)储存在哪里? 类变量的特点是什么?

    6.为什么我们需要类方法(静态方法)?

    7.为什么Main方法是公开public且静态static的?

    8.什么时候我们会选择使用代码块 ? 为什么 ?

    9.静态代码块和代码块的区别是什么? 加载类时的顺序是什么?


    1. "==" 和 ".equals"之间的区别。

        "=="可以用于基础类型和引用类型的比较,".equals"只能用于引用类型。

        "=="用于基本类型:判断两个基本类型的值是否相等。(“==”两边只要出现了基本数据类型比较的就是值是否相等。例如基本类型和包装类的比较)

        "=="用于引用类型:判断两个引用类型的引用对象的地址是否相同。

        ".equals"在object类中就是调用了"=="的判断。(源码如下)

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

        但在其他Object子类中".equals"方法通常被重写成为判断两者所指向的内存空间的值是不是相同。

    2.为什么重写".equals"方法一定要重写hashcode方法?

        在我们创建一个类时,也可以通过重写".equals"方法来实现自己想要的判断方式,同时也要重写hashcode方法(hashCode方法是本地方法,用于计算出对象的一个散列值,用于判断在集合中对象是否重复的关键。),否则会出现".equals"方法为True,hashcode却不等的情况,导致集合无法正确判断对象是否重复。

    3.什么时候"finalize"方法会被调用?

        当该对象被jvm垃圾回收机制回收时调用。

    4.什么是动态绑定机制?

        当调用对象的时候,该方法会和该对象的内存地址/运行类型绑定。
        当调用对象的属性时,没有动态绑定机制,哪里声明就使用哪里。

    5.类变量(静态变量)储存在哪里? 类变量的特点是什么?

        特点:在类加载的时候就被加载,无需创建实例即可调用

        存储位置:在jdk7以下的版本储存在静态域中,

                          从jdk7开始储存在堆中java.lang.Class 对象的末尾。

    6.为什么我们需要类方法(静态方法)?

        类方法无需创建实例即可调用,可用作开发工具。例如Math.pow()方法。

    7.为什么Main方法是公开public且静态static的?

        因为Main方法要能被JVM虚拟机调用,必须得是公开的,且静态的JVM调用这个方法就不需要创建任何包含Main方法的实例。

    8.什么时候我们会选择使用代码块 ? 为什么 ?

        使用代码块有利于提高代码的复用性和扩展性:当类的不同构造器中的重复代码过多时,我们就可以选择把重复的部分写入代码块。 

    9.静态代码块和代码块的区别是什么? 加载类时的顺序是什么?

        静态代码块只能调用静态方法和静态变量,且在虚拟机加载类的时候就会加载执行,只执行一次;非静态代码块,在创建对象的时候执行,每次创建对象都会执行一次。

        顺序:(1)父类静态代码块,父类静态成员变量初始化(这两个谁先声明谁在前面)->

                   (2)子类静态代码块,子类静态成员变量初始化(这两个谁先声明谁在前面)->

                   (3)父类代码块,父类成员变量初始化(这两个谁先声明谁在前面)->

                   (4)父类构造函数->

                   (5)子类代码块,子类成员变量初始化(这两个谁先声明谁在前面)->

                   (6)子类构造函数.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YHanJG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值