java的static,你知多少?

static不利于对类的精细化控制

在Java中,static的变量是和class绑定在一起的,也就是说在垃圾回收的过程中,除非class被回收掉,那么static的变量不会被垃圾回收。因此,在通常情况下,为了节约内存,降低GC压力,Java应用程序中不应该存在太多的static的属性(static final的编译期常量除外,当然也不能过大)。

哪些情况可以使用静态方法?

  • 使用static方法来暴露类的构造工厂方法,比如String.valueOf(), LocalDateTime.now();
  • 方法以后不会再修改和迭代。一些工具方法比如 Math.max(),单例,工厂模式等;
  • 如果一个方法所有状态都可以封闭在栈内,变量不会逃逸到方法外(也就是说是无状态的),这样保证了方法的线程安全,所以可以使用static;

statci有什么用?

在一个类中包含域和方法;但是有了 static 这个修饰符之后,域和方法又可以再次进行更细的划分。

  • 被 static 修饰的域,称之为「类域」,不被修饰的域叫做「实例域」
  • 被 static 修饰的方法,称之为「类方法」,不被修饰的方法叫做「实例方法」
It is because the object is not required to

你可能感兴趣的:(java,java,开发语言,rpc)