Java中的隐式转换
class A { public static void main(String args[]) {
String.format("%c",2);
}
}
上面的程序编译正常,但它如何将整型赋值给char。它不应该给有损的转换编译错误?Java中的隐式转换
class A { public static void main(String args[]) {
String.format("%d",45.67);
}
}
这不会导致编译错误,但它会导致编译错误,因为我们如何为int分配一个double值。而是它给运行时错误?
请帮我从解决这个
回答:
答:Can the char type be categorized as an integer?
是,一个char是所有在它出现的流行语言整型。 “积分”意味着它的频谱是离散的,任何两个不同值之间的最小差值是1.与其他积分类型相比,所需的支持值范围通常很小。计算机硬件传统上将整数视为基本数据类型;相比之下,算术浮点类型是更新和更复杂的加法。
希望这个解释可以帮助你了解多一点关于基本类型。
回答:
String.format
只是消耗String
实例作为第一个参数的标准方法。
Java不编译字符串文字的内容。开发人员有责任提供正确的模式。
的String.format
文件说:
抛出: java.util.IllegalFormatException - 如果格式字符串包含非法语法,格式说明符与给定参数不兼容,论据不足给出的格式字符串或其他非法条件。
更新#1
注:Java使用整数的字符表示。所以第一个例子不会失败。 下面的代码是有效的在Java中:
char c = 1; int i = 'o';
更新#2
根据the documentationchar
有最小值0和65535包容性的最大值。这就是为什么你不能把65537分配给字符。 在另一方面65537是在String.format
c
转换有效参数。
参见the documentation:
字符 - 可以被施加到其代表的Unicode字符基本类型:字符,字符,字节,字节,短,且短。这种转换也可以应用于字符时的int和Integer类型。isValidCodePoint(int)返回true
回答:
format
的签名为公开static String format(String format, Object... args)
。所以这个方法在第一个参数之后会接受任何参数(它必须是String
)。 Java不会导致complile错误,因为它必须在运行时首先解析format
。例如,您可以通过传递true
作为参数来检查它。
String.format("%d", true); //still compiles String.format("%d", new StringBuilder()); //also still compiles
如果参数是那么java.util.IllegalFormatException
非法将在运行时抛出。
回答:
你可能想看看有关人士透露,具体为:
java.util.Formatter.format(Locale l, String format, Object ... args)
你能想到的String.format
(它调用Formatter.format
)作为一个小的框架,从而根据Objects
s到在format
字符串编码指令
以上是 Java中的隐式转换 的全部内容, 来源链接: utcz.com/qa/258597.html