一、static
静态就是不需要实例化的,不需要连接对象的方法和变量。
非静态成员又称实例成员,必须作用于实例。
在程序刚开始运行的时候,未建立任何实例,因此无法调用实例成员,包括非
静态的 方法。
为了能够在程序的开始执行 方法,必须将其声明为静态,因为该方法是
虚拟机调,而 虚拟机没实例。
静态方法若想调用非静态方法,必须先 new 一个对象,然后用对象点出来的
非静态方法方能正常运行。
方法属于类,非 的方法属于具体的某一实例。运行 方法不
需要实例,而运行非 方法则必须 一个实例,如果在 方法中
调用非 方法,而实例此时并未被 出来,它当然就会报错。 从面向
对象的角度来理解, 方法对某一类所有实例所共有的方法,是共同的行
为特点,与具体的实例特征无关;而非 方法是该类某个具体的实例的一
种行为,设计非 类就是考虑到各个实例之间行为是有可能不相同的,如
果在 方法中调用非 方法就是把特殊的行为当成一般行为来用,所
有实例在这个非 方法上行为都一样了,这当然不行。
简单点说没有 修饰的方法,在调用的时候需要先创造对象 类名 对
象名类名()对象名方法名()有 修饰的方法,在调用的
时候直接调用 类名方法名也就是说: 没有 修饰的,它们在生成的时
候,就属于对象。 有 修饰的,它们在生成的时候,就属于类。 方
法是 自带的,我们创建它的时候,就已经注定了它的必然性——静态方法。
在静态方法中,只能访问静态的变量,还有静态的其他方法。
表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以
形成静态 代码块,但是
语言中没有全局变量的概念。
被 修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它
不依赖类特定的实例,被类的所有实例共享。只要这个类被加载, 虚拟机
就能根据类名在运行时数据区的方法区内定找到他们。因此, 对象可以
在它的任何对象创建之前访问,无需引用任何对象。
用 修饰的 成员变量和成员方法本质是全局变量和全局方法,当
声明它类的对象市,不生成 变量的副本,而是类的所有实例共享同一个
变量。