小弟对java.net.InetAddress类的 static InetAddress getByAddress(byte[] addr) 
 这个方法不甚了解,暂讨论IPv4,IP地址长度是4位,如192.168.1.20,对每一位进行byte转换后不是会有溢出吗?为什么溢出后还是可以正确运行?不懂之。
代码贴出来,大家指点迷津:
package socket.studyDemo;import java.net.InetAddress;
import java.net.UnknownHostException;public class InetAddressDemo {
public static void main (String [] args) throws UnknownHostException {
inetAddressByIp("192.168.1.13");
}

/*
 * 获取IP byte 字节
 */
private static byte [] getIpByte(String ipAddress) {
String [] ipStr = ipAddress.split("\\.");//以"."拆分字符串
byte [] ipByte = new byte[ipStr.length];
for(int i = 0 ; i < ipStr.length; i++) {
// 进行byte转换后不是会有溢出吗?为什么溢出后还是可以正确运行?
ipByte[i] = (byte)(Integer.parseInt(ipStr[i])&0xFF);//调整整数大小,byte的数值范围为-128~127

return ipByte;
}

/**
 * 一个getByAddress的测试方法
 */
public static void inetAddressByIp(String ipAddress) throws UnknownHostException {

byte [] ipByte = getIpByte(ipAddress); InetAddress ia = InetAddress.getByAddress(ipByte); System.out.println ("Canonical Host Name = " +
ia.getCanonicalHostName ());
System.out.println ("Host Address = " +
ia.getHostAddress ());
System.out.println ("Host Name = " +
ia.getHostName ());
System.out.println ("Is Loopback Address = " +
ia.isLoopbackAddress ());
}
}java InetAddress