一、static修饰成员变量的特点
static(静态的),它是一个修饰符,一般用来修饰成员变量,或者修饰成员方法。
作用:让类中的成员变量被多个对象所共享。
例子1
在Test1中进行测试
只在对象a中对num进行了修改,最终在对象a和对象b中同时得到了对象a修改过后的num。
例子2
在Test2中进行测试
B类中将成员变量name设置为static,在Test2中先用对象b设置name为classA,再用对象c将name设置为classB, 最终对象b、对象c的name都为classB。
B类中的num 为非static的,所以最终对象b和对象c的num值不一样。
static修饰成员变量的特点:
1、成员变量被多个对象共享(其中一个对象把静态成员变量的值改了,其余对象的静态成员变量的值也会相应改变)。
2、静态成员变量的访问可以通过类名和对象名两种调用。
3、在开发中,如果某个数据只需要一份(static修饰的成员变量又叫类变量,是属于类的,不属于任何对象,在内存中只存在一份),且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住。
4、因为使用static修饰的成员变量是所有对象共享的,所以要慎用。
二、static修饰成员方法的基本用法
当方法内部有访问类的实例成员(非static)时,必须定义为 实例(非static)方法,因为只有实例方法可以直接访问实例方法和实例变量。
当方法内部没有访问类的实例成员(非static)时,可以定义为方法静态方法(static)。
三、使用static关键字的注意事项
1、实例方法可以直接访问实例方法和实例变量。
2、实例方法可以直接访问静态变量和静态方法。
3、静态方法可以直接访问静态变量和静态方法。
4、静态方法不能直接访问实例方法和实例变量
5、静态方法不能使用this关键字。
6、静态变量、静态方法可以使用类名直接调用。
7、工具类中的方法全都是静态方法,可以使用类名直接调用。
对static关键字的理解:
类变量也叫静态变量,静态属性,是该类所有对象共享的变量,任何一个该类的对象去访问他时,取到的值都是相同的值,同样任何一个该类对象去修改他时,修改的也是同一个变量。
类变量是该类的所有对象共享的,而普通属性是每个对象独享的。
类变量是在类加载时就初始化了,也就是说,即使你没有创建对象,只要类加载了就可以使用类变量了。所以静态方法是类加载了就可以使用,而this关键字表示本类对象,是需要创建了对象的,所以和静态方法不用创建对象相矛盾,所以静态方法中不能使用this关键字。
四、静态代码块和实例代码块
代码化块又称为初始化块,属于类中的成员[即是类的一部分],类似于方法,将逻辑语句封装在方法体中,通过{}包围起来。
但和方法不同,没有方法名,没有返回,没有参数,只有方法体,而且不用通过对象或类显式调用,而是加载类时,或创建对象时隐式调用。
基本语法:
[修饰符]{
代码
};
修饰符可有可无,根据需求来。
静态代码块:随着类的加载而执行,只执行一次
实例代码块:随着对象的创建而执行,执行多次