1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
答:可以有多个类,但只能有一个public的类,并且public的类名必须与文件名一致。
2.JAVA中有没有goto?
答:在C/C++中goto常被用于跳出多重循环,但这会降低程序的可读性,因此在JAVA中并没有使用goto,只是作为(关键字)保留字进行留存,且goto这个(关键字)保留字没有任何作用,只是为了将来可能的扩展,防止使用goto作为程序的标识符。
3.说说&和&&的区别
&和&&都可用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则只要有一方为false,则结果为false。
&&还具有短路的作用,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(number == 3 && ++x>0),如果number等于3则会进行后面的自增操作,如果第一个表达式都不满足,则第二个表达式的自增则进行都不会进行。
&还可以用作位运算符,当&两边的表达式都不为boolean类型时,&表示按位与操作,即将两数转换为二进制,在通过俩俩的位数进行对比,都为1时,结果为1,否则都为0。(我们通常使用 0x0f 来与一个整数进行&运算,来获取该整数的最低 4 个 bit 位,例如,0x31 & 0x0f 的结果为 0x01)
4.switch语句能否用在byte上,能否作用在long上,能否作用在String上?
在switch(expr1)中,expre1可以是一个整数表达式或者枚举常量,整数表达式可以是int基本类型或Integer包装类型,由于byte,short,char都可以隐形转换为int,所以,这些类型以及这些类型的包装类型也是可以的。
5.a=a+b和a+=b有什么区别?
+=操作符会进行隐式自动转换,此处a+=b隐式的将加操作的结果类型强制转换为持有结果的类型
而a=a+b则不会自动进行类型转换,例如:
short s1=1;
s1=s1+1;
此处就会报错,类型错误,因为1是int类型的数据,s1是short类型的数据,因为类型不一样就会导致运算出错。
正确的:
short s1=1;
s1+=1;
6.char型变量中能不能存储一个中文汉字?为什么?
7.用最有效的方法算出2乘以8等于几?
2<<3,
因为将一个数左位移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左位移3位即可,而位运算cpu是直接支持的,效率最高,所以,2乘以8等于几的最效率的方法就是2<<3。