自己准备的一些JAVA面试题

2021/6/20 20:28:44

本文主要是介绍自己准备的一些JAVA面试题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

看点java面试题QWQ,持续更新,希望大家支出不足
自己整理出来自己做的一些题,比较基础,有兴趣可以看看原地址
下面是一些面试题的地址

Java面试题 + 答案汇总
原文地址:https://blog.csdn.net/sufu1065/article/details/88051083
https://blog.csdn.net/qq_26761587/article/details/105500824

Java 基础

1.JDK 和 JRE 有什么区别?JVM呢?
jdk包含安装环境与运行环境,jre只包含运行环境,也可以说,jdk包含jre
而jvm是指java虚拟机,jdk和jre中都包含jvm

2.== 和 equals 的区别是什么?(答错)
==对于基础类型是指对值作比较,对引用类型是指对引用地址做比较
而equals默认是指对引用作比较,只是很多方法如String,Integer等重写了这个方法,才使我们一般认为这是对值作比较
(补充:如下面new String使重新开辟了内存空间,所以x,y与z的地址不同)

String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true

3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
不对,hashCode()这个方法是指展示出字符串的哈希值,而哈希值相等并不能得出equals()是对字符串的引用做了比较

4.final 在 java 中有什么作用?
用来修饰一个最终类不可被继承,修饰一个方法不能被重写,修饰一个变量(即常量)不能被修改

5.java 中的 Math.round(-1.5) 等于多少?
round方法一般是四舍五入,等于五时候总是趋向正无穷方向

System.out.println(Math.round(1.5));//2
System.out.println(Math.round(-1.5));//-1

6.String 属于基础的数据类型吗?
基础数据类型:
六种数字类型:byte【2^8】 short【2^16】 int【2^32】 long【2^64】 (前四个为整数型)
float【2^32】 double【2^64】 (浮点数型或小数型)
布尔类型:boolean
字符类型:char
每个基础数据类型对应有自己的一个包装类,每个包装类有自己的操作方法与类型转换
String属于对象

7.java 中操作字符串都有哪些类?它们之间有什么区别?
String StringBuffer StringBuilder
String声明的是不可变的对象,每次改变这个对象都会指向新的String对象,StringBuffer与StringBuilder可以对字符串进行操作(在原有对象的基础上)
而StringBuffer与StringBuilder的区别为StringBuffer线程安全,性能高,而StringBuilder为非线程安全,性能低所以单线程环境下推荐使用StringBuild,多线程环境下推荐使用StringBuffer

8.String str="i"与 String str=new String(“i”)一样吗?
两个都会先检测在常量池(栈内存)中的存在,然后前者直接在栈内存中开辟一块内存给str,而后者是先在堆内存中new一个空间用于“i”的复制,然后在栈内存中开辟一块str的空间来存放堆内存中“i”的地址

9.如何将字符串反转?
StringBuilder和StringBuffer中的reverse()方法

10.String 类的常用方法都有那些?
indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的 byte 类型数组。
length():返回字符串长度。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
equals():字符串比较。

11.抽象类必须要有抽象方法吗?
抽象类不一定要有抽象方法

12.普通类和抽象类有哪些区别?
抽象类可以有抽象方法(也可以有普通的方法和成员变量),普通类不能,抽象类不能直接实例化,普通类可以

13.抽象类能使用 final 修饰吗?
不能,抽象类可以被继承,final类不能被继承

14.接口和抽象类有什么区别?
实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。
构造函数:抽象类可以有构造函数;接口不能有。
main 方法:抽象类可以有 main 方法,并且我们能运行它;接口不能有 main 方法。
实现数量:类可以实现很多个接口;但是只能继承一个抽象类。
访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。

15.java 中 IO 流分为几种?
I/O流,及输入输出流
有字节输入流字节输出流,字符输入流字符输出流
字节是8位,字符是16位
16.什么是面对对象?什么是面向过程?
面对对象是根据整个需求按照特点 功能划分,挑选出共性部分将所需要的属性行为封装给对象。面对对象是将每一步骤抽象化
面向过程是指根据需求的每一步骤一步一步实现,然后实现函数调用即可
17.面向对象的三个基本特性是什么?
1 封装 2 继承 3 多态
封装:隐藏具体的方法和属性,使用者不必了解,调用实现即可
继承:分级制度,子类继承父类
多态:统一方法的不同调用方式
(多态存在的三个条件:继承,重写,父类引用指向子类对象)
18.java语言为什么是跨平台的?
java语言之所以能够忽略平台和硬件的差别,是因为java虚拟机的存在,java编译之后的代码是字节码,不能直接硬件系统被识别,java虚拟机再将字节码转化为各个系统能够识别的代码
19.访问修饰符public、private、protected,以及不写(默认)时的区别?

20.重写和重载?
重写是指对子类对父类(父类允许访问)的方法内容进行重写,返回值和数据类型都不能改变,即外壳不变,核心改变
重载是指对方法的返回值和数据类型进行改变,核心不变,外壳改变
21.包装类型是什么?
每一种基本数据类型都有各自对应的包装类型:Byte Short Integer Long Float Double Boolean Character,
基本类型在栈中直接存储的具体数值,而包装类型则存储的是堆中的引用。
所以两个包装类型虽然值可以相等,但是他们在堆内存中new了自己的空间,地址是不会相等的。但也因此基本类型比包装类型性能高
装箱拆箱:把基本类型转换成包装类型的过程叫做装箱(boxing)。反之,把包装类型转换成基本类型的过程叫做拆箱(unboxing)。

Integer a = new Integer(10);  // 手动装箱
int b = a.intValue();  // 手动拆箱
//JAVASE5(jdk1.5)之后添加了自动装箱拆箱功能
Integer a  = 10;  // 自动装箱
int b = a;     // 自动拆箱

关于自动装箱与拆箱的一道面试题:

// 1)基本类型和包装类型
int a = 100;
Integer b = 100;
System.out.println(a == b);
//包装类型与基本类型比较时会自动转化为基本类型,所以true

// 2)两个包装类型
Integer c = 100;
Integer d = 100;
System.out.println(c == d);

// 3)
c = 200;
d = 200;
System.out.println(c == d);
//二和三的结果为true ,false,原因:-128 到 127 之间的数会从
 IntegerCache 中取,然后比较,所以第二段代码(100 在这个范围之内)
 的结果是 true,而第三段代码(200 不在这个范围之内,所以 new 出来
 了两个 Integer 对象)的结果是 false。


这篇关于自己准备的一些JAVA面试题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程