Java:如何获取数组的地址?

时间:2016-08-30 16:54:22

标签: java arrays

我正在尝试将C ++代码转换为Java。 C ++代码段为:findMedian(array+left+i*5, 5);

传递的参数是根据i的值改变的数组地址。如何修改此代码以使其在Java中工作?方法如下:

public int findMedian(int arr[], int n)
{
    Arrays.sort(arr);
    return arr[n/2]; // Return middle element
}

4 个答案:

答案 0 :(得分:5)

您可以使用Arrays.sort的其他重载来仅对数组的一部分进行排序:

public static int findMedian(int arr[], int from, int n) {
    Arrays.sort(arr, from, from + n);
    return arr[from + (n / 2)]; // Return middle element
}

然后打电话给:

findMedian(array, left + i * 5, 5);

答案 1 :(得分:4)

正如其他人所说,Java不允许你对指针进行数学运算,或者根本不看它们。通常,在Java中,指针和内存是编译器的问题,而不是你的问题。

话虽这么说,你仍然可以查看数组中的值;只需传递一个对数组本身的引用,然后对索引进行必要的计算。如果不确切知道该方法的作用,那就更难具体化了。

答案 2 :(得分:2)

在java中无法直接寻址内存位置。

在C内存中用指针寻址。

在java内存中用引用来解决。

有关java和C的比较,请参阅此link from Princeton University

答案 3 :(得分:1)

这可行吗?

findMedian(array, left+i*5, 5);

签名:

public int findMedian(int[] array, int offset, int value1) {
    //...
}