(二)数据类型(data type)

来源:互联网 发布:我知谁掌管明天 刘若英 编辑:程序博客网 时间:2024/06/17 16:13

数据类型(data type)

数据类型分为基本数据类型和引用数据类型。

1、基本数据类型

8种基本数据类型。各个基本类型之间是平等的,不存在大小和父子类的关系。它们之间的大小只是从存储数据所占用的空间来比较的。

1.数值型

​ 1.在Java种,整数默认是int类型,小数默认为bouble类型。

​ 2.如果一个整数超过了int的取值范围,需要加上L/l作为结尾标识,表示是一个long类型的数据。

​ 3.float类型的小数结尾必须以f作为标识。

​ 4.注意科学计数法。

整数型

​ 整数型有四种类型:byte、short、int、long。

byte

​ 字节型,占1个字节的空间,取值范围:-2^7^- 2^7^-1,即-128- 127。一共256个存储空间(要求记住)。

byte=127;byte=-128;
short

​ 短整型,占2个字节的空间,取值范围:-2^15^ ~2^15^ -1,即-32768~32767,一共是65535个空间。

int

​ 整型:占4个字节的空间,取值范围:-2^31^ ~2^31^ -1,即: -2.1 * 10^10^ ~ 2.1 * 10^10^ 。

​ Java中,从JDK1.7开始,允许在数字之间插入“”作为间隔,在编译的时候会自动省略 “ ”。

int i = 0x23;int i = 0b0011;int i = 100_000_000;    //表示:100000000
long

​ 长整型:占8个字节的空间,取值范围:-2^63^ ~ 2^63^ -1,即:-9 * 10^18^ ~ 9 * 10^18^ 。要求以L、l作为结尾进行标识。

long l = 5L;    //(大写后缀)long l = 5l;    //(小写后缀)

浮点型

float

​ 单精度:占4个字节的空间,取值范围:-2^127^ ~ 2^127^ ,即:-3.4 * 10^38^ ~ 3.4 * 10^38^ 。要求以F、f作为结尾进行标识。

float f = 3.2f;

double

​ 双精度:占8个字节的空间,取值范围:21023~21023,即:-10308~10308。Java中小数默认为double类型。

//正确写法double d = 4.6;  double d2 = 6.3d;double d3 = 3.8D;double d =3e4;->double d = 30000.0;//十进制的科学计数法的表现形式。double d=3p2;//十六进制的科学计数法的表示形式。

​ 注意:Java种的数值类型都是有符号的。

2.字符型

char

​ 字节型:占2个字节的空间,取值范围: 0 ~ 2^16^ -1 ,即:0 ~65535。不允许定义空字符。

char c = ‘a’; char c = ‘中’;  char c = ‘’;    //不允许定义空字符char c=’\t’;

​ 默认值:’ \ u0000 ’:表示’ ’。以 \u 开头表示这个字符是他对应的UTF-8的编码。

​ 可以按照码表对应成数字。

​ 编码有以下格式:

​ 阿斯科码表:ASCII,范围:0 ~ 127,只有英文字符。

​ 西欧码表:ISO8859-1,范围:0 ~ 255。也是只有英文字符。

​ GBK2312:向上兼容西欧码表,前256位都只占1个字节,2个字节表示一个汉字。

​ Unicode编码体系:

​ UTF-8,收录了常见语言的常见字符。3个字节表示一个字符。又叫万国码表。

​ Java的默认编码是UTF-8。

​ 所有的码表都是兼容西欧码表的,所以前256位全都只占1个字节。

转义字符

​ \’ 单引号 \ 反斜杠 \” 双引号 \t 制表符 \r-return回车符 \n—newLine 换行符。

​ 从JDK1.7开始,\r和\n的功能一致。

3.布尔型(boolean)

​ 取值只有true和false,大小没做限定,根据操作系统和JDK的版本不同而定。默认取值为false。

在老师讲课的过程种,只说了8种基本数据类型,但是我在网上看到好多题目问9种基本类型是什么。我查了一下,就是将void规划到了基本类型,void也有相对应的包装类。其他具体的信息就没有找到了,有的大神可以发给我,谢谢了!

2、引用数据类型

​ 引用数据类型中有类(class)、接口(interface)、数组、原生类Arrays,枚举(enum)。

​ 这些在以后都会细细讲到,在这里就不做赘述了。

3、数据类型的转换

1.隐式转换

​ 隐式转换也叫自动类型转换,故名思议,转换发生了,让你没有察觉,都是JVM在底层对数据做了转换。基本上是可以概括为6个字:整转小,小转大。

​ 规律一:小类型可以自动转化为大类型。

float f = 4.2fdouble d = f;int i = 10;float f = i;

​ 规律二:整数可以自动的转化为小数,可能会出现精度损失问题。

long l = 9L;float f = l;float f = -25;//truefloat f = 25.0; //falsechar c = ‘大’;int i = c;double = i;

​ 规律三:char可以自动转化为int。

char c = ‘大’;int i = c;long l = c;double = i;char c = 98;//trueshort s= ’b’;//truechar c=’b’;short s= c;//false因为两句话是分开编译的,所以范围无法确定。char c =-1;//编译报错
char c = 98;    //可以short s = ‘g’;  //可以char c = 98;short s = c;    //在代码编译期间,JVM会检查数据的类型和声明的类名是否一致或者兼容。如果在赋值的时候数据是一个变量,不会去检查这个变量的值而是检查变量的类型和声明的数据类型是否兼容。float f = 30;   //truefloat f = 30.0f;long l = ‘中’;   //truelong l = 100;   //true---如果一个整数在int的取值范围内,可以不用添加L作为结尾

2.显示转换

​ 显示转换又叫强制类型转换,就是数据转换的时候需要我们自己手动操作,JVM不会帮你操作。

​ 当把大类型的数据转换为小类型的数据的时候,需要强制转换。

​ 当把浮点型数据转换为整型变量的时候,需要强制类型的转换。小数转换成整数的时候,不是四舍五入,而是舍弃掉小数部分,因此,小数转换整数的时候,也会产生精度损失。

int i = 10;byte b = (byte)i;double d = 3.99;int i = (int)d; // 3 -> 小数在强制转换为整数的时候会舍弃所有的小数位。int i = 200;byte b = (byte)i;   //可以

​ 注意:在计算机种,绝大部分小数是没有办法精确表示的。

​ 最后,是我自己根据老师讲课的内容画的一张进制转换图,仅供大家学习参考。

这里写图片描述

原创粉丝点击