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

------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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值