debugging 为什么VSCode在调试时对数组显示奇怪的“@number”(如int[10]@9)?

mzsu5hc0  于 2022-11-14  发布在  Vscode
关注(0)|答案(2)|浏览(136)

这是一个简单的二进制搜索代码,当我调试它以更好地理解它时,我在调试面板中看到了这个注解a = int[10]@9-它是什么意思(特别是类型后面的“@9”部分)?x1c 0d1x

/**
 * BinarySearch
 */
public class BinarySearch {

    public static void main(String[] args) {
        int a[]={1,3,5,14,22,37,54,77,99,110},target=99 ;
        System.out.println(binarysearch(a,target)); 
    }
    static int binarysearch(int a[], int target)
    {
        int s=0,e=a.length-1;
        int mid;
        while(s<=e)
        {
            mid=s+e/2; //mid= 4 
            if(target<a[mid]) //false
            e=mid-1;//
            else if(target > a[mid])//true
            s=mid+1;
            else if(a[mid]==target) {
            return mid;
            }

        }
        return -1;
    }
}
jgzswidk

jgzswidk1#

一些调试器用一个 * 额外的 * 唯一的数字来注解对象,这个数字反映了对象的“身份”,这样你就可以很容易地分辨出是两个不同的引用在引用同一个对象,还是两个对象有相同的值。这并不总是在另一个答案中引用的“身份散列代码”,但在测试场景中可以引用“这是分配的第N个对象”。

ehxuflar

ehxuflar2#

默认情况下,调试器显示对象的toString()值。由于数组不覆盖toString()方法,它只使用从Object继承的默认实现。
如本文所述,字符串的构造方式如下:

getClass().getName() + '@' + Integer.toHexString(hashCode())

这就是你所看到的类名、“@”符号和哈希代码。

相关问题