gpt4 book ai didi

java - BufferedImage.getRGB(int, int, int, int, int[], int, int) 如何工作?

转载 作者:行者123 更新时间:2023-11-29 05:25:18 28 4
gpt4 key购买 nike

所以我一直在关注 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 the test() method? short of t = test(t); with test returning 15?

简单的答案是你不能。

您不能编写一个方法来修改另一个方法中局部变量的值。这在 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com