java面试资料总结
一、java基础部分
1、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制?
可以,但是只能有一个public类,且类名与文件名相同
2、java有没有goto?
goto是java中的保留字,现在还没有被使用
3、说说&和&&的区别?
它们都是逻辑运与算符,&是当运算符两边的结果都是true的时候整个结果才为true,否则任何一方是false整个结果就是false
&&是短路与,只要第一个是true整个结果就是true反之第一个结果是false整个结果就是false
&&和&还可以作为按位运算符,(回头复习下进制)
4、在java中如何跳出当前多重嵌套循环?
在java中,要想跳出多重循环,有两种方式,一种是标识符,在循环外加一个标识号,然后在里层循环处使用带有标志号
的break语句,另外一种是在里层循环处直接使用break语句
5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int类型或者Integer包装卡类型,由于,byte,short,char都可以自动转化为int 类型,所以这些类型是可以的,但是long和String类型不能自动转化为int类型,所以不能用于switch语句中。
6、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编译器会对它进行特殊处理,因此可以正确编译。
7、char型变量能否存储一个汉字?
可以,char型变量是用来存储Unicode编码的字符的,Unicode编码字符集中包括了汉字,而且一个汉字占位是两个字节,因此是可以的,当然Unicode编码字符集不包含的汉字不能存储
8、用最有效率的方法算出2乘以8等于几?
2<<3
因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2乘以8等於几的最效率的方法是2 <<