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的基本数据类型转换规则,大的数据类型转换为小的数据类型需要强制转换,反之可以自动转换。赋值表达式等号两侧的转换的规则是右侧的向左侧的看齐,即右侧表达式要转换到和左边的类型一样。
数据类型大小:
①byte<short<int<long<float<double;
② char<int<long<float<double;
值得注意的是byte和char ,short和char都不会存在隐式转换,相互之间只能进行强制类型转换。
(3)用最优效率的方法算出2乘以8等于多少。
用位运算符:int i = 2 << 3;【补充】:对于正数来说,左移 n 位相当于乘以 2n(但效率比乘法高),右移 n 位相当于除以2n(但效率比除法高)。
(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?并简述你的看法
————不建议使用,,因为它会破坏程序的结构,尤其会让代码一团槽,不能读