在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
为了帮助大家可以更好地做好面试前的准备,本文为大家整理了Java基础面试题和答案。这些问题都是比较经典的面试题,大家可以先不看答案做一做,查漏补缺。
1、Java 有哪些特点?
答案:并发性,你可以在其中执行许多语句,而不必一次执行它;面向对象,基于类和面向对象的编程语言;独立性,支持一次编写,到处运行的独立编程语言,即编译后的代码可以在支持Java的所有平台上运行。
2、值传递和引用传递的区别是什么?
答案:值传递 是指在调用函数时将实际参数复制一份到函数中,这样的话如果函数对其传递过来的形式参数进行修改,将不会影响到实际参数。引用传递 是指在调用函数时将对象的地址直接传递到函数中,如果在对形式参数进行修改,将影响到实际参数的值。
3、描述一下==和equals的区别。
答案:== 是Java中一种操作符,它有两种比较方式。一是对于基本数据类型来说,==判断的是两边的值是否相等。另一个是对于引用类型来说,==判断的是两边的引用是否相等,也就是判断两个对象是否指向了同一块内存区域。equals是Java中所有对象的父类,即 Object 类定义的一个方法。它只能比较对象,它表示的是引用双方的值是否相等。所以记住,并不是说==比较的就是引用是否相等,equals比较的就是值,这需要区分来说的。
4、String中的equals是如何重写的?
答案:String代表的是Java开发中的字符串,String类比较特殊,它整个类都是被final修饰的,也就是说,String不能被任何类继承,任何 修改String字符串的方法都是创建了一个新的字符串。equals方法是Object类定义的方法,Object是所有类的父类,当然也包括String,String重写了equals方法,下面我们来看看是怎么重写的:
首先会判断要比较的两个字符串它们的引用是否相等。如果引用相等的话,直接返回 true ,不相等的话继续下面的判断。然后再判断被比较的对象是否是 String 的实例,如果不是的话直接返回 false,如果是的话,再比较两个字符串的长度是否相等,如果长度不想等的话也就没有比较的必要了;长度如果相同,会比较字符串中的每个 字符 是否相等,一旦有一个字符不相等,就会直接返回 false。
5、为什么重写equals方法必须重写hashcode方法?
答案:如果在 Java 运行期间对同一个对象调用 hashCode 方法后,无论调用多少次,都应该返回相同的 hashCode,但是在不同的 Java 程序中,执行 hashCode 方法返回的值可能不一致。如果两个对象的 equals 相等,那么 hashCode 必须相同。如果两个对象 equals 不相等,那么 hashCode 也有可能相同,所以需要重写 hashCode 方法,因为你不知道 hashCode 的底层构造(反正我是不知道,有大牛可以传授传授),所以你需要重写 hashCode 方法,来为不同的对象生成不同的 hashCode 值,这样能够提高不同对象的访问速度。hashCode 通常是将地址转换为整数来实现的。
6、static关键字有什么用?
答案:static是Java中非常重要的关键字,static表示的概念是静态的,在Java中,static 主要用来修饰变量,static修饰的变量能够直接通过类名变量名来进行访问,不用通过实例化类再进行使用。static 可以修饰代码块,主要分为两种,一种直接定义在类中,使用 static{},这种被称为静态代码块,一种是在类中定义静态内部类,使用 static class xxx 来进行定义。
7、抽象类和接口的不同点是什么?
答案:抽象级别不同:类、抽象类、接口其实是三种不同的抽象级别,抽象程度依次是 接口 > 抽象类 > 类。在接口中,只允许进行方法的定义,不允许有方法的实现,抽象类中可以进行方法的定义和实现;而类中只允许进行方法的实现,我说的方法的定义是不允许在方法后面出现 {};使用的关键字不同:类使用 class 来表示;抽象类使用 abstract class 来表示;接口使用 interface 来表示;变量:接口中定义的变量只能是公共的静态常量,抽象类中的变量是普通变量。
以上就是Java基础面试题和答案的全部整理,大家都梳理了一遍了吗?如果还有什么问题,可以在反复研究一下该问题的参考答案。希望大家在面试前都能做足准备,拿到满意的offer!
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Java开发运算符&和&&的区别是什么?
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true
9841
2019-05-23 11:10:34
什么是 java 序列化?如何实现 java 序列化? Serializable 接口的作用?
将一个 java 对象变成字节流的形式传出去或者从一个字节流中恢复成一个 java 对象,例如,要将 java 对象存储到硬盘或者传送给网络上的其他计算机,这个过程我们可以自己写代码去把一个 java 对象变成某个格式的字节流再传输。
7573
2019-06-03 11:26:48
Kotlin与Java相比的优缺点有哪些?
Kotlin语言被谷歌公开作为Android官方开发语言之后,就有传言,kotlin会取代Java。然而即使到了现在还是有很多人并不了解kotlin是什么。所以今天小编给大家科普一下关于kotlin的一些问题。
14646
2019-08-09 18:03:46
Java基础学习:面向过程与面向对象
刚开始学编程的时候都会遇到一个思维转变的过程,从原来人类思维模式转变成机器可以接受的思维模式。这个过程是非常难的,这也是为什么互联网人才能够获得高薪的原因。对于Java学习,面向过程可能更接近人的正常思维,而面向对象思维就是一个巨大的挑战了。本文就和大家聊一聊关于面向过程和面向对象的优劣。
7202
2019-06-24 18:35:01
你所了解的数据库优化都有哪些?
数据库其实就是电子化的文件柜,用于储存数据,同时用户可以对数据进行增删改查等操作。在企业应用中,数据库非常重要,所以程序员在面试的时候,经常被提问关于数据库的问题。那当面试官问到你所了解的数据库优化都有哪些,你应该如何回答呢?
11997
2019-08-14 10:19:49