1、一个java源文件是否可以包含多个类,有什么限制?
可以包含多个类,只能有一个public类,且必须与文件名相同
2、java中如何跳出当前的多重嵌套循环?
两种方式:
1、外面添加标号(不常用)
ok;
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
System.out.println();
if(j==5){
break ok;
}
}
}
2、外层条件表达式受到里层循环代码的控制
boolean found=false;
for(int i=0;i<10&&!found;i++){
for(int j=0;j<10;j++){
System.out.println();
if(j==5){
found=true;
break ;
}
}
}
3、"=="和equals方法有啥区别?
==用于比较两个变量的数值是否相等,即内存中的数值是否相等
equals用于比较两个独立的对象内容是否相等
4、静态变量和实例变量的区别?
外观上:静态变量比实例变量多一个static的关键字
本质上:静态变量属于某个类的属性,实例变量属于某个实例的属性
静态变量可以用对象名或者类名调用,实例变量只能用对象名调用
举例:
public class variantTest{
public static int staticVar=0;
public int IinstaticVar =0;
public variantTest(){
staticVar++;
instaticVar++;
System.out.println(staticVar+"-----"+instaticVar);
}
}
每创建一个实例staticVar++;IinstaticVar只加一次
5、是否可以从一个static方法内部发出对非static方法的调用?
不可以,static方法创建不需要实例对象,非static方法在实例对象创建后才能被调用
6、Integer和int的区别
Integer是int的封装类,默认值是null
int是java8种基本数据类型之一,默认值是0
Integer适合作web表单数据类型,还提供了与整数有关的操作
7、作用域public、private、potected、默认之间的区别?
作用域 当前类 同一包 子孙类 其他包
public v v v v
protected v v v x
默认 v v x x
private v x x x
8、overloaded和override的区别?
overloaded是重载,override是重写
9、构造器Constructor是否可以被override?
不可以,构造器不能被继承,因此不能override,刻意pverload
10、接口接口是否可以继承接口?抽象类是否可以可以继承具体类?抽象类是否可以含有静态main方法?
都可以,抽象类是为了让别的类继承而存在的,接口是为了让别的接口或者类实现而存在的
11、面向对象的特征有哪些?
封装、抽象、继承、多态
12、java中实现多态的机制是什么?
靠的是父类或者接口定义的引用变量可以指向子类或者具体实现类的实例对象
13、基本数据类型有哪些?
byte、char、int、long、short、float、double、boolean
14、final、finally、finalize的区别?
final声明属性、方法、类,表示书香不能变、方法不能被覆盖、类不能被继承
finally是异常处理语句结构的一部分
finalize是Object类的一个方法,用于垃圾回收
15、java中异常处理机制的简单原理和应用
java把每个异常封装到一个对象来表示,对象包含异常信息
不同类型的异常用不同的类
异常的根类:java.lang.Throwable,派生的子类Error和Exception(系统异常、普通异常),Error表示程序本身无法恢复的异常,Exception表示程序还能够克服和恢复的问题
16、5个常见的runtime exception
NullPointerException ArrayIndexOutOfBoundException、ClassCastExceptio
17、java如何进行异常处理?
throws 捕获并向外抛出异常
throw 抛出异常
try...catch 内部捕获异常并处理
finally 无论是否有异常都会执行
18、sleep()和wait()有什么区别?
sleep就是正在执行的线程主动让出cpu,cpu去执行其他线程,sleep时间过后,再来执行这个线程
wait是针对已经进入同步锁的程序,让其占时让出同步锁,让其他程序得到同步锁,当其他程序调用notity时,它执行完毕后返回这个程序
19、启动一个程序是run()还是start()?
启动一个线程是start(),run()是该线程说关联的执行代码
20、HashMap和Hashtable的区别?
历史原因:Hashtable是基于陈旧的Dictionary类,HashMap是java1.2引进的Map接口的一个实现
同步性:Hashtable是线程安全的,HashMap是线程不安全的
值:HashMap可以将空值作为表条目的值
21、List和Map的区别?
List存储数据是有顺序的,并且允许重复的
Map存储数据是无序的,键是不能重复的,值可以重复
22、List、Set、Map存取元素时,各种有什么特点?
List和Set都是单列元素,其父接口是Collection
Set是不允许有重复元素的无序的,因此set的add方法有boolean的返回值
List是有顺序的集合
Map是双列集合
23、说出一些常用的类、包、接口
类:String、Integer、Date、ArrayList、HashMap、BuffteredReader、buffteredWriter、FileReader、FileWriter
包:java.util、java.io、java.lang、java.sql、java.servlet
接口:List、Map、Servlet、HttpServletRequest、HttpServletPesponse
24、描述一下JVM加载class文件的原理机制
JVM对类的装载是通过ClassLoader和它的子类JavaClassLoader实现的
25、GC是什么?
GC(Gabage Collection),垃圾回收,自动检测对象是否超过作用域从而达到垃圾回收的目的
26、heap和stack的区别?
栈是程序运行时,调用方法临时创建的内存空间,方法使用完毕,空间释放
堆是创建实例对象所创建的内存空间,不随着方法的使用结束而释放内存