摘要:
以下代码显示了如何获取线程的堆栈帧。Throwable对象在创建线程的点处捕获线程的堆栈。参考以下代码 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 public class Main 阅读全文
摘要:
try块也可以有零个或一个finally块。 finally块总是与try块一起使用。 语法 finally块的语法是: 1 2 3 finally { // Code for finally block } finally { // Code for finally block } finally 阅读全文
摘要:
我们可以创建自己(自定义)的异常类。它们必须扩展现有的异常类。 1 2 3 <Class Modifiers> class <Class Name> extends <Exception Class Name> { } <Class Modifiers> class <Class Name> ext 阅读全文
摘要:
异常是在没有定义正常执行路径时在Java程序的执行期间可能出现的条件。Java通过将执行操作的代码与处理错误的代码分离来处理错误。 当发生异常时,Java会创建一个包含有关异常的所有信息的对象,并将其传递给相应的异常处理代码。有关异常的信息包括异常的类型,发生异常的代码中的行号等。 try-catc 阅读全文
摘要:
如果要在一段代码中抛出一个已检查的异常,有两个选择: 使用try-catch块处理已检查的异常。 在方法/构造函数声明中用throws子句指定。 使用try-catch块处理已检查的异常。 在方法/构造函数声明中用throws子句指定。 语法 throws子句的一般语法是: 1 2 3 <modif 阅读全文
摘要:
可以在方法声明中定义类型参数,它们在方法的返回类型之前的尖括号中指定。包含泛型方法声明的类型不必是通用类型。可以在非静态方法声明中使用为泛型类型指定的类型参数。 示例 以下代码显示如何为方法m1()定义新的类型参数V。新类型参数V强制将方法m1()的第一个和第二个参数必须为相同类型。 第三个参数必须 阅读全文
摘要:
使用泛型(也叫通用),可以在不知道代码操作的对象的类型的情况下编写代码。 它允许创建通用类,构造函数和方法。泛型类是使用形式类型参数定义的。形式类型参数是一个逗号分隔的变量名列表,放在类声明中类名后的尖括号<>中。 语法 下面的代码声明一个类Wrapper,它接受一个形式类型参数: 上代码中,参数已 阅读全文
摘要:
方法隐藏 一个类从其超类继承所有非私有静态方法。在子类中重新定义继承的静态方法称为方法隐藏。子类中的重定义静态方法隐藏其超类的静态方法。在类中重定义非静态方法称为方法覆盖。关于方法隐藏的重定义方法(名称,访问级别,返回类型和异常)的所有规则与方法覆盖相同。 1 2 3 4 5 6 7 8 9 10 阅读全文
摘要:
构造函数不是类的成员,它们不是由子类继承的。它们用于初始化实例变量。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class CSuper { public CSuper() { System.out.println("Inside CSuper() cons 阅读全文
摘要:
重新定义来自超类(父类)继承的类中的实例方法称为方法覆盖。 示例 现在来看看,类A和类B的以下声明,覆盖了 print() 方法 : 1 2 3 4 5 6 7 8 9 10 11 public class A { public void print() { System.out.println(" 阅读全文
摘要:
异常类层次结构 异常类层次结构从java.lang.Throwable类开始。当抛出异常时,它必须是Throwable类的对象或其任何子类。 catch块的参数必须是Throwable类型或其子类,例如:Exception,ArithmeticException,IOException等。 可以通过 阅读全文
摘要:
内部类可以访问其所有实例成员,实例字段和其封闭类的实例方法。参考如下实例 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 class Outer { private int valu 阅读全文
摘要:
静态成员类不是内部类在另一个类的主体中定义的成员类可以声明为静态。 示例 以下代码声明了顶级类A和静态成员类B: 1 2 3 4 5 6 class A { // Static member class public static class B { // Body for class B goes 阅读全文
摘要:
可以在类中的任何位置定义内部类,并在其中编写Java语句。有三种类型的内部类。 内部类的类型取决于位置和声明的方式。 成员内部类 局部内部类 匿名内部类 成员内部类 局部内部类 匿名内部类 成员内部类 成员内部类在类中声明的方式与声明成员字段或成员方法相同。它可以声明为public,private, 阅读全文
摘要:
作为包的成员的类被称为顶级类。一个类可以在另一个类中声明。 这种类型的类称为内部类。如果在另一个类中声明的类被显式或隐式声明为static,它被称为嵌套类,而不是内部类。包含内部类的类称为封闭类或外部类。 示例 下面的代码声明一个内部类。 1 2 3 4 5 6 class Outer { publ 阅读全文
摘要:
在创建状态后无法更改其状态的对象称为不可变对象。一个对象不可变的类称为不可变类。不变的对象可以由程序的不同区域共享而不用担心其状态改变。 不可变对象本质上是线程安全的。 示例 以下代码创建了不可变类的示例。 1 2 3 4 5 6 7 8 9 public class IntWrapper { pr 阅读全文
摘要:
Java提供了一种在对象即将被销毁时执行资源释放的方法。在Java中创建对象,但是不能销毁对象。JVM运行一个称为垃圾收集器的低优先级特殊任务来销毁不再引用的所有对象。 垃圾回收器给我们一个机会,在对象被销毁之前执行清理代码。Object类有一个finalize()方法就是用于在对象被销毁之前执行清 阅读全文
摘要:
Java不提供克隆(复制)对象的自动机制。克隆对象意味着逐位复制对象的内容。要支持克隆操作,请在类中实现clone()方法。Object类中的clone()方法的声明如下: 1 protected Object clone() throws CloneNotSupportedException pr 阅读全文
摘要:
对象的字符串表示以可读格式包含有关对象状态的信息。Object类的toString()方法表示字符串中类的对象。Object类提供了toString()方法的默认实现。 它返回一个以下格式的字符串: 1 <fully qualified class name>@<hash code of objec 阅读全文
摘要:
以下代码显示如何实现equals()和hashCode()方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 4 阅读全文