Cya*_*ime 25 java arrays string nullpointerexception
我得到了这个简单的代码:
String ip = "1.2.3.4";
String[] ipArray = ip.split(".");
System.out.println(ipArray[1]);
Run Code Online (Sandbox Code Playgroud)
并且ipArray在它命中时为空System.out.println(抛出空指针异常).
我的问题是为什么ipArray保持null,即使我将它设置为拆分每个ip的.s?
Lui*_*oza 48
使用ip.split("\\.");和您的问题将得到解决.问题是String#split接收正则表达式,点(.)符号是正则表达式中的特殊字符,因此您需要将其转义为将其解释为普通点,同时反斜杠是转义字符在Java中,你也必须逃避它.
cor*_*iKa 42
. 是正则表达式中的特殊字符,用于分割字符串.
要绕过这个,你需要逃避..这导致我们\.不幸的是,\它也是java字符串中的特殊字符,因此必须进行转义才能生成\\.
我们的"最终"结果是 ip.split("\\.");
在相关问题中,可以完全避免整个过程.做一些标准库已经为我们做过的事情是没有意义的.
考虑以下
byte[] ipOctets = InetAddress.getByName(ip).getAddress();
Run Code Online (Sandbox Code Playgroud)
这里唯一的问题是要记住,如果你想要int值,你必须用&like 来提取它int octet = ipOctets[0] & 0xFF;