在以后进行类属性设计时,一定要首选非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.在主类中定义静态代码块,静态代码块优先于主方法执行。