Java八股文面试题 Day01

1.JDK,JRE,JVM分别是什么,有什么区别?

JDK是JAVA开发工具包,JRE是JAVA运行环境,JVM是JAVA虚拟机

JDK包含了JRE,JRE又包含了JVM,如果你只是运行class文件,则只需要使用JVM即可

2.==和equals的区别是什么

1.==用于基本类型,比较两个对象的值。

2.==用于引用类型,比较两个对象的地址。

3.equals不能用于比较基本类型。

4.equals如果没有重写,比较两个对象的地址。

   equals如果重写,比较两个对象的内容。

3.Final在Java中的作用

1.用来修饰引用

(1).如果引用为基本类型,则该引用为常量,该值无法被修改。

(2).如果引用为数据类型,比如对象、数组,则该对象本身的值可以被修改,但是引用该对象地址的引用无法被修改。

(3).如果引用时类的成员变量,则必须当场赋值,否则编译会报错。

2.用来修饰方法

当用final修饰一个方法时,该方法为最终方法,无法被子类重写,但是不影响被继承。

3.用来修饰类

当final修饰一个类时,该类为最终类,无法被继承,例如最常见的String类。

4.Java中的Math.round(-1.5)等于多少

Math中提供了三种与取整有关的方法:

1.ceil向上取整   

Math.ceil(11.3)=12

Math.ceil(-11.3)=-11

2.floor向下取整

Math.floor(11.3)=11

Math.floor(-11.3)=-12

3.Math.round四舍五入取整

Math.round(11.5)=12

Math.round(-11.2)=-11

5.String属于基础的数据类型吗?

不属于。八种基本数据类型:byte、short、long、double、float、int、boolean、char

6.String str="i"与String str=new String("i")一样吗?

1.String str="i"会将其分配到常量池中,常量池中没有重复的元素,如果常量池中有“i”,就将i的地址赋值给变量,如果没有就创建一个再赋值变量。

2.String str=new String("i")会将对象分配到堆中,即使内存一样,还会重新创建一个新的对象

7.如何将字符反转

将对象封装到StringBuilder中,调用reverse方法反转,用toString来输出。

8.String常用的方法有哪些

equals,length,contains,replace,split,hashcode,indexof,substring,trim,toUpperCase,toLowerCase,isEmpty

9.普通类和抽象类的区别

抽象类不能被实例化

抽象类可以有抽象方法,只需声明,无需实现

有抽象方法的类一定是抽象类

抽象方法的子类必须实现所有的抽象方法,否则它仍然是一个抽象类

抽象方法不能声明为静态,也不能被final和static修饰

10.Java中io流该分为几种

1.按流划分:可以划分为输入流和输出流

2.按单位划分:可以划分为字节流和字符流

字节流:inputStream、outputStream

字符流:reader、writer

 

11.接口和抽象类有什么区别?

1.接口

接口使用interface修饰

一个类可以实现多个接口

接口不能实例化

2.抽象类

抽象类使用abstract修饰

抽象类只能单一继承

抽象类不能被实例化

抽象类包含了抽象方法和非抽象方法,非抽象方法需要有方法体

12.BIO、NIO、AIO有什么区别

BIO:同步阻塞

一个连接一个线程

NIO:同步非阻塞

一个请求一个线程

AIO:异步非阻塞

一个有效请求一个线程

13.Files的常用方法都有哪些

exist,create file,create Directory,write,read,copy,size,delete,move

14.什么是反射

反射是通过类对象在程序运行过程中调用类的属性和方法。

15.什么是Java序列化?什么情况需要序列化?

序列化是一种处理对象流的机制,将对象内容流化,将流化后的对象传输与网络之间

序列化是将对象转换为容易传输的格式的过程

序列化的主要目的是传递和保存对象,保存对象的完整性和传递性

16.为什么要使用克隆?深拷贝和浅拷贝的区别是什么?

(1).想对一个对象进行复制,又想保留原有的对象进行接下来的操作,就需要克隆。

(2).浅拷贝:仅仅克隆基本类型变量,不克隆引用类型变量。

深拷贝:既克隆基本类型变量,又克隆引用类型变量

17.throw和throws的区别

(1).throw:作用在方法内,表示抛出具体的异常,由方法体内语句处理,一定抛出了异常

(2).throws:作用在方法声明上,表示抛出了异常,由调用者处理异常,可能出现异常,不一定发生异常

18.final、finally、finalize 有什么区别?

final可以修饰类、方法、变量,修饰的类不能被继承,修饰的方法不能被重写,修饰的变量不能被重新赋值。

finally用于抛出异常,在finally代码语句块内,不论是否发生异常,都必须执行finally

finalize方法用于垃圾回收

19.hashcode是什么?有什么作用?

散列码,hashcode在最短的时间内判断两个对象是否相等,并且定位索引位置,不过可能会出现误差。equals()用来判断两个对象是否绝对相等,hashcode()用来保证性能,equals用来保证可靠。

20.order by和group by的区别

order by是排序,asc是升序,desc是降序,默认为升序。如果order by后跟多个字段时,排序按就近原则

group by是聚合分组,值相等的为一组,例如sum(),avg(),max(),count()

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值