声明变量类型之间的区别

时间:2013-10-07 20:54:43

标签: java opengl lwjgl slick2d

我已经有一个名为

的变量
Image spriteImage;

稍后在代码中我说明它是什么

Image spriteImage = new Image("content/man.png");

此代码崩溃了我的Slick2D应用程序。 有什么区别

Image spriteImage = new Image("content/man.png");

spriteImage = new Image("content/man.png");

(实际上有效)

4 个答案:

答案 0 :(得分:3)

如果“崩溃”意味着“将无法编译”,那么原因是,无论何时在范围内陈述Image spriteImage(或任何其他类型/名称组合),您都要定义一个新的变量。如果你已经有了类似的声明,那么它将无法编译,说你已经重新声明了两次相同的变量。

声明:

Image spriteImage = new Image("content/man.png");

声明一个名为spriteImage new 变量,而声明:

spriteImage = new Image("content/man.png");

spriteImage(已存在的变量)的值设置为new Image(...)

答案 1 :(得分:0)

看起来你可能会影响一个变量。

如果在方法之外

Image spriteImage

然后在你做的方法里面

Image spriteImage = (...);

您正在分配本地变量spriteImage

如果你这样做

spriteImage = (...);

然后您将分配先前声明的spriteImage(可能是实例变量)

当您只分配本地实例时,将实例保留为null,我猜你试图使用它,并且有一个空指针会导致openGL崩溃。

答案 2 :(得分:0)

您已经宣布 Image spriteImage ,但尚未对其进行初始化。

    spriteImage = new Image("content/man.png");

以上是初始化它,但是

    Image spriteImage = new Image("content/man.png");

声明一个本地Image变量,它正在遮蔽另一个变量。

答案 3 :(得分:0)

重新声明变量。 spriteImage已经是一个Image,所以你不能将它声明为一个Image。另一种解决方案是使用:

Image spriteImage = new Image("content/man.png");

并且不在本声明中声明。

Image spriteImage;

这也是可以接受的,你不会两次声明spriteImage。