面试题来源:http://www.jianshu.com/p/97c279db3c34
1.Java基本的数据类型有哪些?
自己的回答: byte short int long boolean float double
标准答案 http://www.cnblogs.com/123hll/p/5805040.html
一种字符类型(char): char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535) 。 注意事项: 不能为 0个字符。
2.给一段你认为计算 2 * 8 最高效的代码
使用移位算法:2<<3。在计算机里 2表示为 10。移位的话就是2进制在后面加0,当然比较快。楼主想想看,2进制后面+0,就是等于*2了。所以+3个0就是*8
3.final,finally,finalize的区别?
参考答案:http://blog.csdn.net/lichaohn/article/details/5424519
总结:final,如果一个变量或方法参数被final修饰,就表示它只能被赋值一次;fially只能用在try/catch语句中,并且附带着一个语句块,表示这段语句最终总是被执行;finalize,它是一个方法,属于java.lang.Object类,finalize()方法是GC(garbage collector)运行机制的一部分。
4.short s1= 1; s1 = s1 + 1; 该段代码是否有错,有的话怎么改?
short s1= 1; s1 += 1; 该段代码是否有错,有的话怎么改?
参考:https://zhidao.baidu.com/question/495519235579419364.html
前面一句中,s1=s1+ 1需要进行强转,写成s1= (short)(s1 + 1)。
后面一句没错。