Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 对实例和声明的误解_Java_Variables_Object_Instance_Main - Fatal编程技术网

Java 对实例和声明的误解

Java 对实例和声明的误解,java,variables,object,instance,main,Java,Variables,Object,Instance,Main,我是Java的完全新手,正在创建游戏Snake。在游戏中,我创建了一个Board类,这个类所做的是创建一个JFrame,用于提供视觉表示(据我所知)。我的问题在于我对代码缺乏理解。我不确定“公共静态板”的作用。我原以为它创建了Board类的静态实例,但我认为这是不对的 我还在为“board=new board();”一行而挣扎,据我所知,这会在board类中创建一个构造实例,但是,我不确定为什么要将其指定给“board” 编辑:鉴于此,我认为publicjframe是否正在创建名为frame的J

我是Java的完全新手,正在创建游戏Snake。在游戏中,我创建了一个Board类,这个类所做的是创建一个JFrame,用于提供视觉表示(据我所知)。我的问题在于我对代码缺乏理解。我不确定“公共静态板”的作用。我原以为它创建了Board类的静态实例,但我认为这是不对的

我还在为“board=new board();”一行而挣扎,据我所知,这会在board类中创建一个构造实例,但是,我不确定为什么要将其指定给“board”


编辑:鉴于此,我认为
publicjframe是否正在创建名为frame的JFrame的新实例?如果没有,那么它是否创建了一个我可以操作的变量?

公共静态板声明一个可以引用电路板的变量。在某种程度上,把它想象成一个盒子——你创造了一个空盒子。它里面什么都没有,但是你现在可以把东西放进盒子里了

声明的每一部分都告诉您有关盒子的一些信息:

  • 公共:任何人都可以访问此框
  • 静态:长方体与游戏类关联,而不是与特定实例关联。就目前而言,这意味着永远只有一个盒子,而不是多个
  • 板子:盒子的“类型”是
    Board
    ——只有
    Board
    类型适合盒子的东西
  • 板:框的名称为“
    board
    ”。当您要参考此框的内容时,请使用名称
    board

你认为
board=newboard()是对的创建
板的一个实例
。具体来说,
新板()部分是生成新
实例的部分。通过说
board=newboard()
,您正在将新实例放在前面声明的标有
board
的框中。从这里开始,您可以将您创建的棋盘命名为
board
,或在该类之外命名为
Game.board
。同样重要的是要知道,通过说
board=new board()
,以前的
board
内容(如果有的话)现在会丢失。你把盒子倒出来,这样你就可以在里面放一个新的东西了。显然,这里没有任何内容,但在使用任何面向对象语言(如java)时,都要记住这一点声明一个可以引用电路板的变量。在某种程度上,把它想象成一个盒子——你创造了一个空盒子。它里面什么都没有,但是你现在可以把东西放进盒子里了

声明的每一部分都告诉您有关盒子的一些信息:

  • 公共:任何人都可以访问此框
  • 静态:长方体与游戏类关联,而不是与特定实例关联。就目前而言,这意味着永远只有一个盒子,而不是多个
  • 板子:盒子的“类型”是
    Board
    ——只有
    Board
    类型适合盒子的东西
  • 板:框的名称为“
    board
    ”。当您要参考此框的内容时,请使用名称
    board
你认为
board=newboard()是对的创建
板的一个实例
。具体来说,
新板()部分是生成新
实例的部分。通过说
board=newboard()
,您正在将新实例放在前面声明的标有
board
的框中。从这里开始,您可以将您创建的棋盘命名为
board
,或在该类之外命名为
Game.board
。同样重要的是要知道,通过说
board=new board()
,以前的
board
内容(如果有的话)现在会丢失。你把盒子倒出来,这样你就可以在里面放一个新的东西了。很明显,这里什么都没有,但在使用任何面向对象语言(如java)时,都要记住这一点

public static Board board;
这意味着在Java程序中有一个名为board的类级(静态)引用。它可以容纳一个板实例。 但是,除非您将实例指定给该引用,否则它不会指向任何内容。它只是内存中的一个引用

当代码

board = new Board();
被处决。JVM创建Board类的实例,然后将创建的实例分配给前面提到的Board引用。 最后,board引用现在指向一个board类实例。 由于它是静态的和公共的,您可以使用类名从任何地方访问它。 e、 g

当你把

public static Board board;
这意味着在Java程序中有一个名为board的类级(静态)引用。它可以容纳一个板实例。 但是,除非您将实例指定给该引用,否则它不会指向任何内容。它只是内存中的一个引用

当代码

board = new Board();
被处决。JVM创建Board类的实例,然后将创建的实例分配给前面提到的Board引用。 最后,board引用现在指向一个board类实例。 由于它是静态的和公共的,您可以使用类名从任何地方访问它。 e、 g

第一个问题:

public static Board board;
到目前为止,您已经声明了具有公共可见性的Board类型的引用变量。它可以通过Game.Board在任何地方访问。static修饰符意味着它附加到类(类似于不需要类实例来运行的静态方法,即
static void main(String[]args)
)。没有为带有=”的引用分配任何内容,它只是内存中对引用的分配。它没有指向任何东西。但它将在主执行后执行
board = new Board();
Human bob = new Human(); //default constructor (bob.name() == "name")
Human alice = new Human("alice"); //different constructor (alice.name() == "alice")