日期:2014-05-20  浏览次数:20552 次

类中用本类中的非静态方法需要对象吗
public class E07_Incrementable {
static void increment() { StaticTest.i++; }
public static void main(String[] args) {
E07_Incrementable sf = new E07_Incrementable();
sf.increment();//1
E07_Incrementable.increment();//2
increment();//3
}
}


这3种方法  第3种是不是可以代替前2种

------解决方案--------------------
不需要
可以
------解决方案--------------------
(1)完全没必要
静态方法和属性不需要通过实例调用,在生成实例之前就已经加载到内存里了
(2)(3)或者通过this调用效果都是一样的
但是个人习惯用this,觉得可读性更强,且Eclipse会有自动补全功能,小小的提高一点效率
之前看过一片文章,专门批判滥用this的,楼主如果求甚解可以baidu一下
编码习惯的问题,应该理解“为啥”以后再记,不然背很多所谓“好习惯”感觉对个人提高也没啥帮助
------解决方案--------------------
我能吐槽一下么?标题里明明是非静态方法,然后例子中加了static。
静态的方法不需要实例化就可以调用。虽然对象也可以调用静态方法,但是不推荐。
------解决方案--------------------
可以,3就ok了.
------解决方案--------------------
如果在本类中调用,可以直接按3号方式写。

如果在其他类中调用,就按2号方式写。

但为了代码便于阅读。无论哪里,建议都用2号方式写。即:类名.静态方法

绝对不要用1号方式来写。理由,静态方法属于类的。虽然java支持。
------解决方案--------------------
静态方法是属于类的,跟对象无关,LZ可以了解一下虚拟机加载类的过程。
------解决方案--------------------
可以的,百度下……