Java 类的成员之四: 代码块(或初始化块)

  1 package com.bytezreo.block;
  2 
  3 /**
  4  * 
  5  * @Description   类的成员之四: 代码块(或初始化块)
  6  * @author Bytezero·zhenglei!        Email:420498246@qq.com
  7  * @version
  8  * @date 上午8:56:22
  9  * @   1.代码块的作用:用来初始化类,对象
 10  *     2.代码块如果有修饰的话 只能用static
 11  *     3.分类:静态代码块 vs 非静态代码块
 12  *     
 13  *     4.静态代码块
 14  *        >内部可以有输出语句
 15  *        >随着类的加载而执行,而且只执行一次
 16  *        >作用:初始化类的信息
 17  *        >如果一个类中定义了多个静态代码块,则按着声明的先后顺序执行
 18  *        >静态代码块的执行要优先于非静态代码块
 19  *        >静态代码块内只能调用静态的属性,静态的方法,不能调用非静态的结构
 20  *     
 21  *     
 22  *     
 23  *     5.非静态代码块
 24  *        >内部可以有输出语句
 25  *         >随着对象的创建而执行
 26  *        >每创建一个对象,就执行一次非静态代码块
 27  *        >作用:可以在创建对象时,对对象的属性等进行初始化
 28  *        >如果一个类中定义多了非静态代码块,则按照声明的先后顺序执行
 29  *        >非静态代码块内可以调用静态的属性,静态的方法,或非静态的属性,非静态的方法
 30  *  
 31  *  
 32  *  
 33  *  总结:由父及子   静态先行
 34  *  
 35  *  对属性可以赋值的位置:
 36  *   1.默认初始化
 37  *   2.显示初始化
 38  *   3.构造器中初始化
 39  *   4.有了对象以后,可以通过“对象.属性”或“对象.方法”的方式,进行赋值
 40  *   5.在代码块中赋值
 41  *   
 42  *   
 43  *  
 44  */
 45 public class BlockTest {
 46     public static void main(String[] args) {
 47         
 48         String desc = Person.desc;
 49         System.out.println(desc);
 50         Person.info();
 51     
 52         
 53         Person p1 = new Person();
 54         Person p2 = new Person();
 55         
 56         System.out.println(p1.age);
 57     }
 58     
 59     
 60 }
 61 
 62 
 63 class Person
 64 {
 65     //属性
 66     String name;
 67     int age;
 68     static String desc = "我是一个帅哥!";
 69     
 70     //构造器
 71     public Person()
 72     {
 73         
 74     }
 75     public Person(String name,int age)
 76     {
 77         this.name = name;
 78         this.age = age;
 79     }
 80     
 81      
 82     
 83     
 84     //  static 代码块 or 静态代码块
 85     static
 86     {
 87         System.out.println("hello ---1 , static block---静态的属性或方法,随着类的"
 88                 + "加载而加载");
 89         
 90         desc = "我是一个爱学习的人1";
 91         //调用静态结构
 92         info();
 93         
 94         ///不能调用非静态结构
 95         //eat();
 96         
 97     }
 98     
 99     static
100     {
101         System.out.println("hello ---2 , static block---静态的属性或方法,随着类的"
102                 + "加载而加载");
103     }
104     
105     //非静态代码块
106     {
107         System.out.println("hello block ---- 1");
108         age = 1;
109         
110         //调用静态结构
111         desc = "我是一个爱学习的人2";
112         info();
113         //调用非静态结构
114         eat();
115     }
116     
117     {
118         System.out.println("hello block ---- 2");
119         
120     }
121     
122     
123     
124     
125     //方法
126     public void eat()
127     {
128         System.out.println("吃饭");
129     }
130     @Override
131     public String toString() {
132         return "Person [name=" + name + ", age=" + age + "]";
133     }
134     
135     public static void info()
136     {
137         System.out.println("我是一个大大大大大大的帅哥");
138     }
139     
140     
141 }

 

posted on 2021-10-04 10:39  Bytezero!  阅读(55)  评论(0编辑  收藏  举报