您的位置:首页 > 职场人生

java基础面试题(1)

2016-03-16 18:38 375 查看
1.静态语句块

public class StaticTest
{
static
{
int i=5;
System.out.println(“Hi there”);
}
}


知识点:类中静态语句块仅在类加载时被执行一次,.JVM加载class文件时,就会执行静态代码块,静态代码块中初始化了一个变量x并初始化为5,由于该变量是个局部变量,静态代码快执行完后变被释放。

2.final ,finally, finalize三者的区别。 
finalize是一个方法,而且它是Object类中的一个方法。当垃圾收集器在确定这个对象没有被引用时调用对象的finalize方法。它的作用是为GC清理对象之前做一些必要的清理工作。(如输入输出连接的对象的finalize方法可执行显式IO事务,以便在永久对象之前中断连接)。

finally用在try,catch异常机制中,不管什么情况都会执行。

final表示类,表示不可以被继承;修饰基本数据类型,即常量不可变;修饰引用类型,指向的对象内容可变,对象不可变。

3.方法重载

关于方法的重载: 方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数不同的方法。

方法重载具体规范

       一.方法名一定要相同。

二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。

三.方法的返回类型、修饰符可以相同,也可不同。

例子:

public class Test1{
public float aMethod(float a,float b){}//1 方法
public int aMethod(int a,int b){}//2 正确的方法重载,参数类型不同
private float aMethod(int a,int b,int c){}//3 正确的方法重载,参数个数不同
public float aMethod(float a,float b,float c){}//4 正确的方法重载,参数个数类型不同

public float aMethod(float a,float b){}//错误的方法重载

}


4.关于SWING的一些描述

Swing是一个基于Java的跨平台MVC框架。使用单线程模式。

Swing 是为了解决 AWT 存在的问题而新开发的包,它以 AWT 为基础的。

Swing是一个基于组件的框架,所有的组件都是从javax.swing.JComponent类继承来的。

5.JVM运行时的数据区

(1)什么是字符串常量池
JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池
工作原理
当代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量进行检查,如果字符串常量池中存在相同内容的字符串对象的引用,则将这个引用返回,否则新的字符串对象被创建,然后将这个引用放入字符串常量池,并返回该引用。
实现前提
字符串常量池实现的前提条件就是Java中String对象是不可变的,这样可以安全保证多个变量共享同一个对象。如果Java中的String对象可变的话,一个引用操作改变了对象的值,那么其他的变量也会受到影响,显然这样是不合理的。
(2)关于堆和栈
Java中所有由类实例化的对象和数组都存放在内存中,无论是成员变量,局部变量,还是类变量,它们指向的对象都存储在堆内存中。而内存用来存储局部变量和方法调用
(3)关于寄存器
Java中运行时数据区有一个程序寄存器(又称程序计数器),该寄存器为线程私有。Java中的程序计数器用来记录当前线程中正在执行的指令。如果当前正在执行的方法是本地方法,那么此刻程序计数器的值为undefined

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息