Java中的指针

Java中的指针,java,Java,我有一张450*300的照片。按钮根据一些规则分布在该图像上。假设每个按钮仅花费一个像素,(271,28)和(272,28)表示两个不同的按钮。我想用它的x,y位置跟踪现有的按钮。直观地说,我认为通过下标访问图像上的按钮既方便又复杂,所以我尝试使用二维数组 JButton[][] btnArray= new JButton[450][300]; 因为按钮数量限制在100以内,所以我不想这样分配不必要的冗余空间。我只需要450*300个指针,指向某个特定的JButton实例或为null。我可以在

我有一张450*300的照片。按钮根据一些规则分布在该图像上。假设每个按钮仅花费一个像素,(271,28)和(272,28)表示两个不同的按钮。我想用它的x,y位置跟踪现有的按钮。直观地说,我认为通过下标访问图像上的按钮既方便又复杂,所以我尝试使用二维数组

JButton[][] btnArray= new JButton[450][300];
因为按钮数量限制在100以内,所以我不想这样分配不必要的冗余空间。我只需要450*300个指针,指向某个特定的JButton实例或为null。我可以在Java中实现这种机制吗


谢谢,享受明天的愚人节。

实际上
JButton[][]btnArray=newjbutton[450][300]不为450*300按钮创建/分配内存。您只是创建了450*300个引用变量

您可以根据需要创建按钮实例

btnArray[5][5] = new JButton("5, 5");
没有像这样初始化的所有东西都是空的。

您在这里所做的是为450x300指针分配空间,因为Java中的引用变量实际上是指针。您现在只需要遍历并使用对象引用或null初始化它们

JButton[][] btnArray= new JButton[450][300];
实际上,该语句为JButton引用而不是JButton对象分配了二维数组。
确实已经这样做了。

如果您被限制为100个按钮,而不是创建一个长度为450*300=135000的数组,为什么不创建一个长度为100的数组(或者甚至是一个
ArrayList
,这样它只使用与您分配的按钮相同的内存)在图像中存储包含
JButton
及其x和y坐标的对象。这完全取决于内存使用或速度对应用程序是否更为重要。

我认为,为了避免大量空引用出现峰值,我会尝试使用一个按钮地图,这些按钮在位置上键入,例如使用
作为键

Map<Point, JButton> buttons = new HashMap<Point, JButton>();

地图键集提供了位置列表。

多亏了RollingBoy,这个理论能应用于C++吗(不管语法如何)?我想C++编译器会调用构造函数,从而创建jButoObj.它们是不同的。对于对象,java只支持引用数组,C++支持对象数组和对象数组。@ SSB:C++对象和java对象几乎没有什么共同点。
buttons.Contains(new Point(123, 456));