所以我一直在youtube上关注游戏编程的教程,这个代码弹出:
bufferedImageObject.getRGB(int, int, int, int, int[], int, int);
并且给出的解释是,基本上,.getRGB()采用将bufferedImageObject的像素数据设置为通过方法参数传递的int []。
所以,这是我的问题:这究竟是如何运作的?比如,很明显getRGB方法修改了int []吧?我尝试在测试程序中这样做,但没有任何改变。那么,getRGB方法究竟是如何将数据存储到int []数组中的呢?最重要的是,这个限制是什么?我从来没有遇到过这种事情,但我可以看到无限的可能性!
感谢您提供任何见解,请随时修改我的问题,因为我对提问的问题很糟糕!
编辑: 这是一个我刚刚用以下方法测试过这个想法的程序:
public class main {
public static void main(String[] args) {
int t = 10;
test(t);
System.out.println(t);
}
public static void test(int i) {
i = 15;
}
}
打印出来的价值是' 10'。那么,在这种情况下,我如何使用t
方法修改test()
变量?缺少t = test(t);
,测试返回15 ....
答案 0 :(得分:3)
我认为这整个问题可能归结为你不理解Java的传值语义。
public static void main(String[] args) {
int t = 10;
test(t);
System.out.println(t);
}
public static void test(int i) {
i = 15;
}
那么,在这种情况下,我如何使用
t
方法修改test()
变量?t = test(t);
test
返回15
?
简单的答案是你不能。
您无法编写将在另一个方法中修改局部变量值的方法。在Java中根本不可能。
这就是为什么我们坚持说Java参数传递是"传值"。
回到原来的问题,鉴于此:
bufferedImageObject.getRGB(int, int, int, int, int[], int, int);
问题:getRGB
如何返回数组参数中的值?
答案:将像素值从图像复制到数组中。
问题:这是如何(仍然)按值传递的?
答案:传递的参数(按值!!)是对数组的引用。 getRGB
正在修改数组。但它没有修改数组引用。
我尝试在测试程序中这样做,但没有任何改变。
我需要>>看<<在我解释之前的那个测试程序。但我敢打赌,这个解释与我上面写的一致。