1、一个”.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致。
2、Java 有没有 goto?
java 中的保留字,现在没有在 java 中使用。(可以明确的说现在使用的人就是有病)
3、说说&和&&的区别。
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 false。
&&还具有短路的功能,即如果第一个表达式为 false,则不再计算第二个表达式,例如,对于 if(str != null && !str.equals(“”))表达式,当 str 为 null 时,后面的表达式不会执行,所以不会出现 NullPointerException 如果将&&改为&,则会抛出 NullPointerException 异常。If(x33 & ++y>0) y 会增长,If(x33 && ++y>0)不会增长。
&还可以用作位运算符,当&操作符两边的表达式不是 boolean 类型时,&表示按位与操作,我们通常使用 0x0f 来与一个整数进行&运算,来获取该整数的最低 4 个 bit 位,例如,0x31 & 0x0f 的结果为 0x01。
4、在 JAVA 中如何跳出当前的多重嵌套循环?
在 Java 中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的 break 语句,即可跳出外层循环。另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制。
1 |
|
5、switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?
在 switch(expr1)中,expr1 只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是 int 基本类型或 Integer 包装类型,由于,byte,short,char 都可以隐含转换为 int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long 类型不符合 switch 的语法规定,并且不能被隐式转换成 int 类型,所以,它不能作用于 swtich 语句中。
1 | public static void main(String[] args){ |
1.switch 后面的(),里面返回的是一个具体的数值:byte ,short,char ,int ,jdk1.5 增加了枚举;JDK 1.7 之后 可以是 String 2.这个数值会依次跟 case 后面的数值进行比较,只要满足就执行后面的代码,直到遇到 break 结束 3.在每个分支后面要加上一个关键字 break
4.default 就是一个备胎的作用。其余的分支假如都没有走,那么一定会走 default 里面的代码。(类似 if 多分钟中的 else 结构)
default 可以写在任意的位置上,但是要写 break 结束语句。
假如放在最后一行,break 可以省略不写。(建议写在最后一行–可读性好)
5.switch 能解决的,if 都能解决,if 能解决的 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 编译器会对它进行特殊处理,因此可以正确编译。
1 | public void test4(){ |
�
7.char 型变量中能不能存贮一个中文汉字(双字符)?为什么?
char 型变量是用来存储 Unicode 编码的字符的,unicode 编码字符集中包含了汉字,所以,char 型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在 unicode 编码字符集中,那么,这个 char 型变量中就不能存储这个特殊汉字。补充说明:unicode 编码占用两个字节,所以,char 类型的变量也是占用两个字节。
8、用最有效率的方法算出 2 乘以 8 等于几?
8 << 1
9、请设计一个一百亿的计算器
这种问题就是想问你对 long 的表示范围的了解,1010=(210)^10 超过了 long 的表示范围,可以使用 biginteger 直接使用。如果非要实现可以将其保存为 String 然后单个符号位进行计算。
10、使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句:
final StringBuffer a=new StringBuffer(“immutable”);
执行如下语句将报告编译期错误:a=new StringBuffer(“”);
但是,执行如下语句则可以通过编译: a.append(“ broken!”);
1 |
|