static方法只跟类有关,而非static方法是于实例联系的.
把ok()改成改成非static之后就要先new一个实例才能访问.而static 方法只要类被加载就可以调用了.这也就是main为什么是static的原因之一
把ok()改成改成非static之后就要先new一个实例才能访问.而static 方法只要类被加载就可以调用了.这也就是main为什么是static的原因之一
解决方案 »
- 非常简单的java基础问题
- 程序中一个类,比如类a,有时候有a.class.xxxx,这个class起什么作用呢
- 我有java数据结构与算法的问题~高手请帮忙看看~~第一次发帖,到处询问~不好意思。
- jsp连不上 sqlserver 是什么原因
- 求教:java.awt.Component的getSize()等类似方法 在何时取用才可以得到Component的实际大小???
- 加密算法之MD5算法(引用)
- 如何设置某个jframe上面的各个控件获得焦点的顺序?——也就是tab键顺序。
- 怎么用JTable做某两列乘积,动态的该第三列的值?
- JFrame有show()这个方法吗?
- 增强for循环问题
- 怎麼把兩個數據庫連接綁定成一個連接,讓兩個不同的連接做的修改在一個事務中提交?
- 试用期的前几天会被安排做什么?(对于一个没有一点工作经验的大学生)
通常如果我们把现实中的事物映射到程序中时,我们能想到的方法都是实例方法,不存在静态方法。那到底什么是静态方法呢?
我们可以把静态方法看成支持方法或工具方法,它和对象无关,只是为了程序上的方便。与“吃饭”、“上厕所”不同,这些方法不属于“人”的任何一个个体,它们属于“人”这个抽象的东西(由于它与对象无关,所以静态方法存在的理由很少)。设想作为抽象概念的“人”的一个行为吧,它不属于任何一个人。是不是很难?这就对了,面向对象编程强调的对象,不要让类混淆了你的视线。不好意思,我也想不出作为概念的“人”的行为/方法的一个例子。但希望你已经能明白静态方法和实例方法的区别。现在你说的问题就好解释了:public static void ok(double x) 这个方法是一个静态方法(由于有static修饰符),它属于ParamTest类而不是它的任何一个对象。同样,main方法也不属于ParamTest类的任一个对象。所以在类这一概念层次上,main方法调用ok方法没问题。
现在你把ok方法的static修饰符去掉,它就变成一个实例方法了,它不属于ParamTest类,而属于ParamTest的对象。既然属于ParamTest的对象,所以就必须先有这么一个ParamTest对象才能执行ok方法。就像抽象的“人”是不会“吃饭”的,只有像“施瓦星格”、“江泽民”这样一个个具体的人才会“吃饭”。同理,在没有一个ParamTest对象时调用ok就没有意义了。噗...,讲了一大通不知说明白了没