Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在声明变量时使用static_Java_Static - Fatal编程技术网

Java 在声明变量时使用static

Java 在声明变量时使用static,java,static,Java,Static,我想问一下static:我创建了一个类music,并在声明我的music类变量时使用了static。但是当我运行我的主类来打印音乐数据时,它总是从我在主类中输入的最后一个数据中打印出相同的值 我的班级音乐: private static String name, genre; private static int price; public music(String a, String b, int c){ name = a; genre = b;

我想问一下
static
:我创建了一个类
music
,并在声明我的music类变量时使用了
static
。但是当我运行我的主类来打印音乐数据时,它总是从我在主类中输入的最后一个数据中打印出相同的值

我的班级音乐:

private static  String name, genre;
private static  int price;   

public music(String a, String b, int c){
        name = a;
        genre = b;
        price = c;
    }
我的主要班级代码:

music a1 = new music("A","A",1);
        music a2 = new music("B","B",2);
        music a3 = new music("C","C",3);
        music a4 = new music("D","D",4);

        System.out.println(a1);
        System.out.println(a2);
        System.out.println(a3);
        System.out.println(a4);
我的输出:

Music[Nama = D, Genre = D, harga = 4]
Music[Nama = D, Genre = D, harga = 4]
Music[Nama = D, Genre = D, harga = 4]
Music[Nama = D, Genre = D, harga = 4]

我知道如何修复它-我只需要从变量声明中删除
static
,但我想知道为什么
static
会产生如此大的差异,并使我的代码出错。

静态变量属于类,而不是类的单个实例。因此,更新该静态成员的类的所有实例都在更新同一个变量并相互重写。

静态
变量都是类变量,只有一个实例。在您的情况下,它们将更新的值作为您的替代值


要使用传递给构造函数的值获得结果,需要使用不同的对象实例化该类,因此从变量中删除static关键字

我想您还没有读过关于该类的静态实例的内容。只要读一读关于静态的短文就知道了 首先阅读静态关键字

静态变量将有一个副本从系统中抛出。并且该实例将只存在一个副本


稍后,您可以修改它,但不能指定新的,因为它将覆盖相同的变量

静态变量属于类而不是您正在创建的对象。因此,通过将变量设为静态,创建的所有对象都没有该特定变量。它们可以访问属于该类的静态变量

因此,由于变量是静态的,所以每当他们更新变量时,他们都在更新类中的变量


通过从变量声明中删除
static
,将其从类中删除,并使其成为每个对象的一部分。因此,如果删除
静态
部分,您创建的每个对象都将有自己的变量。

静态变量是所有对象通用的变量。这意味着每个实例将共享同一个变量。有关更多信息,请参阅

您是否考虑过阅读有关类变量使用时的静态的含义?好的,如果您喜欢答案,您可以接受