小言_互联网的博客

【JAVA程序设计】基本数据类型

275人阅读  评论(0)

Java基本数据类型

摘要:

每个数据类型都有它的取值范围。编译器会根据每个变量或常量的数据类型为其分配内存空间。Java为数值、字符值和布尔值数据提供了八种基本数据类型。

一、整数类型

整型于表示没有小数部分的数值,它可以是负数。

类型 存储需求 取值范围 数值
byte 1字节 − 2 7 -2^7 27 ~ 2 7 − 1 2^7-1 271 (-128 ~ 127) 8 位带符号数
short 2字节 − 2 15 -2^{15} 215 ~ − 2 15 − 1 -2^{15}-1 2151 (-32 768 ~ 32 767) 16 位带符号数
int 4字节 − 2 31 -2^{31} 231 ~ − 2 31 − 1 -2^{31}-1 2311 ((-2 147 483 648 ~ 2 147 483 647) 32 位带符号败
long 8字节 − 2 63 -2^{63} 263 ~ − 2 63 − 1 -2^{63}-1 2631 (即 -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 8077) 64 位带符号数

1.数值前缀和后缀

  • 十六进制数值有 0x0X前缀
  • 八进制数值有前缀0
  • 二进制数值有前缀0b0B
  • 可以为数值增加下划线:如1_000_000,0b1111_0100_1111
  • 长整型数值有后缀Ll

2.Java&C++提示

1.Java中, 整型的范围与运行 Java 代码的机器无关。
2. Java 没有任何元符号 unsigned 形式 int long short byte 类型

二、浮点类型

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

类型 存储需求 取值范围 数值 有效数位
float 4字节 负数范围: − 3.4028235 × 1 0 + 38 -3.4028235\times10^{+38} 3.4028235×10+38~ − 1.4 × 1 0 − 45 -1.4\times10^{-45} 1.4×1045 正数范围: 1.4 × 1 0 − 45 1.4\times10^{-45} 1.4×1045 ~ 3.4028235 × 1 0 + 38 3.4028235\times10^{+38} 3.4028235×10+38 32 位,标准 IEEE 754 (有效位数为6 - 7位)
double 8字节 负数范围: − 1.7976931348623157 × 1 0 + 308 -1.7976931348623157\times10^{+308} 1.7976931348623157×10+308~ − 4.9 × 1 0 − 324 -4.9\times10^{-324} 4.9×10324 正数范围: 4.9 × 1 0 − 324 4.9\times10^{-324} 4.9×10324 ~ 1.7976931348623157 × 1 0 + 308 1.7976931348623157\times10^{+308} 1.7976931348623157×10+308 64 位,标准 IEEE 754 (有效位数为 15 位)

浮点数值不适用于无法接受舍入误差的计算中,如果在数值计算中不允许有任何舍入误差,应该使用 BigDecimal 类

1.double&float

  • double 型是 float 型的两倍。所以,double 型又称为双精度 (double precision), 而 float 称为单精度 ( single precision)。
  • 在很多情况下, float 类型 的精度很难满足需求,通常情况下,应该使用 double 型。

2.浮点数值的后缀

  • float 类型的数值有Ff后缀
  • double 类型的可以有Dd后缀
  • 没有后缀的浮点数值默认为 double 类型

3.浮点数的表示

科学计数法表示:

1.23456 × 1 0 2 1.23456 \times 10^2 1.23456×102 可以写成 1.23456E2 或者 l.23456E+2

  • 浮点型直接量可以用 a × 1 0 b a\times10^b a×10b 形式的科学记数法表示
  • E (或 e) 表示指数,既可以是大写的也可以是小写的

十六进制数表示:

0.125 × 2 − 3 \times2^{-3} ×23 可以表示成 0x1.0p-3

  • 在十六进制表示法中,使用 p表示指数
  • 尾数采用十六进制,指数采用十进制
  • 指数的基数是 2, 而不10

3.三个特殊的浮点数值

  1. 正无穷大 Double.POSITIV E_INFINITYFloat.POSITIVE_INFINITY

  2. 负无穷大 Double.NEGATIV_INFINlTYFloat.NEGATIV_INFINlTY

  3. NaN(不是一个数字) Double.NaNFloat.NaN

注:不能这样桧测一个特定值是否等于 Double.NaN,可以使用 Double.isNaN 方法

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

三、字符类型

字符数据类型表示单个字符,一些Unicode字符需要两个char值

1.字符的表示

  • 字符型直接量用单引号括住

    char letter = 'A';
    

    字符串直接量必须括在双引号中。而字符直接量是括在单引号中的单个字符。

2.Unicode 和 ASCII 码

编码(encoding):将字符映射到它的二进制形式的过程。 编码表(encoding scheme)
scheme):字符有多种不同的编码方式,编码表定义该如何编码每个字符。

  • ASCII 码(美国标准信息交换码)是表示所有大小写字母、数字、标点符号和控制字符的 8 位编码表

  • 16 位 Unicode 码 占 两 个 字 节,用 以 \u 开头的 4 位 十六进制数表示,范围从 ‘\u0000’ 到 ’\UFFFF’。(Unicode 码包括ASCII码)

    一个 16 位的编码所能产生的字符只有 65 536 个,它是不足以表示全世界所有字符的。因此,Unicode 标准被扩展为 1 112 064 个字符。这些字符都远远超过了原来 16 位的限制,它们称为补充字符(supplementary character)

3.转义字符

转义序列 名称 Unicode码 十进制数值
\b 退格键 \u0008 8
\t Tab 键 \u0009 9
\n 换行符 \u000A 10
\f 换页符 \u000C 12
\r 回车符 \u000D 13
\\ 反斜杠 \u005C 92
\" 双引号 \u0022 34

4.字符型数据与数值型数据之间的转换

  • char 型数据可以转换成任意一种数值类型,反之亦然。将整数转换成 char 型数据时,只用到该数据的低十六位,其余部分都被忽略
  • 要将一个浮点值转换成 char 型时,首先将浮点值转换成 int 型,然后将这个整型值转换为 char 型
  • 如果转换结果适用于目标变量(范围不大于),就可以使用隐式转换方式;否则,必须使用显式转换方式
  • 0~FFFF 的任何一个十六进制正整数都可以隐式地转换成字符型数据。而不在此范围内的任何其他数值都必须显式地转换为 char 型
  • 所有数值操作符都可以用在 char 型操作数上。如果另一个操作数是一个数字或字符,那么 char 型操作数就会被自动转换成一个数字

Unicode 转义序列会在解析代码之前得到处理:
“\u0022+\ u0022” 并不是个由引号 (\U 0022) 包围加号构成 的字符串,实际 上, \u0022 会在解析之前转换为" ,这会得到“+“ ,要当心注释中的 \u:
// \u000A is a newline
语法错误 因为读程序时 \u000A会替换为一个换行符

5.字符的比较和测试

  • 两个字符可以使用关系操作符进行比较,如同比较两个数字一样。这是通过比较两个字符的 Unicode 值实现的。
  • 程序中需要测试一个字符是数字、字母;大写字母,还是小写字母,为了方便,Java 的 Character 类提供了下列方法用于进行字符测试:
    方法 描述
    isDigit(ch) 如果指定的字符是一个数字,返冋 true
    isLetter(ch) 如果指定的字符是一个字母,返冋 true
    isLetterOrDigit(ch) 如果指定的字符是一个字母或者数字,返回 true
    isLowerCase(ch) 如果指定的字符是一个小写字母,返冋 true
    isUpperCase(ch) 如果指定的字符是一个大写字母,返冋 true
    toLowerCase(ch) 返回指定的字符的小写形式
    toUpperCase(ch) 返回指定的宇符的大写形式

四、布尔类型

boolean 数据类型声明一个具有值 true 或者 false 的变量

  • 布尔类型用来判定逻辑条件,整型值和布尔值之间不能进行相互转换

    在C++中,数值甚至指针可以代替 boolean,值0相当于false,Java中不行


转载:https://blog.csdn.net/BlacKingZ/article/details/115407760
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场