Java面试题之一

下面也将收集一些经典的java面试题,琢磨这些面试题还是非常有好处,可以弄清楚一些容易混淆的知识点,下面面试题的答案部分来自网络,有些来自自己的理解,都是自己精心归纳整理的,有问题的地方,希望大家指出,以便及时更正。

 

一、GC是什么? 为什么要有GC?

GCGabage Collection的缩写。中文意思就是垃圾回收。

JavaC++发展而来,在C/C++中,需要程序员自己来释放无用变量的内存空间,这样非常繁琐,程序员也可能忘记释放或者释放了不该释放的内存。同时也会耗费程序员大量精力在释放内存上。所以,Java就对此做了改进,由系统来管理内存的释放,不再由程序员去人工释放内存空间了。当Java虚拟机发觉内存资源紧张的时候,就会自动地去清理无用变量所占用的内存空间,如果程序员显示地调用System.gc(),可以通知虚拟机加快垃圾回收的速度。但并不能控制垃圾回收。

 

二、switch语句能否作用在byte上,能否作用在long上,能否作用在String?

switch(condition)中,condition只能是一个整数表达式或者枚举常量,整数表达式可以是int基本类型或Integer包装类型,由于byteshortchar都可以隐含转换为int,所以这些类型以及这些类型的包装类型也是可以的。long不能作用于switch语句中。Stringjdk1.7之前的版本也不可以。

 

三、"=="equals方法究竟有什么区别?

1. "=="是运算符,equals是方法,可以被重写。

2.==”操作符用来比较变量所对应的内存中所存储的数值是否相同。所以要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。因为比较基本数据类型是否相等就是比较其内存中的数值是否相等。比较两个引用变量是否相等就是比较其内存中的值(该变量所指向的对象的首地址)是否相等,就是比较它们是否指向同一个对象。

3. equals()方法是用于比较两个独立对象的内容是否相同。比如:String a=new String("java"); String b=new String("java");这两个变量指向的是两个不同的对象,它们的首地址是不同的,也就是说ab内存中存储的值是不同的,即a==b会返回false,但它们的内容是相同的,所以a.equals(b)将返回true

4. equalsObject的方法。其底层实现就是根据“==”来判断的,这就是说如果一个类或者其父类没有覆盖Objectequals()方法,那么“==”和equals()效果是一样的。上面就是因为String类已经重写了equals()方法,所以“==”和equals()得到的结果才会不一样。

 

四、构造方法能否被重写和重载?

1、构造方法是允许被重载的,而且重载构造方法是一种很普遍的做法,可以方便使用者灵活的创建对象。重载的构造方法之间相互调用可以使用this关键字。

2、在继承过程中构造方法是不能被继承的,因此在子类中无法对父类构造方法重新定义,当然就不能被重写了。如果需要在子类中调用父类的方法,可以调用super关键字引用。

 

五、抽象类和接口的区别?

1、接口和抽象类都不能产生对象。接口变量只能指向实现类对象,抽象类变量只能指向子类对象。
2、一个类实现接口或者一个类继承一个抽象类,都必须实现接口或抽象类中定义的所有抽象方法。除非该类也是抽象类。
3、抽象类中可以定义抽象方法也可以定义具体方法。但接口中只能定义抽象方法。
4、接口中定义的变量都是public static final。而抽象类中定义的变量是普通属性。
5、接口中定义的方法都是public。不能用privateprotected修饰。而抽象类中定义的方法可以是默认、protectedpublic
6、一个类只能继承另一个类,但可以实现多个接口。
7、接口和抽象类中都可以不定义抽象方法。

 

 

                                                                                                                           

 

 

 

 

你可能感兴趣的:(Java面试题)