public class A{ public static int testMethod(){
return 1;
}
}与public class A{ public int testMethod(){
return 1;
}
}假设我现在要调用方法testMethod.
public class B{ public void main(String[] args){ A.testMethod();
与
( new A()).testMethod(); 有何不同呢?}
}
希望从JVM底层解释。
return 1;
}
}与public class A{ public int testMethod(){
return 1;
}
}假设我现在要调用方法testMethod.
public class B{ public void main(String[] args){ A.testMethod();
与
( new A()).testMethod(); 有何不同呢?}
}
希望从JVM底层解释。
静态方法是可以在程序中用类名点出来的,就是说不需要实例化
但是在程序一开始就初始化好了。
但是还真不知道什么时候该用静态的。
比如我们的某个方法频繁用到?
请老紫竹赐教!再问一个:main方法为什么一定是static类型的?
多线程有问题,你难道不会自己同步啊?
或者说有问题 你不能不用static啊?没说一定要在多线程用?
即首地址确定时才能确定非静态方法的实际地址,因此非静态方法只能通过对
象进行调用。静态方法是常驻内存的,而非静态方法会跟对象一起被垃圾回收器回收掉。至于 main 方法为什么要是 static 的,这是因此 main 方法所在的类 JVM 并
不会去为它产生对象,而运行时 JVM 规定了去找 main 方法的方法指针进行定
位并运行。
只是JAVA规定非静态要对象才能调,那样调用方法时同时给的要操作的对象。
如果没个对象都有特定的方法,那不内存爆了,
如果没有static,即非静态,要先创建对象,再用对象名.方法名();
因为JVM载入一个类的时候,类的方法的代码已经是加载进来的,因此方法的代码也是保存到静态存储区了的,所以当调用对象的方法时,应该是转到静态存储区的方法的代码的首地址。
静态方法只能调用静态属性,非静态方法可以调用静态属性
static方法的地址是一定的,存储在静态存储区,
如果没有加static的方法,是不是new一个对象后,编译器会把把这个方法的代码调入内存,并分配地址??
比如Math类,还有Collections……
static方法,我用的最多的就是在单实例模式下。
我想主要是为了“共享”。一段static资源(变量,函数)可以被程序中的其它代码共享。而不加static就不一样了,不加static必须依赖某一个对象才行。所以函数加不加static就是类与对象的区别。 类是静态的,而对象则是动态的。那么我们时候用static呢?
很简单,需要共享的时候,就用static吧。