1. Java基础部分
基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
一个Java源文件中可以定义多个类,但最多只能定义一个public的类,并且public类的类名必须与源文件名一致。
一个文件中可以只有非public类,而且这些类的类名可以跟Java源文件名不同。例如一个Java源文件名中只定义了一个非public类MyClass,而源文件名为Other.java,编译后只会生成一个MyClass.class文件,不会生成Other.class文件。
2、Java有没有goto?
java中的保留字,现在没有在java中使用。
3、说说&和&&的区别。
&和&&都可以用作逻辑与的运算符,&&为短路与运算,&不是短路与运算。
另外&可以做为整数的位运算符的与运算
例1:对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException。如果将&&改为&,则会抛出NullPointerException异常。当然不建议这样的写法,应该写为if(str != null && !“”.equals(str))
例2:If(x==33 &++y>0) y会增长,if(x==33 &&
++y>0)不会增长
备注:这道题先说两者的共同点,再说出&&和&的特殊之处,并列举一些经典的例子来表明自己理解透彻深入、实际经验丰富。
4、在JAVA中如何跳出当前的多重嵌套循环?
1. Break + 标签
2. 直接使用Break
3. 使用方法的return
在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。例如,
ok:for(inti = 0; i < 10; i++) {
for(intj = 0; j < 10; j++) {
System.out.println("i=" + i+ ",j=" + j);
if(j == 5)
breakok;
}
}
另外,可以让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。
intarr[][]={{1,2,3},{4,5,6,7},{9}};
booleanfound =false;
for(inti=0;i
for(intj=0;j
System.out.println("i=" + i+ ",j=" + j);
if(arr[i][j] ==5) {
found=true;
break;
}
}
}
第三种,使用方法的return
publicstaticinttest() {
intcount= 0;
for(inti = 0; i < 10; i++) {
for(intj = 0; j < 10;j++) {
count++;
System.out.println("i="+ i + ",j=" + j);
if(j == 5) {
returncount;
}
}
}
return0;
}
5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
作用在byte、short、char、int,这四种基本类型的封装类对象和枚举,其它基本数据类型及引用数据类型都不能做为case的条件。
基本数据类型可以这样简单记忆,能自动加宽到int类型的简单类型和封装类,再加一个enum类型。
在JDK 7以后,String类型也可以做为switch的case条件。
基本数据类型做为case条件非常简单,这里只给出一种enum类型的例子:
publicclassSwitchDemo {
publicstaticvoidmain(String[] args) {
Direction d = Direction.NORTH;
switch(d) {
caseSOURTH:
break;
default:
break;
}
}
}
enumDirection {
NORTH,SOURTH,WEST,EAST
}