java面试基础(一)

1.基本数据类型、封装类和运算操作
(1)简述 & 和 && ,以及 | 和 || 的区别。
———&和|是位运算符,不怎么用,而&&和||是逻辑运算符(存在短路现象,所以也叫短路与、短路或),一般用在if、while、for等条件判断里。

(2)运行 short s1 = 1; s1 = s1 + 1; 会出现什么结果?
错! s1 + 1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的short类型的s1看齐,即需要通过强制类型转换。正确写法:s1 = (short) (s1 + 1);
运行 short s1 = 1; s1 += 1; 又会出现什么结果?
正确! 执行s1+=1;其实执行的是s1 = (short) (s1 + 1); 其中会有一个强制转换的过程。

注:Java的基本数据类型转换规则,大的数据类型转换为小的数据类型需要强制转换,反之可以自动转换。赋值表达式等号两侧的转换的规则是右侧的向左侧的看齐,即右侧表达式要转换到和左边的类型一样。

(3)用最优效率的方法算出2乘以8等于多少。
用位运算符:int i = 2 << 3;

(4)"==" 和 equals 方法有什么区别?
"==" 比较地址
equals 判断值是否相等

(5)Integer 和 int 的区别是什么?
Integer是封装类,其中包含了int 基本数据类型和针对int的一些操作。而int是基本数据类型。

(6)Math.round(11.5) 和 Math.round(-11.5) 分别等于多少?
分别是12、 -11 将括号里的数+0.5之后再向下取整

(7)float 型 float f=3.4 是否正确?
不对,精度不准确,应该用强制类型转换,如下所示:
float f = (float)3.4 或 float f = 3.6f


2.流程控制方面的
(1)switch 语句能否作用在byte、long、String上?
————a.switch里可以用char,byte,short,int 这些基本类型,以及它们的封装类
b.不能用long,double,float,boolean,包括它们的封装类
c.jdk1.7和以上版本里,可以使用字符串类型
d.switch中还可以使用枚举类型

(2)在Java中,如何跳出当前的多重嵌套循环?
————用break 或 continue ,其中,break跳出整个循环,continue 是跳出当次循环

(3)while 和 do..while 有什么区别?
————while 先判断条件再执行循环体
do..while 先执行后判断,多以同等条件下,do..while 会多执行一次

(4)你有没有用过关键字goto?并简述你的看法
————不建议使用,,因为它会破坏程序的结构,尤其会让代码一团槽,不能读

猜你喜欢

转载自www.cnblogs.com/tangjian07/p/10588861.html