static 方法

来源:互联网 发布:api最新原油数据 编辑:程序博客网 时间:2024/04/29 03:22
静态方法是使用公共内存空间的,就是说所有对象都可以直接引用,不需要创建对象再使用该方法。 
例如,我创建一个类,里面有一个静态方法: 
class Test{ 
public static int z(int xx,int yy){ 
return xx+yy; 

public int zz(int xx,int yy){ 
return xx+yy; 


然后在含有main方法的类中使用这个类时,对与以上非静态和静态方法的引用方式是不同的,如下: 

import Test; 
public class mainClass{ 
int sum; 
public static void main(String args[]){ 

sum=Test.z(1,2); //直接用 类.方法或者属性就可以使用该方法或属性。 

System.out.println(sum); 
Test t=new Test(); 
sum=t.zz(1,2); //因为zz不是静态方法,所以只能只能用Test类创建一个t对象,然后调用该对象的方法。 
System.out.println(sum); 


ls他们说的也是有道理的,静态方法只能被静态方法调用。

————————————————————————————

静态变量在方法区。当类被加载的时候就被加载了,而实例变量依附于实例,就是说属于某个实例,实例变量在堆区。静态变量被所有成员共享,在内存中只有一个。而实例变量属于某个实例。 比如 class aaa{ static int a=1; int b=0; aaa(){ a++; b++;} public static void main(String args[]){ aaa x=new aaa(); aaa y=new aaa(); System.out.println(a); System.out.println(y.a); System.out.println(x.b); System.out.println(y.b); System.out.println(new aaa().b); System.out.println(a);}}每创建这个类的实例的时候,都会先调用构造方法,a在内存中的方法区,被所有实例共享,创建了两个实例,执行了两次构造方法,所以a 和y.a以及x.a都是一样的结果。

0 0