java 重新学习 (四)
一。内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类中的成员之间可以相互访问。但外部类不能访问内部类的实现细节,例如内部类的成员变量。匿名内部类适合用于创建仅需要一次使用的类.
二。非静态内部类的构造器必须由外部类对象调用。 Out.In in = new Out().new In("测试信息"); 静态内部类只需要使用外部类即可调用构造器。
三。匿名内部类必须继承一个父类,或实现一个借口,但对多只能继承一个父类或实现一个借口,
通过实现接口来创建匿名内部类是,匿名内部类不能显示创建构造器,因此匿名内部类只有一个殷实的无参构造器。但如果通过继承父类来创建匿名内部类时,匿名内部类将拥有和父类相似的构造器。
四。java8之前要求被局部内部类,匿名内部类访问的局部变量(外部类方法内的便令)必须使用final修饰。但不能重新赋值。
五.枚举类:枚举类继承java.lang.Enum类,而不是继承Object类,其中父类Enum实现了Serializable,Comparable两个接口。
使用enum定义,非抽象的枚举类默认会使用final修饰,因此枚举类不能派生子类
枚举类的构造器只能使用private访问控制符,如果省略了构造器的访问控制符,则默认使用private修饰
枚举类的所有实例必须要在枚举类的第一行显示列出,否则这个枚举类永远都不能产生实例;列出这些实例时,系统会默认为它们添加public static final修饰,无需程序员显示添加。
六。垃圾回收机制回收任何对象之前,总会先调用它的finalize()方法,该方法可能使该对象重新复活(让一个引用变量重新引用该变量),从而导致来及回收机制取消回收
七。对象在内存中的三种状态
1.可达状态:当一个对象被创建后,若有一个以上的引用变量引用它,则这个对象在程序中处于可达状态;程序可以通过引用变量来调用该对象的实例变量和方法
2.可恢复状态:程序中某个对象不再有任何引用变量引用它,它进入可恢复状态,垃圾回收机制回收该对象所占内存之前,会调用所有可恢复状态对象的finalize()方法进行资源清理,如果对象被引用变量重新引用则恢复可达状态,否则进入不可达状态,系统进行真正回收;。
3.不可达状态,,如果对象没被引用变量重新引用则进入不可达状态,系统进行真正回收;。
八.System.gc()和Runtime对象的gc()实例方法:Runtime.getRuntime().gc() 强制垃圾回收方法,只是通知系统进行垃圾回收,可能出现不回收。
九.finalize()方法在object类中,所有类都可重写finalize()方法。
十。StringBuffer线程安全,StringBuilder非线程安全。
最新文章
- git远程库GitHub
- TextView使用大全
- XP之后Windows的一些变化
- BlacJack游戏
- Linux跨用户copy文件
- NodeJS中form上传附件中针对表单的multiple attribute出现的问题总结
- 夺命雷公狗---DEDECMS----11dedecms字段标签
- C线程同步/异步
- Apple Watch 使用体验
- 常用在网站上的30个jQuery插件
- Redis入门学习
- android studio gradle 两种更新方法更新
- git 命令添加整个文件夹以及文件夹下的内容
- OpenStack虚拟机冷迁移与热迁移
- vue生命周期中created和mounted的区别
- GraphQL和C#
- MySQL分区(Partition)功能
- hdu 5301 Buildings (2015多校第二场第2题) 简单模拟
- spring+springMVC+Mybatis 中使用@Transcational方式管理事务的配置方法
- 【2】【MOOC】Python游戏开发入门-北京理工大学【第三部分-游戏开发之机制(屏幕绘制机制)】