您的位置:首页 > 编程语言 > Java开发

Java的基本数据类型

2017-02-09 23:56 106 查看

Java的基本数据类型

变量靠申请内存来存储数据值。也就是说在定义变量的时候,会在内存中申请空间。内存管理系统会根据变量的类型来分配空间,所分配的空间只能存储该类型数据。

Java基础类型包含两种:

内置数据类型

引用数据类型

内置数据类型

Java有八种内置数据类型,称为八大基本类型。

分别分为四类:

1. 整数型

byte、short、int、long

byte:

包装类:java.lang.Byte

默认值0,取值范围-2^7~2^7-1(为什么-1,记得以前学过,作为疑问1)

占用空间1字节(8bit,二进制情况下2)

由于占用空间相对(int类型占用32bit)比较小,在大型数组中常用于节省空间。

short:

包装类:java.lang.Short

默认值0,取值范围-2^15~2^15-1

16位,占用空间2字节

int:

包装类:java.lang.Integer

默认值0,取值范围-2^31~2^31-1

32位,占用空间4字节

一般地整型变量默认为int类型

long:

包装类:java.lang.Long

默认值0L,取值范围-2^63~2^63-1

64位,占用空间8字节

2. 浮点型

float、double

float:

包装类:java.lang.Float

默认值:0.0f,单精度3,符合IEEE754标准4的浮点数

32位,占用空间4字节

不能用于表示精确的值5,如货币

double:

包装类:java.lang.Double

默认值:0.0d,双精度,符合IEEE754标准的浮点数

64位,占用空间8字节

同样不能用于表示精确的值,如货币

3. 字符型

char 是一个单一的16位unicode字符

包装类:java.lang.Character

默认值:’\u0000’

最小值:’\u0000’(即0) 最大值:’\uffff’(即65535,2^16)

16位,占用空间2字节,可以存储任意字符

4. 布尔型

boolean

默认值:false

只有两个取值:true、false

该类型仅用于表示真/假

1位,占用空间1字节(理论上占用1/8字节)

实际上Java还有一种基本类型void,包装类java.lang.Void6,只是无法直接对其操作。

引用类型

在Java中,引用类型非常类似C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量,引用变量在被声明的时候,指定特定的类型。变量一旦被声明后,就不能改变类型了。

对象、数组7都是引用类型

引用类型默认值为null

一个引用变量可以引用任意与之兼容的类型。

常量

常量的意义就是固定不变的值,如圆周率。

在Java中使用final关键字修饰声明常量。

final double PI = 3.14;


约束规定,通常常量都用大写字母表示。

Java语言支持的一些特殊的转义字符序列。

符号含义
\n换行(0x0a)
\r回车(0x0d)
\f换页符(0x0c)
\b退格(0x08)
\s空格(0x20)
\t制表符
\’单引号
\”双引号
\反斜杠
\ddd8进制字符
\uxxx16位unicode字符(xxxx)

自动类型转换

整型、常量、字符型可以混合运算。在运算的时候,不同类型的数据转为同一类型数据后,进行运算。

转换级别从低到高8

低------------------------------------------------>高
byte、char、short->int->long->float->double


数据类型转换必须满足以下规则:

不能对boolean类型进行转换9

不能将对象转换为与之不相关的对象类型

把容量大的类型转为容量小的类型时,必须使用强制转换

在上条情况时,可能导致溢出或损失精度。例如:

int a = 128;byte b = (byte)a;

因为byte最大值为127,强制转换int类型的128时会导致精度溢出。

浮点数到整型数的转换是舍弃小数的形式,而不是四舍五入。例如:

int a=(int)23.8;结果a=23

低容量的数据在数据转换时可自动转换为高容量的数据,而不需要强制转换。

问题总结

为什么内置数据类型,如byte的取值范围是从-2^7~2^7-1?

如果计算机不是2进制,那么基础数据类型占用多少空间?基础数据类型的取值范围是否跟是否2进制相关?基础数据类型的取值范围是否跟虚拟机位数相关?

单精度、双精度到底是什么?

IEEE754标准是什么?

double和float不能表示精确的值,为什么?

包装类Void和内置数据是如何运作的?自动拆装箱是如何运作的?

数组是如何运作的?

转换级别从低到高是byte、short、char->int->long->float->double,float是32位,long是64位,为什么float比long还要高?

boolean类型为什么不能转换,它是怎么运作的?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息