Java编程思想学习笔记——内部类、异常

1. 内部类在另一个类中定义,可以是public,private,protected等修饰符,当创建一个内部类对象时,外部类会传一个指针给它。因此,内部类中能不受限制地使用外部类的所有属性及方法,这与c++的嵌套类不同。

2. 用外部类名如Outer加上.this可以在内部类中获得外部类的一个对象,如OuterClass.this;如果用外部类对象如outer新建内部类对象时,语法是:Outer.Inner inner=outer.new Inner();注意.new的使用。

3. 与普通内部类相对应的是静态内部类(嵌套类),也就是用static修饰的内部类。它不需要外部类对象的this指针,因此也不能访问外部类对象的成员。迭代器模式就是内部类实现的,iterator()返回实例。

4. 内部类的定义还可以放在类的方法和作用域内,离开了方法或作用域便不可再用。

5. 匿名内部类。其类名与接口/父类名一样。匿名内部类在表达式中或在一个语句中用,在实现父类/接口时,定义一个该类的实例,因此复用程度有限。一般用于图形界面编程的事件处理函数等。

6. 编译过后的.class文件,若文件名为XXX$XXX.class,便是内部类的class文件。

7. finally{...}中的语句一定会执行,即使在try块中使用了return。

8. Java中的异常有两种,checked Exception和unchecked Exception(也称RuntimeException),前者需要进行异常声明,因此执行这些方法时需放在try块中,后者则不需要声明,也不必放在try块中,是运行时错误。NullPointerException就是后者的子类,运行时错误会一层层往上抛(因为没有catch块),这样可以防止用户去处理异常时不慎忽略了异常消息。

9. Java(内存)体系结构分三部分:类装载器,执行引擎,运行时数据区。其中运行时数据区分为:

(1)方法区和栈区。所有线程共享,类的静态变量同样放在方法区。

(2)Java栈和PC寄存器。由线程共享。

(3)本地方法栈。存本地方法(如c语言等写的代码)调用的状态。

10. 如果有复杂的字符串处理,最好用StringBuilder,因为String效率低。

11. StringBuffer是JDK1.5之前的,线程安全,开销比StringBuilder大点。StringBuilder是JDB1.5之后引入的。

12. 不要试图在toString方法中打印或以字符串形式引用对象的this指针,因为它会调用this的toString方法,导致递归死循环。

13. Java中也有c风格的printf。具体使用为System.out.printf("%s",str);或System.out.format("%s",str);其中%s,%d等也可以加格式化说明如%5d等完全的c风格。其转换工作其实由java.util.Formatter类处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值