频道栏目
首页 > 资讯 > Java > 正文

Java的基本数据类型

17-02-10        来源:[db:作者]  
收藏   我要投稿

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 制表符
\’ 单引号
\” 双引号
\ 反斜杠
\ddd 8进制字符
\uxxx 16位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类型为什么不能转换,它是怎么运作的?
相关TAG标签
上一篇:C++之错误处理
下一篇:PAT 1017 A除以B
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站