Java Expansion 1:不同进制表示、内存占用、浮点数十六进制表示、特殊浮点数、转义序列

本篇文章涉及到Java Section 1中内容的补充、拓展,先阅读Java Section 1后再行查看更为适宜。

链接:https://blog.csdn.net/m0_49332783/article/details/107303812

数据的二进制、八进制、十六进制表示法:Java可以在数字前面加上“0b”和“0B”表示二进制数字,如0B1001便是9的二进制表示,类似地,在数字前加“0x”或“0X”表示十六进制,如0x20表示十六进制的32,在数字前加“0”表示八进制,如010表示八进制的8,不过八进制表示法极易混淆,建议不使用。

字面值表示拓展:可以为Java数字字面量加上“_”增加易读性,编译时会自动忽略下划线,如1_000_000表示100万。

不同平台数据的内存占用情况:如果你学过C语言、C++,你应该知道,int和long等类型的内存占用与目标平台相关,具体表现为:在8086这样的16位处理器上整型数值占2字节,在32位处理器上整型为4字节;类似地,long在32位机上占4字节,在64位机上占8字节。这些差别给程序的跨平台带来了许多难度,不过在Java中所有类型数据的内存占用与平台无关。

无符号数据:Java没有任何无符号(unsigned)形式的int、long、short或byte类型。

浮点数的十六进制表示法:Java允许使用十六进制表示浮点数,如0.125 = 2-3可以表示成0x1.0p-3,其中使用p表示指数(不是e),位数采用十六进制,指数采用十进制,指数基数为2,浮点数遵循IEEE 754规范,尾数转换详见此规范,此处不再详细描述。

特殊的浮点数值:正无穷大(Double.POSITIVE_INFINITY)、负无穷大(Double.NEGETIVE_INFINITY)、NaN(不是一个数字,Double.NaN),实际使用中极少用到,判断一个特定值是不是NaN,不能使用if (x == Double.NaN)//never true,而应该使用isNaN方法:if (Double.isNaN(x))

转义序列:char类型的值是用单引号括起来的内容,如‘A’是编码值65对应的字符常量,这意味着char类型的值可以表示为十六进制的值,根据Unicode编码(不了解可自行查找),\u0000~\uffff可以表示字符,如\u03C0表示希腊字符π,也就是,char a = 'π'char a = '\u03C0'等价。又比如public static void main(String\u005B\u005D args)完全正确,因为\u005B\u005D就是'['']'的编码。此外还有一些特殊的转义字符,如下表所示。Unicode转义序列会在解析代码之前得到处理,例如,"\u0022+\u0022"并非是一个字符串\u0022+\u0022\u0022在解析之前会先转换为",这样原表达式就是""+""即两个空字符串连接,结果仍是空字符串。更隐秘地,注意注释中的转义符号,代码// \u00A0 is a newline //C:\users,均会报错,前者的\u00A0会被替换成一个换行符,后者\u后面并非十六进制字符,会产生语法错误,正确写法//C:\\users

转义序列名称Unicode值
\b退格\u0008
\t制表\u0009
\n换行\u000a
\r回车\u000d
\"双引号\u0022
\’单引号\u0027
\\反斜杠\u005e
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值