为了账号安全,请及时绑定邮箱和手机立即绑定

java中字符用八进制表示 不全 是吗?

java中字符用八进制表示 不全 是吗?

慕田峪7551596 2017-10-21 17:21:21
因为   char b='\377';  System.out.println(b);这个 不能 在大了 。
查看完整描述

3 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

如果你只是想用 '\377' 这样的形式——通过转义八进制数——来表示 char 的话,那么确实不行。

Java 只允许转义不超过 0377 的八进制数来表示字符。0377 是占满 8 位的数,但 Java 中的 char 是 16 位,所以无法表达所有 char 值。  其实 Java 允许转义八进制数表示字符是来源于 C 语言,C 中字符类型只占 8 位,所以才有这个限制。

Java 是推荐使用转义十六进制数来表示 char 的。


如果不用转义,换一种方式,你可以用“把八进制数表示为整型,再把整型转为 char 类型”来实现八进制数到 char 的转换。

用 '卷' 举例,它的八进制数值为 051567,可以这样:char c = (char)051567;

查看完整回答
1 反对 回复 2017-10-22
?
onemoo

TA贡献883条经验 获得超454个赞

Java 中的字符型 char 并不是只占用 1 字节,它占用 16 字节(抱歉,这里之前手误,应该是 16 位)。而且 Java 中字符采用 UTF-16 编码,所以一个字符有可能占用两个 char。

另外,如何表示和进制没关系。

查看完整回答
1 反对 回复 2017-10-21
  • 慕田峪7551596
    慕田峪7551596
    抱歉 或许我的问题没表达清楚, 这样吧,具体化,我想输出字符中的‘卷’(编码大于256即可),但我只允许依靠八进制的 转义字符来表示,如何做呢?
  • onemoo
    onemoo
    这样的话,确实无法转义更大的八进制数。这里太挤,我另写了一个详细回答。
  • 3 回答
  • 0 关注
  • 2003 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信