繁体   English   中英

声明变量类型之间的区别

[英]Difference between declaring type of variable

我已经有一个名为

Image spriteImage;

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

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

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

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

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

(实际上有效)

如果用“崩溃”表示“不会编译”,则原因是,每当在作用Image spriteImage声明Image spriteImage (或任何其他类型/名称组合)时,您都在定义一个新变量。 如果您已经有一个类似的语句,那么它将无法编译,说明您已两次重复声明相同的变量。

该声明:

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

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

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

正在将spriteImage的值(一个已经存在的变量)设置为new Image(...)

看来您可能正在阴影变量。

如果在方法之外

Image spriteImage

然后在方法里面

Image spriteImage = (...);

您正在分配局部变量spriteImage

如果你这样做

spriteImage = (...);

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

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

您已经声明了Image spriteImage,但尚未初始化它。

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

上面是初始化它,但是

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

在声明局部Image变量,该变量遮盖了另一个变量。

您重新声明变量。 spriteImage已经是一个Image,因此您不能将其声明为Image。 另一个解决方案是只使用:

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

并且不在此声明中在上面声明。

Image spriteImage;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM