Think in java-1
2016-08-02 18:56
288 查看
一、final关键字
1.修饰成员变量
如果是基本类型,则值不能变
如果是引用类型,则引用不能变
其实都是变量存储的值不能变
2.修饰方法
不能被覆盖(继承中子类不能覆盖这个方法)
可以提高效率
3.修饰类
不能被继承
还有一个用法,比较少见:
修饰形参,形参的值也不能改变
如果是基本类型,则值不能变
如果是引用类型,则引用不能变
eg:
public void foo(final int i,final String s){
i++;
s="new string";
}public class Order1 {
static Obj1 obj3 = new Obj1(4);
static {
System.out.println("STATIC初始化块调用方法");
}
{
System.out.println("初始化块调用方法");
}
static void print(){
System.out.println("static 方法");
}
Order1() {
System.out.println("order构造器");
new Obj1(3);
}
public static void main(String[] args) {
System.out.println("main方法");
new Order1();
}
}
class Obj1 {
{
System.out.println("普通初始化块");
}
static Obj1 obj1 = new Obj1(1);
static {
System.out.println("static 初始化块");
}
// Obj1 obj2 = new Obj1(2);
Obj1(int number) {
System.out.println(number+"构造器");
}
}
以上编译不通过
二、类加载顺序
当类的对象被创造,类的static域或static方法被访问,类就被加载
注意:构造器也是static的方法,虽然static没有被显示的标注出来
类被加载的时候先从上往下加载static成员属性,static初始化块
加载类的时候,如果发现有基类,先加载基类
static成员属性先都初始化为默认值,然后依次初始化
类加载后可以new对象
new对象调用构造器,构造器第一句都是调用super构造器
new对象的顺序
普通成员属性,先都初始化为默认值,然后依次初始化
调用构造器
注意:以下代码
1.修饰成员变量
如果是基本类型,则值不能变
如果是引用类型,则引用不能变
其实都是变量存储的值不能变
2.修饰方法
不能被覆盖(继承中子类不能覆盖这个方法)
可以提高效率
3.修饰类
不能被继承
还有一个用法,比较少见:
修饰形参,形参的值也不能改变
如果是基本类型,则值不能变
如果是引用类型,则引用不能变
eg:
public void foo(final int i,final String s){
i++;
s="new string";
}public class Order1 {
static Obj1 obj3 = new Obj1(4);
static {
System.out.println("STATIC初始化块调用方法");
}
{
System.out.println("初始化块调用方法");
}
static void print(){
System.out.println("static 方法");
}
Order1() {
System.out.println("order构造器");
new Obj1(3);
}
public static void main(String[] args) {
System.out.println("main方法");
new Order1();
}
}
class Obj1 {
{
System.out.println("普通初始化块");
}
static Obj1 obj1 = new Obj1(1);
static {
System.out.println("static 初始化块");
}
// Obj1 obj2 = new Obj1(2);
Obj1(int number) {
System.out.println(number+"构造器");
}
}
以上编译不通过
二、类加载顺序
当类的对象被创造,类的static域或static方法被访问,类就被加载
注意:构造器也是static的方法,虽然static没有被显示的标注出来
类被加载的时候先从上往下加载static成员属性,static初始化块
加载类的时候,如果发现有基类,先加载基类
static成员属性先都初始化为默认值,然后依次初始化
类加载后可以new对象
new对象调用构造器,构造器第一句都是调用super构造器
new对象的顺序
普通成员属性,先都初始化为默认值,然后依次初始化
调用构造器
注意:以下代码
相关文章推荐
- 现在看的《c#技术内幕》与过去看的《Think In Java》两者的比较
- [Think in Java 笔记] 静态数据(Static data)的初始化
- Think in java 答案_Chapter 2_Exercise 10
- Think in java 答案_Chapter 3_Exercise 2
- Think in patten of Java中的一道习题
- think in java 读后感(一)
- Think in java 答案_Chapter 3_Exercise 5
- Think in java 答案_Chapter 2_Exercise 8
- Think in java 答案_Chapter 2_Exercise 5
- Think in java 答案_Chapter 3_Exercise 4
- [Think in Java 笔记] Final关键字
- Think in java 学习手记(三)
- java编程规则(摘自《think in java》)
- Think in java 答案_Chapter 2_Exercise 9
- Think in java &答案_Chapter 2_Exercise 2
- [Think in Java 笔记] 构造顺序
- 读"Think in Java"后笔记(1)
- Think in java学习笔记-第4章 初始化和清除
- Think in java 答案_Chapter 2_Exercise 12
- think in java(3rd)读书笔记