Java 基本数据类型

本文详细介绍了Java中的基本数据类型,包括整型(如int、short、long、byte)、浮点型(float和double)以及char和boolean类型。讨论了数值类型之间的自动类型转换和可能有精度损失的强制类型转换,强调了浮点计算的舍入误差和特殊值(如无穷大和NaN)。
摘要由CSDN通过智能技术生成

一、基本数据类型

1.1 整型

Java 整型的范围与运行 Java 代码的机器无关。

长整型数值有一个后缀Ll,十六进制数值前有一个前缀0x0X,八进制有一个前缀0

从 Java 7 开始,可以加上前缀0b0B表示二进制数,还可以为数字字面量加下划线(如 1_000_000 表示 100 万)。下划线只是为了让数字更易读,Java 编译器在编译时会去除这些下划线。

类型存储需求取值范围
int4 字节-2,147,483,648 ~ 2,147,483,647(刚刚超过 20 亿)
short2 字节-32,768 ~ 32,767
long8 字节-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
byte1 字节-128 ~ 127

1.2 浮点类型

float 类型的数值有一个后缀Ff,没有后缀F的浮点数值默认为double类型。

由于浮点数值采用二进制系统表示,而二进制系统无法精确表示分数 1/10,所以浮点数值存在舍入误差。

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

浮点数值计算遵循 IEEE 754 规范。一个正数除以0的结果为无穷大,0除以0的结果为NaN

特殊的浮点数值表示方式
正无穷大Double.POSITIVE_INFINITY
负无穷大Double.POSITIVE_INFINITY
NaN(不是一个数字)Double.NaN

要判断一个特定值是否等于Double.NaN,不能使用==判断,需要使用Double.isNaN方法来判断。

if(x == Double.NaN) // is never true
if(Double.isNaN(x)) // check whether x is "not a number"

1.3 char 类型

Java 的char类型占用两个字节,使用 Unicode 字符集,并且采用 UTF-16 编码方式。

一个 Unicode 字符在 UTF-16 编码中由 1 ~ 2 个 代码单元 组成,一个char值表示 UTF-16 编码中的一个代码单元。(看不懂可忽略,只要知道一个 Unicode 字符由 1 ~ 2 个char值描述就行)

char类型可以使用转义序列 \u表示,例如\u0061表示字符a

\u转义序列与其他转义序列不同,它可以出现在加引号的字符常量或字符串之外。如下所示,第一行代码中的\u005B\u005D分别是 []的编码。

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

值得注意的 Unicode 转义序列会在解析代码前进行处理。例如,下面的代码看上去是一个注释,但是会产生一个语法错误,因为\u000A会被替换为一个换行符。(还有一个错误,能看出来么)

// \u000A is a newline
// look inside c:\user
String s = "\u0022+\u0022"; // 表示一个空串

1.4 boolean 类型

与 C++ 不同,Java 中的整型值和布尔值之间不能进行相互转换。

二、数值类型之间的转换

2.1 自动类型转换

在进行运算时,我们经常需要将一种数值类型转换为另一种数值类型,图 2-1 给出了数值类型之间的合法转换。

在这里插入图片描述

在图 2-1 中,6 个实线箭头,表示无信息丢失的转换;另外 3 个虚线箭头,表示可能有精度损失的转换。可以用箭头推出的转换会在运算时自动进行;否则,需要进行强制类型转换

2.2 强制类型转换

可能损失信息(不是损失精度)的转换,需要通过强制类型转换来完成,如下所示。

double x = 9.997;
int nx = (int)x; // double -> int

double x = 9.997;
int nx = (int)Math.round(x); // long -> int

int x = 0;
x += 3.5; // long -> int(隐式的强制类型转换)

如有错误,欢迎指正。.... .- ...- . .- -. .. -.-. . -.. .- -.-- -.-.--

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值