Java基础面试每日3题:day08

Posted 闲言_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础面试每日3题:day08相关的知识,希望对你有一定的参考价值。

1.是否可以从一个static方法内部发出对非static方法的调用?

   不可以
  因为非static方法要与对象关联在一起的,必须创建一个对象后,才可以在该对象进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那么非static方法是关联到哪个对象上呢?这个逻辑无法成立。
  static 方法属于类,随着类的加载而存在
  非static 方法 属于对象,随着 对象的创建而存在

2.“==”和“equals”方法有什么区别

  == 等于比较运算符,如果进行比较的两个操作数都是数值类型,即使他们的数据类型不相同,只要他们的值相等,也都将返回true.如果两个操作数都是引用类型,那么只有当两个引用变量的类型具有父子关系时才可以比较,而且这两个引用必须指向同一个对象,才会返回true.(在这里我们可以理解成==比较的是两个变量的内存地址)

  equals()方法是Object类的方法,在Object类中的equals()方法体内实际上返回的就是使用==进行比较的结果.但是我们知道所有的类都继承Object,而且Object中的equals()方法没有使用final关键字修饰,那么当我们使用equal()方法进行比较的时候,我们需要关注的就是这个类有没有重写Object中的equals()方法.

  == 是java提供的等于比较运算符,用来比较两个变量指向的内存地址是否相同.而equals()是Object提供的一个方法.Object中equals()方法的默认实现就是返回两个对象==的比较结果.但是equals()可以被重写,所以我们在具体使用的时候需要关注equals()方法有没有被重写.

3.使用final关键字修饰一个变量时,是引用变量所指向的对象中的内容不能变,还是引用指向的地址不能变?

  使用final关键字修饰一个变量时,是 引用指向的地址不能变,引用变量所指向的对象中的 内容还是 可以改变的。

以上是关于Java基础面试每日3题:day08的主要内容,如果未能解决你的问题,请参考以下文章

Java基础面试每日3题:day08

Java基础面试每日3题:day07

Java基础面试每日3题:day09

Java基础面试每日3题:day03

Java基础面试每日3题:day10

Java基础面试每日3题:day05