gpt4 book ai didi

java - 理解java中的接口(interface)、类和构造函数

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

现在我正在尝试实现this interface用一个代表二进制数的 int 。

我知道我不应该实现to string();,但我们假设我需要这样做。

这是我到目前为止所写的:

public class IPAddressInt implements IPAddress {
private int ipAdress;

public IPAddressInt(int num1,int num2, int num3, int num4){
String n1=Integer.toBinaryString(num1);
String n2=Integer.toBinaryString(num2);
String n3=Integer.toBinaryString(num3);
String n4=Integer.toBinaryString(num4);

String finalString=n1+n2+n3+n4;
this.ipAdress=Integer.parseInt(finalString);
}

public String toString() {
return this.toString();


}

当我尝试返回 this.ipAdress.toString(); 甚至 ipAdress.toString()编译器说它无法在基本类型 int 上调用 toString(),当我只写 this.toString(); 时它就起作用了。为什么?我知道 int 可以转换为字符串,为什么 this 有效,而整个语句却无效?不应该是一样的吗?无论如何我都会得到我想要的吗?

谢谢。

最佳答案

调用 this.toString() 将会崩溃 - 它会递归地调用相同的方法,并且不会退出。

无法直接在 ipAddress 上调用 toString 的原因是 int 是原始类型,并且无法调用方法关于原始类型。

要将任何内容转换为字符串,请使用String.valueOf(ipAddress)。特别是对于 int,您可以使用 Integer.toString(ipAddress)

不过,目前还不清楚为什么要转换为二进制字符串......对我来说这看起来不是一个好主意。您不使用的任何原因

ipAddress = (num1 << 24) | (num2 << 16) | (num3 << 8) | num4;

(假设每个值确实在 0-255 范围内)。

高度怀疑二进制表示是否真的是您想要的,特别是考虑到缺乏填充,然后您尝试将其解析为十进制数量。

关于java - 理解java中的接口(interface)、类和构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5592727/

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