Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 局部隐藏变量字段和空指针异常_Java_Nullpointerexception - Fatal编程技术网

Java 局部隐藏变量字段和空指针异常

Java 局部隐藏变量字段和空指针异常,java,nullpointerexception,Java,Nullpointerexception,我在IDE(JAVA NetBeans)上收到警告,在运行时出现错误,我不明白我做错了什么 警告是关于局部变量的隐藏字段,我只想创建一个65536位的布尔数组 public class Main { private static boolean[] BusyDevices ; /* main entry point */ public static void main(String argv[]) { boolean BusyDevices[]=

我在IDE(JAVA NetBeans)上收到警告,在运行时出现错误,我不明白我做错了什么

警告是关于局部变量的隐藏字段,我只想创建一个65536位的布尔数组

public class Main
{
    private static boolean[] BusyDevices ;

    /* main entry point */
    public static void main(String argv[])
    {

       boolean BusyDevices[]=new boolean[65536];//<-Here the warning

    }

    public static boolean isDeviceBusy(String deviceIDx)
    {
        if(deviceIDx.length()>4 || deviceIDx.length()<4)
        {
            return false;
        }

        try
        {
            return BusyDevices[Integer.parseInt(deviceIDx, 16)];
        }
        catch(Exception e)            
        {
            Print.logException("Error deviceIDx:" + deviceIDx, e);           
            return false;
        }       
    }     
}
公共类主
{
私有静态布尔[]总线设备;
/*主要入口点*/
公共静态void main(字符串argv[])
{

boolean BusyDevices[]=new boolean[65536];//4 | | deviceIDx.length()您有两个同名的变量
BusyDevices
,因此会发生此问题,因为类级变量与
main
方法变量冲突

尝试更改下一行中的变量名称:

 boolean BusyDevices[]=new boolean[65536];//<-Here the warning

在这里,您要声明一个名为
BusyDevices
Main
的类的静态字段

private static boolean[] BusyDevices ;
在这里,您在类
main
的静态方法
main
中声明了一个同名的局部变量

boolean BusyDevices[]=new boolean[65536];
在这种情况下,局部变量声明优先,并“隐藏”或“隐藏”类的字段

您可能打算这样做,初始化字段(而不是局部变量)


您正在创建与类级别变量同名的新局部变量。请从
main()中删除第一个
boolean
method。是的,数组将被初始化为all
false
。我不想要两个同名的变量,我只想初始化一个65536位的布尔数组。是的,这就是我想要的,谢谢。parseint可以吗?我要发送四位十六进制数。
boolean BusyDevices[]=new boolean[65536];
BusyDevices = new boolean[65536];