Java基础面试遇到问题(一)

①:

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

对于short s1 = 1; s1 = s1 + 1; 由于s1+1 运算时会自动提升表达式的类型,所以结果是int 型,再赋值

给short 类型s1 时,编译器将报告需要强制转换类型的错误。

对于short s1 = 1; s1 += 1;由于 += 是java 语言规定的运算符,java 编译器会对它进行特殊处理,因此

可以正确编译。

②:

用最有效率的方法算出2乘以8等於几?

2 << 3,

因为将一个数左移n 位,就相当于乘以了2 的n 次方,那么,一个数乘以8 只要将其左移3 位即可,

而位运算cpu 直接支持的,效率最高,所以,2 乘以8 等於几的最效率的方法是2 << 3。

③:

说说&和&&的区别。

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true 时,

整个运算结果才为true,否则,只要有一方为false,则结果为false。

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null

&& !str.equals(“”))表达式,当str 为null 时,后面的表达式不会执行,所以不会出现NullPointerException

如果将&&改为&,则会抛出NullPointerException 异常。If(x==33 & ++y>0) y 会增长,If(x==33 && ++y>0)不会增长

&还可以用作位运算符,当&操作符两边的表达式不是boolean 类型时,&表示按位与操作,我们通常

使用0x0f 来与一个整数进行&运算,来获取该整数的最低4 个bit 位,例如,0x31 & 0x0f 的结果为0x01。

④:

char型变量中能不能存贮一个中文汉字?为什么?

char 型变量是用来存储Unicode 编码的字符的,unicode 编码字符集中包含了汉字,所以,char 型变量

中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode 编码字符集中,那么,这个char

型变量中就不能存储这个特殊汉字。补充说明:unicode 编码占用两个字节,所以,char 类型的变量也是占

用两个字节

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值