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

标签 java arrays parameters rgb bufferedimage

所以我一直在关注 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/

相关文章:

java - 有没有Java库提供ASCII特殊字符列表?

java - Java中如何将包含数字的String[]转换为int[]?

c++ - 如何将此 C 代码转换为 C++?

javascript - 如何为数组(或节点列表)进行事件委托(delegate)

c# - 具有不同参数数量的方法的委托(delegate)

java - 尝试从方法访问变量时出现 NPE。处理/Java

java - Android HttpURLConnection PUT 到 Amazon AWS S3 403 错误

php - MySQL 和 PHP - 使用 'LIKE' 和 'NOT LIKE'

c++ - 如何在 C++ 中声明 byte*(字节数组)?

java - 我们是否应该总是在第一行检查java中方法的每个参数是否为null?