您的位置:首页 > 编程语言 > Java开发

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对象的顺序

普通成员属性,先都初始化为默认值,然后依次初始化

调用构造器

注意:以下代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java think in java