①: 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 类型的变量也是占 用两个字节 |
Java基础面试遇到问题(一)
最新推荐文章于 2024-08-30 18:40:43 发布