1、静态方法的好处:不用生成类的实例(new一个对象)出来就能直接调用。即,只要通过类名就可以访问,多用于工具类Utils。
2、static关键字:表示静态的,在类加载时虚拟机就会把它放到方法区。大多使用都与final配合,表示一个常量。
被本类以及本类所以实例共用的,另外,一个方法是所有实例公共的,那么声明为static。
3、从面向对象的角度看,static失去了继承,多态.
4、工具类的来由与静态方法:由于代码重用度很高,所以会使用方法来进行封装,便于调取使用。
不需要耗费资源反复创建对象,能够节省空间,否则每个实例初始化时方法都要分配到内存,减少了不同实例调用时,对内存的开销,以及构造对象时的消耗。(这里说的开销及消耗是指实例化不同对象的所占用的不同内存,因为静态方法的好处第1项,不用new对象直接类名访问,不要和下面的方法混淆)
5、不建议使用太多,内存用的太多影响其它业务。因为在程序第一次加载的时候就已经在内存中了,直到程序结束该内存才会释放,不像非static修饰的成员在使用完之后该内存就会被回收。(公用的方法,属性,类常常用到除外)
6、方法占不占用更多内存,和它是不是static没什么关系?
无论是静态方法还是非静态方法,在内存中都只分配一份内存,也就是所占内存空间大小是一样的.但是,
因为
字段是用来存储每个实例对象的信息,所以字段会占有内存,并且因为每个实例对象的状态都不一致(即同一个类的不同对象),所以每个实例对象的所有字段都会在内存中拷贝一分,也因为这样才能区分操作的是哪个对象。
但
方法不一样,不论有多少个实例对象,它的方法的代码都是一样的,所以只要有一份代码就够了。因此无论是static还是non-static的方法,都只存在一份代码,也就是只占用一份内存空间。
7、我们为什么要把方法区分为:静态方法和实例化方法 ?
拿别人一个例子说事:
比如说“人”这个类,每个人都有姓名、年龄、性别、身高等,这些属性就应该是非静态的,因为每个人都的这些属性都不相同;但人在生物学上属于哪个门哪个纲哪个目等,这个属性是属于整个人类,所以就应该是静态的——它不依赖与某个特定的人,不会有某个人是“脊椎动物门哺乳动物纲灵长目”而某个人却是“偶蹄目”的。
8、若感觉对你有所帮助点个赞