java私有静态方法

一、private static      

     我们都知道想要保护一些数据,只要设置为private,并且在java中static多少有“共享”的意味存在,那么既然已经private了,为什么还要static?
       编译器对标记为静态的函数无需检测this指针是否为空,有时候这样的检测会对性能敏感的应用产生影响。说的比较笼统,其实原因是对非静态函数来说,都会默认传递第一个this参数,就是this地址,调用的时候会首先压入栈;如果是静态函数,this指针的入栈这一步就免了。

      虽然java是先编译成class文件后解释执行在jvm上面的,但是在方法执行过程方面,其实与c,c++没有很大的差别,java在class文件中留有专门的位置表示this。其实和算法、IO访问、数据库和网络访问等比起来简直就是微乎其微,后几项对性能的影响可能是十倍甚至百倍的。

      如果你的私有函数没有访问类里面的其他参数和方法,又被频繁调用,那就把他设为private static吧,没有什么坏处哦。其实JDK的源码里面,也有大量使用私有静态方法。

二、private static与public static的用法及区别

    其实,理解这两者的区别并不难,因为(public、private)和static这两种修饰符的作用本就不同,所以要理解两个的区别,其实就是这两种修饰符效果累加起来之后的区别。

      static:静态修饰符,被static修饰的变量和方法类似于全局变量和全局方法,可以在不创建对象时调用,当然也可以在创建对象之后调用。常见的可以用于工具类的工具方法中等,譬如:Math类中的绝大多数方法都是静态方法,他们扮演了工具方法的作用。

      public:声明当前被修饰的对象、方法、变量为公有的。这里的公有指的是可以被公有访问,你可以使用这个类所有的可见的东西都是被声明为public的,公有可见且公有可被访问的。

     private:声明当前被修饰的变量、方法为私有的。这里的私有指的是仅仅可以被私有访问,你在使用这个类时那些私有的东西的确有但是你访问是非法的方法或者变量是被声明为private的,私有不可见且不可访问的。

      所以,被private static修饰的属性只能被本类中的方法(可以是非静态的)调用,在外部创建这个类的对象或者直接使用这个类访问都是非法的。被public static修饰的属性除了可以被静态方法和非静态调用之外,还可以直接被类名和外部创建的对象调用。

三、总结

      private static是合法的,且有着其独到的用处:为静态方法提供私有静态属性。public static常用的是为该类提供对外暴露即可以被类名直接调用的静态常量。


 

猜你喜欢

转载自blog.csdn.net/laomumu1992/article/details/84972959