Java总结2
1、Java中一个类能同时继承多个类吗?所有类的父类是什么?
不能 object
2、构造方法能继承吗?构造方法能重载吗?
构造方法不能继承,但是子类对象创建时需要调用父类的构造方法,产生父类对象
构造方法能重载,通过重载方法完成属性的初始化操作
3、final、finally、finalize的区别是什么?
final是修饰符表示该类不能被继承方法,不能被i子类重写,修饰变量,表示该变量的值不变
finally是语句块,表示无论是否发生异常都要执行的语句块,一般用于流的关闭 ,数据库的关闭清理工作
finalize是应该方法,在object中定义,当该对象被垃圾回收之前,会自动调用该方法
4、访问修饰符有哪些?各自作用范围是什么?
private:只在本类可以访问。
默认:本包中的类可以访问
protect:本包和不同包的子类可以使用
public:本包和非本包中的类都可以使用
5、静态块和实例化块分别在什么时候执行?
静态块在类加载时执行,只执行一次。实例化块在产生对象时执行。每产生一个对象,就执行一次,在super()之后执行。
6、什么是内部类?内部类class文件是怎样命名的?
内部类:定义在类当中的类。内部类相当于外部类的属性,它的对象产生必须依赖于外部类对象.
外部类名$内部类名.class
7、什么是多态?多态有什么特点?
多态是指允许使用父类变量指向子类对象。允许使用接口变量指向实现类对象。但反过来不行。
多态的特点:相同行为,不同的实现方式
8、面向对象的特征有哪些?
继承、封装、多态
9、什么是抽象类?什么是抽象方法?定义抽象类的关键字是什么?
抽象类:拥有抽象方法的类。
抽象方法:只有方法定义没有方法的实现。
关键字:abstract
10、接口如何定义?实现接口用什么关键字?一个类实现接口必须做什么?
定义接口用:interface
实现接口:implement
实现一个接口必须重写接口中的定义的所有抽象方法。否则,该类只能是抽象类
11、接口中定义的方法修饰符是什么?接口中定义的变量修饰符是什么?
接口中定义方法的修饰符:public abstract
接口中定义的变量修饰符:public final static
12、抽象类和接口的区别是什么?
一、抽象类和接口都不能直接实例化。抽象类变量只能指向子类对象,接口变量只能指向实现类对象;
二、抽象类中可以有抽象方法,也可以有具体方法,但接口中只能有抽象方法;
三、抽象类中定义的变量是普通属性,但是接口中定义的变量是公共的静态的常量;
四、一个类只能继承一个抽象类,但可以实现多个接口。
13、异常的API结构是怎样的?Error和Exception有什么区别?
异常的API结构:Throwable为父类,该类有两个子类Error(错误)和Exception(异常)。其中Error可以捕获,但不能处理。而Exception可以捕获,可以处理。
14、异常的执行顺序怎样?如果在try块中有return,finally会执行吗?
先执行try块中的内容,顺序执行,如果有异常发生,转向catch块执行,同时终止try块中的其它代码。无论有无异常,都会指向finally语句块。
如果在try块中有return,finally会在跳出方法之前执行
15、finally是否在任何时候都会执行?
不是,关闭虚拟机不会执行。System.exit(0)
16、throw 和throws的区别是什么?
trow是语句,显示抛出异常。throw new Exception
thows是方法修饰符,表示该方法可能会抛出某个异常。那么调用该方法时,就必须处理该方法抛出的异常。
17、异常分为几种?如何区分?
异常分2种:编译期异常(检查异常)和运行期异常(非检查异常)。
编译期异常必须处理,否则编译错误。运行期异常可处理可不处理,不处理也会通过编译。所有运行期异常都是RuntimeException的子类
18、如何得到当前工作目录?
System.getProperty("user.dir");
19、String x = "abc" 和 String x = new String("abc")有什么区别?
String x = "abc":x变量指向常量池中的“abc”常量对象。
String x = new String("abc"):x变量执行堆中的字符串对象。但堆中字符串对象的产生必须以常量池中的字符串常量对象做为模板
20、String和StringBuffer的区别?
String 具有长度不可变化的特性,当对String做添加、替换、删除时,不会改变对象的内容,而是产生新的对象,所以String做频繁操作时,效率较低。
StringBuffer是缓冲区对象,当对StringBuffer对象操作时,不能产生新的对象。
一般使用时,先用StringBuffer完成字符串相关操作,再用toString()转换成String。
21、如何将字符串转化为基本数据类型?
int x =Integer.parseInt("232")
22、如何将日期对象进行"2011-12-10"格式化输出?如何将"2011-12-10"字符串转化为日期类型?
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
s.format(new Date());
23、javaBean规范有哪些内容?
1、必须提供公有的无参构造方法
2、属性私有+get/set访问进行访问和设置
3、该类必须实现序列化接口
24、什么是反射?
在编译时并不清楚应该加载哪个类,类的而加载是在运行期间的,可以通过反射,对类进行加载
25、如何得到Class对象?如何利用Class对象产生该类的对象?
通过类名。class方式得到模板
Class c1=Test。class
Class c3=Class。forName(类全路径)
或者
Test t=new Test();
Test t1 = new Test();
Syostem.out.print(t==t1)
System.out.print(t.getClass()==t1.getClass)
26、awt和swing有什么区别?
awt不跨平台 swing是跨平台
27、GUI常见布局管理器有哪些?
FlowLayout 流式布局,从左到右,如果到边界就换行再从左到右。
BorderLayout 边界布局(默认布局方式),按
东西南北中
五个方向来布局,默认是中。后设置在同样位置的控件会覆盖之前的控件。
GridLayout 网格布局,将容器划分成若干行列的网格,从左到右,然后从上到下。每个控件的大小相同。
28、如何进行事件的添加?
JLabel jl = new JLabel();
jl.addMouseListener(new MouseListener(){}
29、说代码执行结果
class Father{
public Father(){
System.out.println("father");
}
}
class Child extends Father{
static{
System.out.println("static");
}
{
System.out.println("object");
}
public Child(){
System.out.println("child");
}
}
class Test{
public static void main(String [] args){
Child c = new Child();
Child d = new Child();
}
}
static father object child father object child
30、class Super{
protected float getNum(){return 3.0f;}
}
public class Sub extends Super{
//Here
}
下面哪些代码可放在Here处
a) float getNum(){return 4.0f;}
b) public void getNum(){}
c) private void getNum(double d){}
d) public double Getnum(){return 4.0d;}
e) public float getNum(){return 9;}
cde
31、有一个文件S.java。
public class S {
}
class A{
public class B{
}
}
当编译S.java时,会产生几个class文件,分别是什么?
3个 s.class a.class,a$b.class
32、有这样两个类
class A{
public void getX(int x){
System.out.println("aaa");
}
}
class B extends A{
public void getX(int x,int y){
System.out.println("bbb");
}
}
class Test{
public static void main(String[] args){
B b = new B();
b.getX(1);
}
}
aaa
33、JAVA代码查错
a、
abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}
去掉abstarct 加上返回值
b、 abstract class Something {
private abstract String doSomething ();
}
Something 中的抽象方法 doSomething 只能设置可视性修饰符“公用”或“受保护”中的一个
c、public class Father{
public Father(int x){
}
}
class Child extends Father{
public Child(){
}
}
未定义隐式超构造函数 Father()。必须显式调用另一个构造函数
d、public class Father{
public void test(){
}
}
class Child extends Father{
public void speak(){
}
}
class Test{
public static void main(String[] args){
Father f = new Child();
f.speak();
}
}
Father 定义方法 speak()
e、
interface A{
int x = 0;
}
class B{
int x =1;
}
class C extends B implements A {
public void pX(){
System.out.println(x);
}
public static void main(String[] args) {
new C().pX();
}
}
字段 x 有歧义
34、说出运行结果
abstract class Base{
abstract public void myfunc();
public void another(){
System.out.println("Another method");
}
}
public class Abs extends Base{
public static void main(String argv[]){
Base a = new Abs();
a. another ();
}
public void myfunc(){
System.out.println("My Func");
}
public void another (){
super.another();
myfunc();
}
}
没错
35、说出以下代码执行结果
try{
JFrame j = null;
j.setSize(400,300);
}
catch(NullPointerException e){
System.out.println("空指针异常");
}
catch(Exception e){
System.out.println("发生异常");
}
finally{
System.out.println("finally代码");
}
System.out.println("异常外代码");
空指针异常、finally代码、异常外代码
36、说出以下代码执行结果
public class FinallyTest {
private static String str = "";
public static void foo(int x){
try{
if(x == 0){
int y = 9/0;
}
str += "1";
}catch(Exception e){
str += "2";
return;
}
finally{
str += "3";
}
str += "4";
}
public static void main(String[] args) {
foo(0);
foo(1);
System.out.println(str);
}
}
37、说出以下代码执行的结果
public class Test {
public static void main(String[] args) {
int[] strs = {1,2,3,5,7};
int sum = 0;
try{
for(int i = 0 ;i<=5;i++){
sum += strs[i];
}
System.out.println(sum);
}catch(Exception e){
System.out.println("出现异常");
}
finally{
System.out.println("finally");
}
}
}
23134
38、说出以下代码执行结果
String a = "abc";
String b = "abc";
String c = new String("abc");
String d = new String("abc");
System.out.println(a == b);
System.out.println(c == b);
System.out.println(c == d);
System.out.println(a.equals(b));
System.out.println(a.equals(d));
System.out.println(b.equals(c));
true
false
false
true
true
true
39、说出以下代码执行结果
public static void main(String[] args) {
String s = "abcd";
StringBuffer sb = new StringBuffer("abcd");
test(s,sb);
System.out.println(s+" "+sb);
}
public static void test(String s,StringBuffer sb){
s = s + "&&&";
sb.append("***");
}
}
abcd abcd***