java中静态方法和非静态方法的区别
2017-06-24 11:35
316 查看
在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。
main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。
静态方法声明必须有static,调用时使用类名+.+静态方法名的方式。
非静态方法不能使用static关键字,调用时需初始化该方法所属类。
静态方法与非静态方法的本质区别:静态方法在程序初始化后会一直贮存在内存中,不会被垃圾回收器回收,非静态方法只在该类初始化后贮存在内存中,当该类调用完毕后会被垃圾回收器收集释放。
4000
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。
main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用。
静态方法声明必须有static,调用时使用类名+.+静态方法名的方式。
非静态方法不能使用static关键字,调用时需初始化该方法所属类。
静态方法与非静态方法的本质区别:静态方法在程序初始化后会一直贮存在内存中,不会被垃圾回收器回收,非静态方法只在该类初始化后贮存在内存中,当该类调用完毕后会被垃圾回收器收集释放。
4000
相关文章推荐
- Java实例说明 静态方法和非静态方法的区别
- java中覆盖静态方法和非静态方法的区别
- 【java】synchronized修饰静态方法和非静态方法的区别
- java中静态方法和非静态方法覆盖的区别
- Java中synchronized用在静态方法和非静态方法上面的区别
- java中静态方法和非静态方法覆盖的区别
- java中静态方法和非静态方法覆盖的区别
- Java中静态方法和非静态方法的区别
- (4.1.27.10)Jni回调java静态方法和非静态方法
- C++通过jni调用java静态方法和非静态方法
- java中 静态方法和非静态方法的调用
- C#中静态方法和非静态方法的区别
- 实例说明java中覆盖静态方法和非静态方法的不同
- java静态方法和实例方法的区别
- java中静态方法和非静态方法调用的一点小困扰,已解决。
- java调用静态方法和非静态的方法
- 浅析C#中静态方法和非静态方法的区别
- java学习——静态方法和非静态方法
- C#中静态方法和非静态方法的区别(二)
- java中静态方法和非静态方法的存储