gpt4 book ai didi

Java死代码在不同的地方

转载 作者:行者123 更新时间:2023-12-01 07:02:03 24 4
gpt4 key购买 nike

抱歉问了个蠢问题,好久没有练习Java了……我写了一些代码来模拟哈希表。这是我的代码的一个功能:

protected int find(K key){
int avail=-1;
int i=hashValue(key);
int j=i;
do{
Entry<K, V> element = bucket[i];

if(element==null){
if(avail<0){
avail=i;
}
break;
}

if(key.equals(element.getK())){
return i; // found
}

if(element==this.used){
if(avail<0){
avail=i;
}
}
i=(i+1)%capa;
}while(i!=j);
return -(avail+1); // return a hash address
}

奇怪的是,当我将 if 语句 if(element==null) 稍微改变一点(除了结构的最开始的任何地方),它会警告我这是一个死代码:

protected int find(K key){
int avail=-1;
int i=hashValue(key);
int j=i;
do{
Entry<K, V> element = bucket[i];

if(key.equals(element.getK())){
return i; // found
}

if(element==this.used){
if(avail<0){
avail=i;
}
}

// dead code then
if(element==null){
if(avail<0){
avail=i;
}
break;
}
//dead code then

i=(i+1)%capa;
}while(i!=j);
return -(avail+1); // return a hash address
}

谁知道哪个部分出了问题?

最佳答案

在您的第二个代码示例中,element不可能为null,因为您已经在上面的行中引用了它:element.getK() 一致

if(key.equals(element.getK()))

如果此时它是 null,那么您将得到一个您没有捕获的 NullPointerException。这意味着该方法不会继续到您的 if(element == null) 语句。

如果element不是null,那么if语句的主体也不会被执行.

关于Java死代码在不同的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42102922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com