Java面试题

1、
float f= 3.4;是否正确?
答:
不正确
double f = 3.4; 正确
float f = 3.4f; 正确

2、
Math.round(11.5)是多少?Math.round(-11.5)是多少?
答:Math.round(11.5)是12 Math.round(-11.5)是-11

3、
switch是否能作用于byte上,是否能作用于long上,是否能作用于String上?
答:
switch可作用于char byte short int
switch可作用于char byte short int对应的包装类
switch不可作用于long double float boolean,包括他们的包装类
switch中可以作用于字符串类型,String(JDK1.7之后才可以作用在string上)
switch中可以作用于枚举类型(JDK1.5之后)

4、
String是最基本的数据类型吗?
答:
不属于。
Java8种基础的数据类型:byte、short、char、int、long、float、double、boolean。

5、
short s = 1;
s = s + 1;是否正确
s+=1 是否正确

答:
s = s + 1;不正确cannot convert from int to short
s+=1; 正确


6、
java中有没有goto?

答:
java保留字,C语言中使用。
goto是c语言中的与条件配合使用,用于跳出循环等操作。
java是结构化程序语言,在java中使用goto会造成许多不必要的麻烦,goto还没被使用。

7、
final关键字的理解
答:final关键字主要用在三个地方:变量、方法、类。
1.对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
2.当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。
3.使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的Java版本已经不需要使用final方法进行这些优化了)。类中所有的private方法都隐式地指定为final。

8、
notify和notifyall有什么区别?
答:
notifyAll: 会让所有处于等待池的线程全部进入锁池去竞争获取锁的机会。notifyAll() 调用后,会将全部线程由等待池移到锁池,然后参与锁的竞争,竞争成功则继续执行,如果不成功则留在锁池等待锁被释放后再次参与竞争。
notify: 只会随机选取一个处于等待池中的线程进入锁池去竞争获取锁的机会。具体唤醒哪一个线程由虚拟机控制。

posted @ 2020-08-15 13:13  Akmf's_blog  阅读(66)  评论(0)    收藏  举报