|
Posted on
2019-01-28 13:17
RonnieOS
阅读( 100)
评论()
编辑
收藏
举报
- 类如果没有构造函数可能会让一些成员变量暂时没有值。
- 可以有与类同名的方法,这个方法可以不是构造函数。其中的区别就在于,是否有返回类型,构造函数是没有返回类型的。
- 构造函数不会被继承,但会一层层去执行父类构造函数。
- 只有在你完全没有写构造函数时,编译器才会帮你补一个无参的默认构造函数,而当你写了一个构造函数之后,编译器就不会帮你补了,这个时候你必须自己去写这个无参的默认构造函数。
- 包含相同类型参数但顺序不同的两个函数是可以重载的。
- 实例变量在对象中,而对象位于堆中,因此实例变量也是在堆上的。
- 由6可知,若实例变量是对一个对象的引用,则这个引用,和被引用的对象都在堆上。得出一条结论:并非所有的引用都位于栈区。
- 如果程序员不在子类构造函数开头写super(),编译器会帮你补上一个无参版本。
- 构造函数从底向上一层层调用,但是确是由上往下先后完成的。每个子类构造函数第一步都是调用它父类的构造函数。
- 从某个构造函数可以调用重载版的另一个构造函数。每个构造函数只能选择super()或者this()中的一种作为其第一行。
- this()只能用在构造函数中,且只能在第一行
- Life和Scope的区别:Life是声明周期,只要堆栈块存在,变量就是活的。Scope是作用域,局部变量的作用范围只限于声明它的方法内。
- 只要有活着的引用,对象就活着。
- 有三种方法可以释放对象:其唯一引用永久性离开它的范围(声明周期结束),唯一引用被赋值到其他对象,直接将唯一引用置为null。
- 静态方法无法使用非静态的成员变量。
- 静态方法也无法调用非静态的方法,因为非静态的方法可能会依赖于成员变量。
- 静态变量是共享的,同一类的所有实例共享一份静态变量。
- 私有化构造函数的用途:可以实现单例模式。如果想要在返回对象引用之前做一些额外的工作或者想记录到底创建了多少个对象(可能要限制其数量),用私有构造函数加上静态的成员函数的方法是大有裨益的。
- 静态变量会在类的任何静态方法执行之前被初始化,也会在类的任何对象创建前初始话。
- 静态初始化程序是一段在加载类时会执行的程序代码,它会在其他程序可以使用该类之前就执行,所以适合放静态final变量的初始化程序。因此静态final变量有两种方法能够初始化,一是声明的时候直接初始化,二是在static初始化程序块中初始化,除此之外,都会被编译器判断为错误。
- final变量代表不能改变它的值;final的method代表你不能覆盖掉该method;final的类代表你不能去继承它,也就是说它不可以有子类。
- JAVA5.0以后的autoboxing能够自动地将primitive主数据类型转换成包装过的对象,也可以自动反向转化。
- 为什么不能直接指定ArrayList<int>呢?因为generic类型规则是只能指定类或者接口,ArrayList<int>无法通过编译。
- String.format格式化说明最多有五个部分(不包含%),除了%之外,type是唯一的必填项 %[argument number][flags][width][.precision]type 其中width是最小字符数而非总数。
- Java的format参数个数可以很多,实际上这是Java的一种功能--可变参数列表(varable argument list,简称vararg)
- 无法取得抽象类的实例,但是可以通过静态函数取得其子类的实例。
|