深入浅出Java数据类型一之基本数据类型

1.基本数据类型

Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型: 在Java中一共有8 种基本类型 ( primitive type ), 其中有 4 种整型、 2 种浮点类型、1种用于表示 Unicode 编码的字符 单元的字符类型 char和 1 种用于表示真值的 boolean 类型。

注释: Java 有一个能够表示任意精度的算术包, 通常称为“ 大数值”(bignumber 。) 虽然 被称为大数值, 但它并不是一种新的 Java 类型, 而是一个 Java 对象。

1.1 整型

整型用于表示没有小数部分的数值, 它允许是负数。 Java 提供了 4 种整型。

  1. 在 Java 中, 整型的范围与运行 Java 代码的机器无关。 这就解决了软件从一个平台移植到 另一个平台,或者在同一个平台中的不同操作系统之间进行移植给程序员带来的诸多问题。与此相反,C 和 C++程序需要针对不同的处理器选择最为高效的整型, 这样就有可能造成一个在 32 位处理器上运行很好的 C 程序在 16位系统上运行却发生整数溢出。 由于 Java 程序必须保证 在所有机器 L都能够得到相同的运行结果,所以各种数据类型的取值范围必须固定。
  2. 长整型数值有一个后缀 L 或 1 ( 如 4000000000L 。) 十六进制数值有一个前缀 Ox 或 0X ( 如 OxCAFEL 八进制有一个前缀 0 , 例如, 010 对应八进制中的 8。
  3. 从 Java 7 开始, 加上前缀 0b 或 0B 就可以写二进制数。 例如, OblOO丨就是 9。 另外, 同样是 从Java7开始,还可以为数字字面量加下划线,如用1_000_000(或册1丨丨丨_0100_0丨0 0_丨0 00_0000) 表示一百万。 这些下划线只是为丫让人更易读。 Java 编译器会去除这些下划线

与C和C++最大的区别在于,在 Java 中,所有的数值类型所占据的字节数量与平台无关。在不同的处理器上的字节数量都是一样。

1.2 浮点类型

浮点类型用于表示有小数部分的数值,在 Java 中有两种浮点类型。

  1. double 表示这种类型的数值精度是 float 类型的两倍 (有人称之为双精度数值 )。 绝大部 分应用程序都采用 double 类型。 float 类型的精度很难满足需求,很少使用。一般只用在需要单精度数据的库,或者需要存储大量数据。
  2. float类型的数值有一个后缀F或f (例如,3.14F。) 没有后缀F的浮点数值(如3.14) 默 认为 double 类型。当然, 也可以在浮点数值后面添加后缀 D 或 d ( 例如, 3.14D)。

三个特殊的浮点数类型:

  • 正无穷大 : Double- ( Float )_POSITIVE_INFINITY
  • 负无穷大 : Double- ( Float ).NEGATIVEJNFINITY
  • NAN(不是一个数字) : Double- ( Float ).NaN
// 不能这样检测一个特定值是否等于 Double.NaN:
if (x = Double.NaN) // is never true
//所有“非数值”的值都认为是不相同的.可以使用 Double.isNaN 方法
if (Double.isNaN(x)) // check whether x is "not a number"

如果在数值计算中不允许有任何舍入误差,就应该使用 BigDecima类

1.3 char 类型

char 类型原本用于表示单个字符。 不过, 现在情况已经有所变化。 如今, 有些 Unicode 字符可以用一个 char值描述, 另外一些 Unicode 字符则需要两个 char 值。
char 类型的字面量值要用单引号括起来。 例如: W 是编码值为 65 所对应的字符常量。它与"A"不同,"A"是包含一个字符A的字符串, char类型的值可以表示为十六进制值,其
范围从 \u0000 到 \Uffff。
除了转义序列 \u 之外, 还有一些用于表示特殊字符的转义序列,所有这些转义序列都可以出现在加引号的字符字面量或字符串中。 例如, ’\0丨2 22’ 或 "1 110\11”。 转 义序列 \u 还可以出现在加引号的字符常量或字符串之外(而其他所有转义序列不可以)。

示例:

// \u00A0 is a newline
会产生一个语法错误, 因为读程序时 \u00A0 会替换为一个换行符
// Look inside c:\users
也会产生一个语法错误,因为\u后面并未跟着4个十六进制数

1.4 boolean ( 布尔)类型

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

引用文章《java核心技术卷一》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值