【发布时间】:2014-04-06 03:12:42
【问题描述】:
所以我一直在关注 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....
【问题讨论】:
-
这正是它应该如何工作的。查看源代码,该方法使用您传入的数组,除非它是
null(在这种情况下它自己创建一个数组)。如果你发布你的测试程序会很有帮助,也许那里发生了一些事情。 -
虽然没有具体回答我的问题。我已经完成了一些 c++,并且我知道您可以通过方法传递变量,并且该方法(无论是否在另一个类中)都可以修改实际变量本身,从而更改调用变量的值。我不知道java会这样做,我想知道如何强制它这样做?就像,这种方法显然可以,但是如何?它只适用于数组吗?
-
您作为参数传递的
int[]是否足够大以容纳所有值?我认为这一行是该方法所做的最有用的信息: (x, y) 处的 RGB 值是:pixel = rgbArray[offset + (y-startY)*scansize + (x-startX)]; -
是的。但是,所以,如果你传递一个 int[] 作为参数,你传递给它的方法可以修改原始变量吗?我想这就是我的问题......如果是的话,你能用任何变量做到这一点吗?如果没有,你会怎么做?
-
Java 使用“按值传递”,这让很多人感到困惑。 Java中的所有对象实际上都是指针,所以当你传递一个指针的值时,你可以修改这个指针所指向的值。数组是对象,因此您可以通过将数组作为参数传递来修改数组的内容。
标签: java arrays parameters rgb bufferedimage