有哪些做微博长图网站,网站开发费用是否资本化,WordPress点击弹出评论,刷题网站建设java 关键字static 详解一、 static代表着什么在Java中并不存在全局变量的概念#xff0c;但是我们可以通过static来实现一个“伪全局”的概念#xff0c;在Java中static表示“全局”或者“静态”的意思#xff0c;用来修饰成员变量和成员方法#xff0c;当然也可以修饰代码…java 关键字static 详解一、 static代表着什么在Java中并不存在全局变量的概念但是我们可以通过static来实现一个“伪全局”的概念在Java中static表示“全局”或者“静态”的意思用来修饰成员变量和成员方法当然也可以修饰代码块。Java把内存分为栈内存和堆内存其中栈内存用来存放一些基本类型的变量、数组和对象的引用堆内存主要存放一些对象。在JVM加载一个类的时候若该类存在static修饰的成员变量和成员方法则会为这些成员变量和成员方法在固定的位置开辟一个固定大小的内存区域有了这些“固定”的特性那么JVM就可以非常方便地访问他们。同时如果静态的成员变量和成员方法不出作用域的话它们的句柄都会保持不变。同时static所蕴含“静态”的概念表示着它是不可恢复的即在那个地方你修改了他是不会变回原样的你清理了他就不会回来了。同时被static修饰的成员变量和成员方法是独立于该类的它不依赖于某个特定的实例变量也就是说它被该类的所有实例共享。所有实例的引用都指向同一个地方任何一个实例对其的修改都会导致其他实例的变化。public class User {private static int userNumber 0 ;public User(){userNumber ;}public static void main(String[] args) {User user1 new User();User user2 new User();System.out.println(user1 userNumber User.userNumber);System.out.println(user2 userNumber User.userNumber);}}------------Output:user1 userNumber2user2 userNumber2二、 怎么使用staticstatic可以用于修饰成员变量和成员方法我们将其称之为静态变量和静态方法直接通过类名来进行访问。ClassName..propertyNameClassName.methodName(……)Static修饰的代码块表示静态代码块当JVM装载类的时候就会执行这块代码其用处非常大。(对于代码块的使用这几天介绍敬请关注)2.1、static变量static修饰的变量我们称之为静态变量没有用static修饰的变量称之为实例变量他们两者的区别是静态变量是随着类加载时被完成初始化的它在内存中仅有一个且JVM也只会为它分配一次内存同时类所有的实例都共享静态变量可以直接通过类名来访问它。但是实例变量则不同它是伴随着实例的每创建一个实例就会产生一个实例变量它与该实例同生共死。所以我们一般在这两种情况下使用静态变量对象之间共享数据、访问方便。2.2、static方法static修饰的方法我们称之为静态方法我们通过类名对其进行直接调用。由于他在类加载的时候就存在了它不依赖于任何实例所以static方法必须实现也就是说他不能是抽象方法abstract。Static方法是类中的一种特殊方法我们只有在真正需要他们的时候才会将方法声明为static。如Math类的所有方法都是静态static的。2.3、static代码块被static修饰的代码块我们称之为静态代码块静态代码块会随着类的加载一块执行而且他可以随意放可以存在于该了的任何地方。三、 Static的局限Static确实是存在诸多的作用但是它也存在一些缺陷。1、它只能调用static变量。2、它只能调用static方法。3、不能以任何形式引用this、super。4、static变量在定义时必须要进行初始化且初始化时间要早于非静态变量。总结无论是变量方法还是代码块只要用static修饰就是在类被加载时就已经准备好了,也就是可以被使用或者已经被执行都可以脱离对象而执行。反之如果没有static则必须要依赖于对象实例。感谢阅读希望能帮助到大家谢谢大家对本站的支持