"零延伸"是什么意思?

Mik*_*elF 7 java

我一直在寻找在Javadoc文档中的CharSequence接口,通过实施String,StringBufer和其他几个人,更具体的chars()方法,而说的Javadoc

返回int的流,从此序列中对char值进行零扩展.

现在,我知道它返回int值,并且int可以转换为char值.但"零延伸"是什么意思呢?

arc*_*rcy 13

Int是32位值,char是16位值.零扩展只意味着int中的高阶"未使用"位为零.

我猜它是有记录的,因为,以一种方式看,操作将char值视为16位整数,并且当从整数转换为更大的整数时,像这样的库方法的用户必须知道如何标志被对待.

对于那些不知道的人,有符号整数值将其最高位保留为"符号位"; 如果是1,则该数字为负数.当转换为更大的整数时,如果最高位被复制到新值中的所有"额外"位,我们说转换是"符号扩展".只有这样做,新整数才会与较小的有符号整数具有相同的带符号数值.如果较小的整数值是无符号的,则最高位表示与所有其他位一样的值,并且仅在没有符号扩展的情况下,值将是相同的.

Java语言没有无符号整数作为数据类型,因此没有符号扩展的转换可能被视为异常.

如果一个常量表示特定字符​​的(带符号)整数值,则在转换为32位整数后,如果转换包含符号扩展,则该常量仍然是准确的.因此,了解任何给定转换如何处理原始值非常重要.