JAVA。一个类中定义了一个static的成员变量

JAVA。如果在一个类中定义了一个static的成员变量,则以下说法正确的是
如图所示,请详细解释每一个选项,错错在哪,对对在哪,谢谢

img

a,静态成员是只有一个拷贝所有实例共享,b也可以通过类名.成员名访问,c正确,d可以访问

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7668258
  • 这篇博客你也可以参考下:JAVA中static关键字(静态)的作用,以及成员变量与静态变量的区别,什么时候用static
  • 除此之外, 这篇博客: 21天学会Java之(Java SE第五篇):继承、常用的关键字、封装及权限修饰符、多态中的 static关键字 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在类中,用static声明的成员变量为静态成员变量,也称为类变量。 类变量的生命周期和类相同,在整个应用程序执行期间都有效。它有如下特点:

    1. 为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化。
    2. 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享。
    3. 一般用“类名.类属性/方法”来调用。(也可以通过对象引用或类名(不需要实例化)访问静态成员。)
    4. 在static方法中不可直接访问非static的成员。

    核心要点(参考上文this最常的用法的第三点):

    1. static修饰的成员变量和方法,从属于类。
    2. 普通变量和方法从属于对象的。
  • 您还可以看一下 迟殿委老师的Java面向对象实战进阶课程中的 static修饰符上小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    正确选项是1和2。

    解释: 1. 静态属性又称为类属性,对静态属性的访问不需要创建对象,可以直接使用类名称去访问。这是正确的。因为static成员变量不属于某个具体的对象,而是属于类的,因此访问时可以直接使用类名。 2. 静态成员变量在类加载时就已经初始化,不需要进行实例化,因此可以在没有实例化对象的情况下被访问和使用。这也是正确的。

    对于其他选项: 3. 静态成员变量可以被所有实例共享,但是不是所有实例都能修改。这一说法有待修改,因为静态成员变量可以通过类名直接进行修改。 4. 如果在静态方法内部调用非静态方法,需要先创建对象才能进行访问,否则会出现空指针异常。这一说法是正确的,因为静态方法是属于整个类的,内部无法直接调用非静态方法,需要先创建对象。 5. 静态成员变量的生命周期和整个程序的生命周期是一样的,只有程序结束时才会被释放。这一说法是正确的,因为静态成员变量在类加载时就已经初始化,只有整个程序结束时才会被销毁。

    因此,选项1和2是正确的,其他选项需要进行修改。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^