Java基础复习-数据类型学习

  • Java版本: Java8
  • 系统版本: Windows10
  • 开发工具: intellij idea

后续文章,如无特殊声明均采用以上环境

数据类型

Java中一共有八种基本数据类型,其中有4种整型,2种浮点类型,1用字符类型char,1种表示boolean类型

整型

整型用于表示没有小数部分的数值,它允许是负数。

类型存储要求取值范围
int4字节-2147483648(-231)~2147483647(231-1)(整好超过20亿)
short2字节-32768(-215)~32767(215-1)
long8字节-9223372036854775808(-263)~9223372036854775807(263-1)
byte1字节-128(-27)~127(27-1)

通常情况下int类型最常用。但如果表示星球上的居住人数,就需要使用long类型。byteshort类型主要用于特定的应用场合。例如:底层文件的处理或者需要控制占用存储空间量的大数组。

  • 在Java中,整型的范围与运行Java代码的机器无关。这就解决了软件从一个平台移植到另一个平台,或者在同一个平台中的不同操作系统之间进行移植带来的诸多问题。

长整型long数值有一个后缀L或者l小写的L(如4000000000L)。十六进制数值有一个前缀0x或者0X(如0xCAFE)。八进制有一个前缀0,例如,010对应八进制中的8。很显然,8进制表示法比较容易混淆,所以建议最好不要使用进制常数。

从Java7开始,加上前缀0b或者0B就可以写二进制数。例如,0b1001就是9。另外同样从Java7开始,还可以为数字字面量加下划线,如用1_000_000(或者0b111_0100_0010_0100_0000)表示一百万。这些下划线只是为了让人更易读。Java编译器会去除这些下滑线。

浮点类型

浮点类型用于用于表示有小数部分的数值。

类型存储需求取值范围
float4字节大约±3.40282347E+38F(有效位数为6~7)
double8字节大约±1.79769313486231570E+308(有效位数为15位)

double表示这种类型的数据精度是float类型的两倍(有人称之为双精度数值)。大部分应用程序都采用double类型。在很多情况下,float类型的精度很难满足需求。只有在很少的i情况下适合使用float类型,例如,需要单精度数据的库,或者需要存储大量数据。

float类型的数值有一个后缀Ff(例如,3.14F)。没有后缀F的浮点数值(如3.14)默认未double类型。也可以在浮点数值后面添加后缀Dd(例如,3.14D)。

所有的浮点数值计算都遵循IEEE 754规范。具体来说,下命是用于表示溢出和出错情况的三个特殊的浮点数值:

  • 正无穷大
  • 负无穷大
  • NaN(不是一个数字)

例如,一个正整数除以0的结果为正无穷大。计算0/0或者负数的平方根结果为NaN.

常量 Double.POSITIVE_INFINITY(正无穷大)、Double.NEGATIVE_INFINITY(负无穷大)和Double.NaN(不是一个数字)以及相对应的Float类型的常量,分别表示这三个特殊的值,但在实际应用中很少遇到。

特别说明:不能这样检测一个特定的值是否等于Double.NaN :

if (x == Double.NaN) //永远为false

所有“非数值”的值都认为是不相同的。然而可用使用Double.isNaN方法:

if (Double.isNaN(x)) //验证x是否不是数字

浮点数值不适用与无法接受舍入误差的金融计算中。例如,命令System.out.println(2.0-1.1);将打印出0.8999999999999999,而不是0.9。这种舍入的误差主要原因是浮点数值采用二进制系统表示,而在二进制中系统无法准确地表示分数1/10。如果在数值计算中不允许有任何舍入误差,就应该使用BigDecimal类。


char类型

char类型原本用于表示单个字符。不过, 现在情况已经有所变化 。如今, 有些Unicode字符可以用一个char值描述,另外一些Unicode字符则需要两个char值。

char类型的字面量值要用单引号括起来。例如:'A' 是编码值为65所对应的字符常量 。它与 " A " 不同,"A"是包含一个字符A的字符串 , char 类型的值可以表示为十六进制值,其范围从 \u0000\Uffff。例如:\u2122表示注册符号() ,\u03C0表示希腊字母π

除了转义序列\u之外 ,还有一些用于表示特殊字符的转义序列,请参考下表。所有这些转义序列都可以出现在加引号的字符字面量或字符串中。例如 , '\02122'"Hello\n"。转义序列\u还可以出现在加引号的字符常量或字符串之外(而其他所有转义序列不可以)。例如 :

public static void main (String \u005B\u005D args)

就完全符合语法规则 , \u005B\u005D[] 的编码 。

转义序列名称Unicode值
\b退格\u0008
\t制表\u0009
\n换行\u000a
\r回车\u000d
"双引号\u0022
'单引号\u0027
\反斜杠\u005c
  • Unicode转义序列会在解析代码之前得到处理。例如,"\u0022+\u0022"并不是一个有引号(U+0022)包围加号构成的字符串。实际上,\u0022会在解析之前转换为",这会得到""+"",也就是一个空串

    • 更隐秘地,一定要注意代码注释中的\u,注释

      // \u00A0 is a newline
      

      会产生一个语法错误,因为读程序时\u00A0会被替换为一个换行符。类似地,下面这个注释:

      // Loog inside c:\user
      

      也会产生一个语法错误,因为\u后边并未跟着4个十六进制数

boolean类型

boolean(布尔)类型有两个值:falsetrue,用来判定逻辑条件。整型值和布尔值之间不能进行相互转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值