java几个easy出错的小程序

时间:2023-03-09 00:55:15
java几个easy出错的小程序

把基本知识过了一遍,发现了几个自己easy 出错的小程序,记录下来。。

。。

1。关于try-catch异常

2,JAVA中的自省机制

3。有继承关系的类中静态函数

1,关于try-catch异常

package chapter5;
public class p101 {
public static void main(String args[])
{
int a[]=new int[3];
try{
a[0]=1;
a[1]=2;
a[2]=3;
a[3]=3/0;
}catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("index out of bounds!");
e.printStackTrace();
}catch(ArithmeticException e)
{
System.out.println("divided by zero!");
}
}
}

输出结果为:divided by zero!

首先运行的是:赋值语句右边的3/0;所以捕获的是       ArithmeticException异常

2,java中的自省机制

自省是软件分析自己的能力,这个能力由java.lang.reflect包中的类和接口提供。

为了实现自省操作。另一个类必须使用,即Class类。 Class 类定义在java.lang包中,Class类没有public的构造函数。java虚拟机会构建Class对象。通过forName方法能够获得这个对象。

自省功能不仅能够获得系统自带的类的各种信息(Class c=Class.forName("java.lang.Class"); 也能够获得程序猿自定义的类的各种信息。

package chapter12;
import java.lang.reflect.*; class myc{
public int x,y;
public myc()
{
x=y=0;
} public myc(int a,int b)
{
x=a;y=b;
} }
public class p275 {
public static void main(String args[])
{ try{
System.out.println("123");
myc a=new myc();
Class c=a.getClass(); Constructor con[]=c.getConstructors(); for(int i=0;i<con.length;i++)
System.out.println(con[i]);
}
catch(Exception e)
{
System.out.println("Exception"+e);
}
}
}

运行结果:

123
public chapter12.myc()
public chapter12.myc(int,int)

3。程序的输出结果:

public class p37_1 {
public static void main(String args[]){
Father father=new Father();
Father child=new Child();
System.out.println(father.getName());
System.out.println(child.getName());
}
} class Father{
public static String getName(){
return "father";
}
} class Child extends Father{
public static String getName(){
return "son";
}
}

输出:

Father Father

这两个getName方法时静态方法。所以在内存中的地址是固定的,根本不存在冲突的问题。

详细运行哪一个。要看是由哪个类来调用的,由于是静态方法,并且两个引用都是father的。所以仅仅会调用father的方法。