Java中this,static,super及final关键字和代码块

this:

 

  1. 可以使用this表示类中的属性------this.name=name
  2. 可以使用this强调调用的是本类的方法
  3. 可以使用this调用本类的构造方法------this();调用本类中无参构造方法
  4. 可以使用this表示当前对象(调用方法的对象)----最重要的用途

 

static:

 

  1. 声明属性---------属性则为全局变量
  2. 声明方法---------Person.setName("Tom");使用类名称调用static方法
 

final:

  1. 使用final声明的类不能有子类
  2. 使用final声明的方法不能被子类覆写
  3. 使用final声明的变量即成为常量,常量不可以修改(使用final声明变量时,要求全部的字母大写)

 

spuer:

 

  1. 调用父类的构造方法
  2. 调用父类的普通方法
  3. 调用父类的属性

 

注意点:this和super必须放在构造方法内的首行,正式这个原因,this()和super()无法同时存在一个构造方法内

 

普通代码块:直接在方法或是语句中定义的代码块

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. public class CodeDemo01{  
  2.     public static void main(String args[]){  
  3.         {       // 普通代码块  
  4.             int x = 30 ;    // 就属于一个局部变量  
  5.             System.out.println("普通代码块 --> x = " + x) ;  
  6.         }  
  7.         int x = 100 ;       // 与局部变量名称相同  
  8.         System.out.println("代码块之外 --> x = " + x) ;  
  9.     }  
  10. };  



 

构造块:直接写在类中的代码块

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. class Demo{  
  2.     {   // 直接在类中编写代码块,称为构造块  
  3.         System.out.println("1、构造块。") ;  
  4.     }  
  5.     public Demo(){  // 定义构造方法  
  6.         System.out.println("2、构造方法。") ;  
  7.     }  
  8. };  
  9. public class CodeDemo02{  
  10.     public static void main(String args[]){  
  11.         new Demo() ;        // 实例化对象  
  12.         new Demo() ;        // 实例化对象  
  13.         new Demo() ;        // 实例化对象  
  14.     }  
  15. };  

 

运行结果:

1、构造块。

2、构造方法。

 

1、构造块。

2、构造方法。

1、构造块。

2、构造方法。

 



静态代码块:使用static关键字声明的代码块

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. class Demo{  
  2.     {   // 直接在类中编写代码块,称为构造块  
  3.         System.out.println("1、构造块。") ;  
  4.     }  
  5.     static{ // 使用static,称为静态代码块  
  6.         System.out.println("0、静态代码块") ;  
  7.     }  
  8.     public Demo(){  // 定义构造方法  
  9.         System.out.println("2、构造方法。") ;  
  10.     }  
  11. };  
  12. public class CodeDemo03{  
  13.     static{     // 在主方法所在的类中定义静态块  
  14.         System.out.println("在主方法所在类中定义的代码块") ;  
  15.     }  
  16.     public static void main(String args[]){  
  17.         new Demo() ;        // 实例化对象  
  18.         new Demo() ;        // 实例化对象  
  19.         new Demo() ;        // 实例化对象  
  20.     }  
  21. };  

 

 

运行结果:

在主方法所在类中定义的代码块

0、静态代码块

1、构造块。

2、构造方法。

 

1、构造块。

2、构造方法。

1、构造块。

2、构造方法。

 

结论:

    1. 静态代码块优先于主方法执行
    2. 类中定义的静态代码块优先于构造块执行(不管多少对象产生,只执行一次)
posted @ 2016-12-30 14:44  天涯海角路  阅读(169)  评论(0)    收藏  举报