在以后进行类属性设计时,一定要首选非static属性(95%),而考虑到公共信息存储时才考虑到static属性(5%)。非static属性只能在实例化对象产生后使用,而static属性可以在没有实例化对象时调用,static属性虽然定义在类之中,但其并不受到实例化对象的控制。可以直接由类进行访问,且static属性关键字在多个实例化对象使用时访问的为同一地址,当static属性关键字发生变化时,全部对象该属性发生变化。

class student{

  private int age;

  private String name;

  static String country;

}

getter,setter方法省略

平常属性(age,name)

stu1 = new student();

stu1.setName('zhangsan')

stu1.country = 'asia'

system.out println(stu1.name)

static关键字定义属性(country)

student.country = "china"

system.out println(stu1.country)//结果为china

Static关键字方法

public  static void setcountry(String c){

  country = c;

}

注意:在程序中定义了static属性与方法后,出现两种方法分别为static方法与非static方法,而static方法只能调用static属性或static方法,而非static属性允许调用static属性和static方法。(因为static属性和方法可以在没有对象实例化时使用,而非static属性与方法只能在对象实例化后使用)

 

程序代码块:

在程序之中使用“{}”定义的结构就成为代码块,而后根据代码块出现的的位置以及定义的关键字的不同,可以将代码块分为:普通代码块,构造块,静态块,同步代码块,其中对于同步代码块是在多线程才涉及;

普通代码块:

普通代码块通常是定义在一个方法中的代码块,作用:可以在一个方法中进行一些结构的拆分,以防止相同变量名称带来的影响。

构造代码块:

构造块是定义在一个类中的。构造块在对象实例化时优先与构造方法执行。

静态块:

静态代码块主要是指使用static关键字定义的代码块,静态代码块的定义需要考虑到两种:

1.在非主类中定义静态代码块,静态代码块会优先于构造块执行,并且不管有多少个实例化对象,静态代码块只会执行一次,静态代码块的目的主要是为了类中的静态属性初始化。

2.在主类中定义静态代码块,静态代码块优先于主方法执行。