zoukankan      html  css  js  c++  java
  • 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的方法。




  • 相关阅读:
    css 冷知识
    js跨域问题
    检测浏览器是否支持ES6
    新增项目到GIT仓库中
    如何正确设置统计博客园的个人博客访问量(图文详解)
    Node中包的加载机制
    图片路径中含有中文在jsp下不能正常显示的问题
    通过Xshell来访问和连接Linux
    文件下载该注意的问题
    文件上传该注意的问题
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10718974.html
Copyright © 2011-2022 走看看