关闭

黑马程序员--Java语法基础中的例题和思考题

434人阅读 评论(0) 收藏 举报
分类:
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


面试试题:

A:下面两种方式有区别吗?

float f1 = 12.345f;
float f2 = (float)12.345;

解答:前者12.345本身是一个float类型的数据,而后者12.345是个double类型的,经过强制转换赋值给f2


B:下面的程序有问题吗,如果有,在哪里呢?
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;

 解答:第三行有问题,因为可能存在精度损失的情况。


C:下面的操作结果是什么呢?

byte b = (byte)130;

解答:-126


D:字符参与运算
是查找ASCII里面的值
'a' 97
'A' 65
'0' 48
System.out.println('a');
System.out.println('a' + 1);

E:字符串参与运算
这里其实是字符串的连接
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
System.out.println("5+5="+5+5);
System.out.println(5+5+"=5+5");


F:面试题:
short s = 1;
s = s + 1;

short s = 1;
s += 1;
请问上面的代码哪个有问题?

解答:第一个有问题,因为第一个short类型的数据参与运算的时候,首先默认转换成int类型参与运算,但是又赋值给一个short类型的数据,这样可能会损失精度。而第二个运算中,扩展运算符隐含了一个强制类型转换,式子等价于

s=(short)s+1;


G:面试题

switch语句的表达式可以是byte吗?可以是long吗?可以是String吗?
解答:可以,不可以,JDK7以后可以







1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2947次
    • 积分:200
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章存档