Java笔试面试题: 1.类的定义格式:
[修饰符] class 类名{ 类的主体; }
2.方法声明的基本格式:
[修饰符] 返回值类型 方法名(参数类型 参数名, ...){ 定义变量; 定义方法; }
3.局部变量与成员变量的区别:成员变量有默认值,而局部变量没有;
4.Java的判断条件结果必须是一个布尔值;
5.this关键字和super关键字分别代表什么?以及他们各自的使用场景和作用。
this:代表当前类的对象引用
super:代表父类存储空间的标识。(可以理解为父类的引用,通过这个东西可以访问父类的成员)
应用场景:
A:调用成员变量
this.成员变量 调用本类的成员变量 super.成员变量 调用父类的成员变量 B:调用构造方法
this(...) 调用本类的构造方法 super(...) 调用父类的构造方法 C:调用成员方法
this.成员方法 调用本类的成员方法 super.成员方法 调用父类的成员方法
6.权限修饰符:
本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类) private Y
默认 Y Y
protected Y Y Y
public Y Y Y Y
JAVA的事件委托机制和垃圾回收机制:
java 事件委托机制的概念,一个源产生一个事件并将它送到一个或多个监听器那里。在这种方案中, 监听器简单的等待, 直到它收到一个事件。 一旦事件
被接受, 监听器将处理这个事件,然后返回。
垃圾回收机制 垃圾收集是将分配给对象但不再使用的内存回收或释放的过程。如果一个对象没有指向它的引用或者其赋值为null,则次对象适合进行垃圾回收
7.控制跳转语句: break:中断 continue:继续 return:返回
break:中断的意思 使用场景:
A:switch语句中 B:循环语句中。
(循环语句中加入了if判断的情况) 注意:离开上面的两个场景,无意义。
如何使用呢?
A:跳出单层循环 B:跳出多层循环
要想实现这个效果,就必须知道一个东西。带标签的语句。 格式:
标签名: 语句 wc:for(int x=0; x<3; x++) {
nc:for(int y=0; y<4; y++) { if(y == 2) { break wc; }
System.out.print(\ }
System.out.println(); }
continue:继续
使用场景:
循环中。离开此场景无意义。
测试,找到和break的区别: break:跳出单层循环
continue:跳出一次循环,进入下一次的执行
练习题:
for(int x=1; x<=10; x++) {
if(x%3==0) {
//在此处填写代码 }
System.out.println(“Java基础班”); }
我想在控制台输出2次:“Java基础班“ break;
我想在控制台输出7次:“Java基础班“ continue;
我想在控制台输出13次:“Java基础班“ System.out.println(“Java基础班”);
return:返回
其实它的作用不是结束循环的,而是结束方法的。
8.什么是 java序列化,如何实现 java序列化? (写一个实例) 序列化:
可以将一个对象保存到一个文件, 所以可以通过流的方式在网络上传输, 可以将文件的内容读取,转化为一个对象。
处理对象流的机制, 所谓对象流也就是将对象的内容进行流化。 可以对流化后的对象进行读写操作, 也可将流化后的对象传输于网络之间。 序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化的实现:
将需要被序列化的类实现 Serializable 接口,该接口没有需要实现的方法, implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流 (如: FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用
ObjectOutputStream对象的writeObject(Objectobj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
9.一个\源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以。如果这个类的修饰符是public,其类名与文件名必须相同
10.方法重写(Override)和方法重载(Overload)的区别?方法重载能改变返回值类型吗?
Override:方法重写也称方法覆盖 Overload:方法重载
方法重写:
在子类中,出现和父类中一模一样的方法声明的现象。
方法重载:
同一个类中,出现的方法名相同,参数列表不同的现象。 方法重载能改变返回值类型,因为它和返回值类型无关。
子类对象调用方法的时候:先找子类本身,再找父类。
方法重写的应用:
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。
这样,即沿袭了父类的功能,又定义了子类特有的内容。
方法重写的注意事项
A:父类中私有方法不能被重写
因为父类私有方法子类根本就无法继承 B:子类重写父类方法时,访问权限不能更低 最好就一致
C:父类静态方法,子类也必须通过静态方法进行重写
其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解
子类重写父类方法的时候,最好声明一模一样。 11.看程序写结果
字符串数据和其他数据做+,结果是字符串类型。 这里的+不是加法运算,而是字符串连接符。
System.out.prinln(8+8+”88”+8+8); //168888
12.final:最终的意思。常见的是它可以修饰类,方法,变量。 final修饰局部变量的问题
基本类型:基本类型的值不能发生改变。
引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。
final修饰变量的初始化时机
A:被final修饰的变量只能赋值一次。 B:在构造方法完毕前。(非静态的常量)
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 父类: 13. package test; public class FatherClass{ public FatherClass(){ System.out.println(\); } } 子类:
package test; import test.FatherClass; public class ChildClass extends FatherClass{ public ChildClass(){
System.out.println(\); }
public static void main(String[] args){ FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass(); } }
输出结果:
FatherClass Create FatherClass Create ChildClass Create
14.内部类的实现方式? 答: 示例代码如下:
public class OuterClass{
private class InterClass{ public InterClass(){
System.out.println(\); } }
public OuterClass(){
InterClass ic = new InterClass();
System.out.println(\); }
public static void main(String[] args){ OuterClass oc = new OuterClass(); } }
输出结果:
InterClass Create OuterClass Create
15.如在 Collection框架中, 实现比较要实现什么样的接口?
Collection框架中实现比较要实现Comparable 接口和 Comparator 接口