java静态方法与非静态方法有什么区别

如题所述

静态方法可以直接用类名点出来方法,而普通方法需要创建类的对象后才能调用!
静态的方法和变量会调用时在内存生成一个唯一的标示,你可以理解成在物理内存中给静态一个位子,这样的话在调用的时候可以直接找到,而且会节省内存,但是如果你声明的静态过多的话那么每一个都会在内存有一个位子,那么你就没有资源运行别的,会报内存溢出!
普通方法是由java的gc机制来控制,可能同一个对象或变量在使用的过程中,这个时间的在内存占了一个位子,而上个时间的还没有从内存中删除,这样的话就可能有2个一样的在内存中,这个2个一样东西只是内容值一样,但是内存值不一样,你可以用"=="和"equals"来查看(这个只适用对象和String类型).java的gc机制会根据运行时的内存状态来自动清除一些用不到变量或对象,就算你手动调用gc也是一样的!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-31
静态方法 调用 类名.方法名 。里面不能有非静态对象
非静态方法 调用要把类new 一下,在调用
第2个回答  2013-08-31
静态方法在执行的时候就会分配内存,所以说直接用类名“.”方法名进行调用。
而非静态方法则需要声明一个对象进行调用。
第3个回答  2013-08-31
楼上的已经说清楚了,静态方法是你在调用时可以不声明对象就来进行调用。直接通过类名加上方法名来。
而动态方法必须通过具体的对象才可以进行使用。就这样。
第4个回答  2013-08-31
运行错误?一般错误?错误好像是不分类的吧,错误一般是通不过编译的,eg:在eclipse中编程时,如果调的是自动编译,每次出现红线或者出现红叉时 那个就叫做错误。我感觉你说的应该是异常: 异常分为运行时异常和受检测异常,运行时异常是系统运行时发出的异常,程序员控制不了的,这类异常不需要try,catch和throws exception语句,是由java虚拟机抛出的,并且自动捕获抛出的main方法中,我们不能对这个异常进行处理,它会直接终止程序。一般遇到的就是空指针异常,数组越界异常等,这些异常一般是我们可以在前台控制台可以看到的,相信你也看到过吧。受检测异常指的就是我们可以处理的异常,我们可以通过try catch语句捕获并且处理(也可以不处理直接向上层抛出),处理之后程序还可以继续执行,不会终止程序,如果每一层都每一处理,则会终止程序。希望你看了后能有所收获。(提示:其实异常和错误都继承了Throwable这个类,至于细致的你自己看看书)
相似回答