所以我一直在关注 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”。那么,在这种情况下,我如何使用 test()
方法修改 t
变量?缺少 t = test(t);
测试返回 15....
最佳答案
我认为这整个问题可能归结为您不理解 Java 的按值传递语义。
public static void main(String[] args) {
int t = 10;
test(t);
System.out.println(t);
}
public static void test(int i) {
i = 15;
}
So, in this case, how could I modify the
t
variable with thetest()
method? short oft = test(t);
withtest
returning15
?
简单的答案是你不能。
您不能编写一个方法来修改另一个方法中局部变量的值。这在 Java 中根本不可能。
那就是为什么我们坚持说 Java 参数传递是“按值传递”。
回到你原来的问题,鉴于此:
bufferedImageObject.getRGB(int, int, int, int, int[], int, int);
问题:getRGB
如何返回数组参数中的值?
答案:它将图像中的像素值复制到数组中。
问题:(仍然)按值传递如何?
答案:传递的参数(按值!!)是对数组的引用。 getRGB
正在修改数组。但它并没有修改数组引用。
I tried doing that in a test program, but nothing changed.
在我解释之前,我需要>>查看<<那个测试程序。但我敢打赌,解释与我上面写的是一致的。
关于java - BufferedImage.getRGB(int, int, int, int, int[], int, int) 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22889560/