部分参考自 关于 static 关键字的一篇很好的文章:https://www.cnblogs.com/dolphin0520/p/3799052.html
1)变量:
public class ValiablesDesc { /* * 定义类变量,又称静态变量: * 1)在类中用static关键字声明,但是它在方法、构造器或者块之外; * 2)静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化 * 3)不能在方法、构造器内成名静态变量;(static是不允许用来修饰局部变量。不要问为什么,这是Java语法的规定) * 4)static成员变量的初始化顺序按照定义的顺序进行初始化。 */ public static String name = "郭晓锋"; /* * 定义实例变量,又称成员变量(instance valiable): * 1)在类中声明,但是它在方法、构造器或者块外; * 2)实例变量可以用访问描述符; * 3)实例变量有默认值。数字的默认为0,boolean的默认为false,对象引用默认值为NULL * 4)非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。 */ public String password; /* * Mutator Methods:调用方法后对象发生改变,例如StringBuilder,最常见的是字段的set方法 * Accessor Methods:调用方法后对象没有改变,例如String,最常见的是字段的get方法 */ public void fuck(String password) { /* * 定义本地变量,又称局部变量(local valiable) * 1)在方法、构造器或者块中使用,在方法、构造器或者块进入时被创建,一旦退出该变量就会被销毁 * 2)局部变量没有默认值,因此本地变量必须被声明并且在第一次使用前要给它赋值 */ String youA = "叼"; /* * password:显式参数(explicit parameter) * youA:隐式参数(implicit parameter) * 或者:this.password * 其实,想想就知道,这个东东最常用于构造器 */ String concat = this.password + youA; } // Accessor Methods public String getPassword() { return password; } // Mutator Methods public void setPassword(String password) { this.password = password; } public ValiablesDesc(String password) { super(); //左边的password:implicit parameter;右边的password:explicit parameter this.password = password; } }
2)代码块
/* * 代码块:在Java中,使用{}括起来的代码成为代码块 * * 普通代码块:类中方法的方法体 * 局部代码块:局部位置,用于限定变量的生命周期 * 构造代码块:在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。 * 静态代码块:在类中的成员位置,用{}括起来的代码,只不过它用static修饰 (注意,不在任何方法体内) * 同步代码块:使用synchronized(){}包裹起来的代码块 * * 静态代码块、构造代码块、构造方法的执行顺序:静态-》构造代码块-》构造方法 * 静态代码块:只执行一次 * 构造方法:每次调用构造方法都执行 */ public class Main2 { public static void main(String[] args) { // 局部代码块 { int x = 10; System.out.println(x); } { int y = 20; System.out.println(y); } System.out.println("---------------"); Code c = new Code(); System.out.println("---------------"); Code c2 = new Code();// 静态只执行一次 System.out.println("---------------"); Code c3 = new Code(10000); } } class Code { // 静态代码块 static { int a = 1000; System.out.println(a); } // 构造代码块 { int x = 100; System.out.println(x); } // 构造方法 public Code() { System.out.println("code"); } // 构造方法 public Code(int a) { System.out.println(a); } // 构造代码块 { int x = 200; System.out.println(x); } // 静态代码块 static { int b = 2000; System.out.println(b); } }
END!