class ExceptionRaised {     /** 构造函数。 */
     protected ExceptionRaised() {
     }    /**
     * 这个方法生成一个异常。
     * @param operand1 是除法中的分子
     * @param operand2 是除法中的分母
     * @return 它将返回除法的余数。
     */
    static int calculate(final int operand1, final int operand2) {        int result = operand1 / operand2;     // 用户自定义方法
        return result;
    }
}
/**
  * 这是 main 类。
  *
  */public class ArithmeticException {     //就是这个类。    /** 构造函数。 */
    protected ArithmeticException() {  
    }    /**
     * 唯一的条目指向类和应用程序的唯一进入点。
     * @param args 字符串参数的数组。
     */
public static void main(String[] args) {    ExceptionRaised obj = new ExceptionRaised();   try {        /* 定义变量 result 以存储结果。 */
        int result = obj.calculate(9, 0);        System.out.println(result);    } catch (Exception e) {     // 异常对象    System.err.println("发生异常:" + e.toString());    e.printStackTrace();
    }
}
}
上面的ArithmeticException类在java的api当中已经被定义了,为什么在这里还可以使用呢?而且编译也能通过,还能执行。它是不是把long包中的ArithmeticException类给覆盖了呢?

解决方案 »

  1.   

    ArithmeticException是long包当中的成员。
    如果没有使用package创建包的话那么所创建的类不就是在long包中吗?
    如果这样不就和long包中的ArithmeticException冲突了吗?
      

  2.   

    错了,应该是lang包。我敲错误了。
      

  3.   

    "如果没有使用package创建包的话那么所创建的类不就是在long包中吗?"
    ????真的吗? 谁说的
      

  4.   

    如果真这样的话,sun 的 jdk 不是随随便便就被你加了一个类或者n你自己的类了吗,jdk 还是 sun 的 jdk吗?
      

  5.   

    那么如果没有使用package的话,创建的类是在哪个包中?
      

  6.   

    为了唯一标识每个类并分组,java使用了package的概念。每个类都有一个全名,例如ArithmeticException的全名是java.lang.ArithmeticException,其中java.lang是包名,ArithmeticException是短名。这样,如果你也定义了ArithmeticException,你可以把它放在mypackage中,通过使用全名mypackage.ArithmeticException和java.lang.ArithmeticException来区分这两个类。如果你没有声明任何package
    你的类被认为放在默认包中。
    这时全名和短名是一致的。
    同一个包底下不能有同名类的,这个不要再怀疑了。
      

  7.   

    就是没有包名,编译成class时,不会建立包目录。在有的IDE里,创建一个类,如果不给一个包名,会自动建个default package,用过eclipse的朋友都知道。 "默认包名"大概由此得来,其实他什么事情也没做,没有建立包目录。
      

  8.   

    怎么可能哦  Java区分大小写 可能是字段的问题 这包的字段 
      你在看看
      

  9.   

    如果没有用package打包的话,那么该程序编译后,生成的类文件会在当前目录下