二、数据类型

java语言还是一种强类型的语言【对于每一种数据都定义了非常明确的数据类型,在内存中分配了不同大小的内存空间,进行数据的存储】
1、数据类型的分类
基本数据类型
数值型
字节整型【byte】
短整型【short】
整型【int】
长整型【long】

浮点型
单精度【float】
双精度【double】

字符型
【char】
布尔型
【boolean】

引用数据类型
类【字符串属于类【String】】
接口【interface】
数组【array:不是关键字】
枚举【enum】

2.每种数据类型占用空间的大小
类型名    关键字   占用的字节数  取值范围
-----------------------------------------------------------------
字节整型      byte        1        -128~127
短整型    short       2        -2^15~2^7-1
整型     int           4       -2^31~2^31-1
长整型    long     8       -2^63~2^63-1
-----------------------------------------------------------------
单精度    float     4        -2^128~2^127
双精度    double    8       -2^1024~2^1023
-----------------------------------------------------------------
字符型    char    2          0~65535
-----------------------------------------------------------------
布尔型   boolean    1       true和false

需要注意的问题:
a.浮点型:
1>如果数据小的话,显示的是数据本身
2>如果数据较大的话,显示的是科学计数法
3>同字节的浮点数比同字节的整数能够存储更大数据
b.字符型:
1>使用单引号表示,只有单个字符,可以使用字母,数字,符号,中文
2>使用字符集【ASCII码】表示【表示将语言文字和计算机表示建立起来的一个映射关系】
列如:a--->97 A--->65 0--->48

3.不同数据类型的定义

可能会出现的错误:
1>在定义的时候,缺少了三要素中的任何一个
2>在同一个方法中或者类中,出现同名的变量
3>如果在一个变量的前面加上final关键字,那么这个变量就是一个常量
被final修饰的变量,变量名称的定义 将不在遵循小驼峰命名法,遵循常量命名发:所有的字母全部大写,并且不同的单词之间使用下划线分隔

问题:不同数据类型之间能直接进行加法运算吗?
答案:不能,不同类型的数据之间如果要进行运算的话,必须将他们转化为同一种数据类型


4.数据类型的装换
a.自动类型装换
转换的原理: 相兼容的数据类型之间,将取值范围为较小的数值或者变量赋值给取值范围较大的数据类型对应的变量
大=小

b.强制类型装换

char,byte,short在参与运算之前,都会自动提升为int类型

装换的原理: 相兼容的数据类型之间,将取值范围为较大的数值或者变量赋值给取值范围较小的数据类型对应的变量
小=大
语法:小范围 变量名 = (小范围)大范围的变量或者数值

总结:
a.整型数据在默认情况下数据类型是int,浮点型数据默认情况下是double
b.byte,short,char类型的变量在参与运算之前,都会自动提升为int类型,然后才参与运算
特殊:char提升为int类型的时候遵循ASCII码
c.整型和浮点型之间运算的时候,整型会统统提升为浮点型,然后才参与运算

byte b1=2,b2=3,b;
b=b1+b2;
b=2+3;
问题:上面的语句,哪句会编译失败,为什么?
b=b1+b2;不能,因为b1+b2自动提升到int类型了
b=2+3;能,-128~127

问题:仅仅一个整数,为什么会出现四种数据类型?
答案:每种数据类型在开辟空间的时候,所占用的空间大小各不相同,为了避免内存空间的浪费,在合适的时机选用合适的数据类型

原文地址:https://www.cnblogs.com/lsp-lsp/p/7341739.html