一些Java面试题

问题一:以下哪句会编译失败,并说明原因。
byte b1=3, b2=4, b;
b=b1+b2;
b=3+4;

分析:
b=b1+b2将会编译失败。因为b1和b2是变量,变量参与运算时,首先会考虑数据类型。因此,byte类型会进行默认类型提升,默认使用int类型进行存储。而b为byte类型,故存在数据不兼容,编译失败。
在b=3+4中 ,3和4都是常量,所以java在编译时期会检查该常量的和是否超出byte类型的范围,如果没有可以赋值。如果超出byte类型范围,则会编译失败,需进行强制转换后,可编译成功。

注意:byte,short,char三种数据类型在参与运算时,会默认提升为int类型。

问题二:请写出下列程序的运行结果。

  1. System.out.println(‘a’);
  2. System.out.println(‘a’+1);
  3. System.out.println(“hello”+’a’+1);
  4. System.out.println(‘a’+1+”hello”);
  5. System.out.println(“5+5=”+5+5);
  6. System.out.println(5+5+“=5+5”);

分析:对于1,为字符类型,直接输出字符a。对于2,“+”为运算符,a的ASCII代码为97,故结果为98。对于3,首先为字符串参与运算,故两个“+”都为拼接符,输出结果为helloa1。对于4,字符串在最右侧,第一个“+”为运算符,第二个“+”为拼接符,故输出结果为98hello。对于5,“5+5=”为字符串类型,故“+”全部为拼接符,因此输出结果为5+5=55。对于6,第一个“+”为运算符,由于最右侧为字符串类型,故第二个“+”为拼接符,结果为10=5+5。

问题三:以下两个代码是否有问题,如果有,哪里有问题。
1) short s=1; s=s+1;
2) short s=1; s+=1;

分析:对于1),short类型变量参与运算时,会进行默认类型提升,默认使用int类型进行存储。而左侧接受侧为short类型,故存在数据不兼容,编译失败。
对于2),由于扩展运算符+=具有默认的强制类型转换,s+=1等价于s=(short)(s+1),故不会存在编译错误。

问题四:求出以下a,b,c的值。
int a=10;
int b=10;
int c=10;
a= b++;
c= --a;
b=++a;
a=c–;

分析:第四行:a=10, b=11, c=10;第五行:a=9, b=11, c=9; 第六行:a=10, b=10, c=9; 第七行:a=9, b=10, c=8.
注意:a++,先进行赋值运算,后进行自加;++a先进行自加,然后进行赋值运算。

问题五:求x和y的值。
int x=4;
int y=(x++)+(++x)+(x*10);

分析:x=4。y=4+6+6*10=70。x++首先进行运算,然后进行自增,因此在(x++)中,首先将x=4的值赋给(),然后进行自增。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值