在过去的两天里,我一直在阅读有关编码 Unicode Java 9 紧凑字符串的信息,我感觉很好。但是有些东西我不明白。
关于字节数据类型
1)。是一个 8 位存储范围从 -128 到 127
问题
1)。为什么Java没有像char unsigned 16 bits那样实现它?我的意思是它会在 0.256 的范围内,因为从 0 到 127 我只能保存一个 Ascii 值,但是如果我将值设置为 200 会发生什么,扩展的 ascii 会溢出到 -56。
2)。负值是否意味着我的意思是我尝试了一个使用 Java 11 的简单示例
final char value = (char)200;//in byte would overflow
final String stringValue = new String(new char[]{value});
System.out.println(stringValue);//THE SAME VALUE OF JAVA 8
我检查了 String.value 变量,我看到了一个字节数组
System.out.println(value[0]);//-56
出现与之前相同的问题,-56 是否意味着其他语言中的(负值)这个溢出被检测到返回值 200?Java 怎么知道 -56 值与 char 中的 200 相同。
我尝试了最难的例子,比如代码点 128048,我在 String.value 变量中看到了一个这样的字节数组。
0 = 61
1 = -40
2 = 48
3 = -36
我知道这个代码点需要 4 个字节,但我知道如何将 char[] 转换为 byte[] ,但我不知道 String 如何处理这个 byte[] 数据。
对不起,如果这个问题很简单,对不起,任何打字英语都不是我的自然语言,非常感谢。
临摹微笑
jeck猫
相关分类