定义属性:
static在使用上可以声明属性、方法;
一旦在属性上使用了static之后,那么只要有一个对象对他的属性进行修改之后,其他对象的这个属性也会随之修改,该属性(保存在全局数据区)变成了一个公共属性,static 实际上是为了保存一个重复多次的属性,避免浪费无用的空间。所以由具体某一个对象去修改这个属性不太合适,可以利用这个属性所在的类去修改该属性。
static声明的属性和普通属性(非static属性)最大的区别在于保存的内存区域不同;所有的非static属性必须产生实例化对象之后才可以使用。但是static不受实例化对象的影响,也就是说,可以没有实例化对象进行输出;
static属性的一个特征:虽然定义在类结构里面,但是不受到对象的控制,是独立于类存在的。
什么时候使用static?什么时候不使用?
- 编写程序的时候,首要使用的修饰符一定不是static,如果需要描述共享信息的时候使用static(可以方便集体修改,可以不重复开辟空间)
- 一个类里面没有任何的属性存在,只有方法,建议将所有的方法都定义为static,这样就不用在每次调用的时候都实例化对象了。
定义方法:
static虽然定义在类结构里面,但是不受到对象的控制,是独立于类存在的。但是会出现一个问题,此时类中的方法变成了两种:static方法、非static方法。两组方法间的访问也将会收到限制:
- static方法不能直接访问非static属性或方法,只能调用static属性或方法;
- 非static方法可以直接访问static属性或方法,不受任何限制;
为什么会存在以上的限制?
- 所有的非static定义的结构,必须在类已经明确产生实例化对象才会分配堆内存空间
- 所有的static定义的结构,不受实例化对象的限制,可以没有实例化对象时访问
主方法:
- public(公共):主方法是程序的开始,所以这个方法对于任何操作都是可见的;
- static:证明此方法是由类名称调用的;
- void:主方法是一切执行的开始点,既然是所有的开头,那么就不能回头,直到执行完毕;
- main:是一个系统规定好的方法名称,不能修改;
- String args[]:指的是程序运行时传递的参数;