java为什么要设计静态方法?这样设计的目的是什么?

JoJo撒哇滴卡


我的理解是,如果不用static方法,那么在调用的时候,是对象引用.f。如果使用static方法,就是类名.f。前者会把对象引用作为参数传递给方法,等价于f(参数1,参数2,...,对象引用),f方法内部会对对象引用,也就是this,指向的对象进行某些操作。但是并不是每个方法都需要对象引用指向的对象进行操作,这时候用static方法就更合适,节约一点堆内存,何乐不为。


KOJJ


1.静态方法:整个类所共有的东西,就像一个家族都姓一个姓,

java类可以直接用类名点静态方法名调用

2.实例方法:是类创建的对象特有的,就像你们家有多少钱,你叔叔家有多少钱

java类要new创建对象点方法名调用

3.Stastic为静态变量,在一个类中的任何地方都可以调用,而final表示这个变量不能被修改。

静态方法属于类,和对象无关,也就是说不需要实例化可以直接使用。静态方法更像是工具类提供的工具方法,对给定参数执行固定操作,平时用的系统方法可以直接使用的就是静态方法,而scanner一类就需要自己来实例化才能使用

1 支持main函数这种机制,当然你也可以设想一个语言,没有main函数,而是你通过一个类启动,程序启动时booter默认建立这个类的一个唯一实例,然后调用其run方法,也是可以的,或者说你也可以将整个jvm的运行看做是一个唯一的对象,形式问题

2 有些东东其实并不适合用面向对象的方式搞,比如开平方,Math.sqrt(x),你可以弄成x.sqrt()这种形式,但是如果要加一个开立方方法,是不是要将所有可能输入的x都加上这个方法,那对现有库的入侵性太强,不如做成函数,把x作为输入,然后函数内部再根据x提供的接口来实现这个功能

3 和类绑定,这样每次调用就不需要new对象。Scala里面就没有静态这个概念,但是可与用object来代替

混在新时代


静态方法是属于类的,普通方法是属于对象的,外部调用静态方法可以直接用类名.方法名方式,不需要创建对象,而调用普通方法需要对象.方法名的方式,我认为这样设计的目的是程序能够更方便的调用方法,如果程序在多个地方多次调用共同的方法,就不用new很多对象了,多用于工具类。


不爱写代码的码农


最简单的一个思考:如果你每次都要有NEW一个对象然后才能调用方法,你想想反复调用的情况下你是不是写多了很多代码?

静态方法的存在说得简单点就是为了让人方法编程的。

其实从另一个角度看,别人写好的API肯定不希望由你来创建对象,而是提供接口方法给你调用就行了。


分享到:


相關文章: