Java基础面试题11~20

26 篇文章 0 订阅

11.a.hashCode() 有什么用?与 a.equals(b) 有什么关系?

hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。

equals与hashCode的关系?

equals()相等的两个对象,hashCode()一定相等;

hashCode()不相等,一定能推出equals()也不相等;

hashCode()相等,equals()可能相等,也可能不等。

12.final、finalize 和 finally 的不同之处?

在java中,final可以用来修饰类,方法和变量(成员变量或局部变量)。

当用final修饰类的时,表明该类不能被其他类所继承。
当用final修饰方法时,表明该方法不能够被重写,但是能够使用。

修饰局部变量时,一旦赋值就不能二次改变
修饰基本数据类型时,表示该基本类型的值一旦在初始化后便不能发生变化。

 final int num2 = 20;
    //num2 = 200; //不能二次赋值

修饰引用类型时,则在其初始化后就不能再指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。说人话就是,引用的值是一个地址,即地址值不能发生变化。

   final int[] arr2 = new int[3];
   System.out.println("arr2 = " + arr2);//[I@74a14482
    //arr2 = new int[10];//不能改变地址

   arr2[0] = 100;//arr2地址没有发生变化

修饰成员变量时, 一旦赋值,不能更改(一定要赋值)

final修饰静态变量,就变成一个静态常量

finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常被用在需要释放资源的情况下。

finalize:
Object类的一个方法,在垃圾回收器执行的时候会被调用。可以重写此方法,提供垃圾收集时的其他资源回收,例如关闭文件等。该方法更像是一个对象生命周期的临终方法,当该方法被系统调用时则代表该对象即将“死亡”,但需要注意的是,我们主动行为上去调用该方法不会导致对象“死亡”,这是一个被动的方法,不需要我们调用。

13.什么是Java
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

14.JVM、JRE和JDK的关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ucvzTqVW-1644389732939)(C:\Users\Administrator\Desktop\photograph\面试图片\JDKJREJVM.png)]

15.什么是跨平台性?原理是什么

所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。

实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。

16.Java语言有哪些特点
简单易学(Java语言的语法与C语言和C++语言很接近)

面向对象(封装,继承,多态)

平台无关性(Java虚拟机实现平台无关性)

支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)

支持多线程(多线程机制使应用程序在同一时间并行执行多项任)

健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等)

安全性

  1. Java和C++的区别

都是面向对象的语言,都支持封装、继承和多态
Java不提供指针来直接访问内存,程序内存更加安全
Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是接口可以多继承。
Java有自动内存管理机制,不需要程序员手动释放无用内存

18.用最有效率的方法计算 2 乘以 8

2 << 3(左移 3 位相当于乘以 2 的 3 次方,右移 3 位相当于除以 2 的 3 次方)。

Math.round(11.5) 等于多少?Math.round(-11.5)等于多少

Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5 然后进行下取整。

19.this关键字的用法

this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。

this的用法在java中大体可以分为3种:

1.普通的直接引用,this相当于是指向当前对象本身。

2.形参与成员名字重名,用this来区分

20.super关键字的用法

super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

super也有三种用法:

1.普通的直接引用

与this类似,super相当于是指向当前对象的父类的引用,这样就可以用super.xxx来引用父类的成员。

2.子类中的成员变量或方法与父类中的成员变量或方法同名时,用super进行区分

引用父类构造函数

3、引用父类构造函数

  • super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。
  • this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值