面试官常问的面试题

1.JDK和JRE区别?

JRE:即Java程序的运行时环境,包含了Java虚拟机,Java基础类库。

JDK:即Java语言编写的程序所需要的开发工具包。JDK包含了JRE,同时还包括Java源码的编译器javac、监控工具jconsole、分析工具jvisualvm等

2.==和equals的区别?

==是关系运算符,equals()是方法,结果都返回布尔值

object的==和equeal()比较的都是地址,作用相同

==作用:

基本类型,比较值是否相等

引用类型,比较内存地址值是否相等

不能比较没有父子关系的两个对象

equals()方法的作用:

JDK中的类一般已经重写了equals(),比较的是内容

自定义类如果没有重写equals(),将调用父类(默认Object类)的equals()方法,Object的equeals()比较使用this==obj

可以按照需求逻辑,重写对象的equals()方法(重写equals方法,一般必须重写hashCode方法)

3.什么是装箱?什么是拆箱?

装箱:基本类型转变为包装器类型的过程。

拆箱:包装器类型转变为基本类型的过程。

JDK1.5以前是不支持自动装箱拆箱的,定义Integer对象,必须Integer i = new Integer(5)

JDK1.5开始,提供了自动装箱的功能,定义Integer对象可以这样Integer i = 5;

自动拆箱int n = i

装箱和拆箱的执行过程?

装箱是通过调用包装器类的valueOf方法实现的

拆箱是通过调用包装器类的xxxValue方法实现的,xxx代表对应的基本数据类型

如int装箱的时候自动调用Integer的valueOf(int)方法;Integer拆箱的时候自动调用Integer的intValue方法

4.final在Java中的作用

final语义是不可改变的。

被final修饰的类,不能够被继承

被final修饰的成员变量必须要初始化,赋初值后不能再重新赋值(可以调用对象方法修改属性值)对基本类型来说是其值不可边;对引用变量来说其引用不可变,即不能再指向其他的对象

被final修饰的方法不能重写

5.final与static

都可以修饰类、方法、成员变量

都不能用于修饰构造方法

static可以修饰类的代码块,final不可以

static

static修饰表示静态或全局,被修饰的属性和方法属于类,可以用类名.静态属性/方法名 访问

static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行改代码块,只会被执行一次

static修饰的属性,也就是类变量,是在类加载时被创建并进行初始化,只会被创建一次

static修饰的变量可以重新赋值

static方法中不能用this和super关键字

static方法必须被实现,而不能是抽象的abstract

static方法不能被重写

final

final修饰表示常量、一旦创建不可改变

final标记的成员变量必须在声明的同时赋值,或在该类的构造方法中赋值,不可以重新赋值

final方法不能被子类重写

final类不能被继承,没有子类,final类中的方法默认是final的

6.return与finally的执行顺序对返回值的影响

对于try和finally至少一个语句块包含return语句的情况:

finally语句块会执行

finally没有return,finally对return变量的重新赋值修改无效

try和finally都包含return,return值会以finally语句块return值为准

7.Math.round(-1.5)等于多少?

JDK中java.lang.Math类

ceil():向上取整,返回小数所在两整数间的较大值,返回类型是double,如-1.5返回-1.0

floor():向下取整,返回小数所在两整数间的较小值,返回类型是double,如-1.5返回-2.0

round():朝正无穷大方向返回参数最接近的整数,可以换算为参数+0.5向下取整,返回值是int或long,如-1.5返回-1

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

不属于。

Java中8种基础的数据类型:byte、short、char、int、long、float、double、boolean但是String类型却是最常用到的引用类型

String类的常用方法:

equals:字符串是否相同

equalslgnoreCase:忽略大小写后字符串是否相同

compareTo:根据字符串中每个字符的Unicode编码进行比较

compareTolgnoreCase:根据字符串中每个字符的Unicode编码进行忽略大小写比较

indexOf:目标字符或字符串在源字符中位置下标

lastIndexOf:目标字符或字符串在源字符串中最后一次出现的位置下标

valueOf:其他类型转字符串

9.Java中操作字符串都有哪些类?

Java中,常用的对字符串操作的类有String、StringBuffer、StringBuilder

String:final修饰,String类的方法都是返回new String。即对String对象的任何改变都不影响到原对象,对字符串的修改操作都会生成新的对象

StringBuffer:对字符串的操作的方法都加了synchronized,保证线程安全

StringBuilder:不保证线程安全,在方法体内需要进行字符串的修改操作,可以new StringBuilder对象,调用StringBuilder对象的append()、replace()、delete()等方法修改字符串

10.throw和throws的区别

throw:

表示方法内抛出某种异常对象(只能是一个)

位于方法体内部,可以作为单独语句使用

如果异常对象是非RuntimeException则需要在方法申明时加上该异常的抛出,即需要加上throws语句或者在方法体内try catch处理该异常,否则编译报错

执行到throw语句则后面的语句块不在执行

throws:

方法的定义上使用throws表示这个方法可能抛出某些异常(可以有多个)

用于声明在该方法内抛出了异常

必须在方法参数列表的后面,不能单独使用

需要由方法的调用者进行异常处理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值