上一篇学习了Java的开发环境配置 ,这一篇来学习Java基本数据类型。
程序=数据+算法,也就是说程序就是你编写算法操作数据。Java是一种强类型语言,也就是说每一个变量都必须是某种类型的变量。在Java中数据类型分为基本数据类型和自定义的数据类型(也就是大家常说的类),但是所有的自定义数据类型都是由基本数据类型组成的。
Java的基本数据类型有8种,4个整型、2个浮点型、1个字符型、1个布尔型。
整型大家在数学中应该都知道,没有小数点后的部分,但是有负数。
1、byte: 0000 0000
byte数据类型是8位(1个字节)、有符号,以二进制补码表示的整数;
最小值是-128(-2^7);
最大值是127(2^7-1);
默认值是0;
主要用在考虑到节约空间的时候替代int类型,因为byte变量占用的空间只有int类型的四分之一;
2、short:0000 0000 0000 0000
short数据类型是16位(2个字节)、有符号,以二进制补码表示的整数 ;
最小值是-32768(-2^15);
最大值是32767(2^15 - 1);
默认值是0;
short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一;
在Java中以上两个整型用的很少,除非是考虑空间问题才会使用它们来代替int。
3、int: 0000 0000 0000 0000 0000 0000 0000 0000
int数据类型是32位(4个字节)、有符号,以二进制补码表示的整数;
最小值是-2,147,483,648(-2^31);
最大值是2,147,485,647(2^31 - 1);
默认值是0;
在Java中,一般地整型变量默认为int类型;
4、long:0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
long数据类型是64位(8个字节)、有符号,以二进制补码表示的整数;
最小值是-9,223,372,036,854,775,808(-2^63);
最大值是9,223,372,036,854,775,807(2^63 -1);
默认值是0L;
这种类型主要使用在需要比较大整数的系统上,比如系统的时间、世界的人数;
浮点型用于表示有小数部分的数值。
1、单精度的float:0000 0000 0000 0000 0000 0000 0000 0000
float数据类型是单精度32位(4个字节)的浮点数;
float在储存大型浮点数组的时候可节省内存空间;
默认值是0.0f;
2、双精度的double:0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
double数据类型是双精度64位(8个字节)的浮点数;
默认值是0.0;
浮点数的默认类型为double类型;
默认的浮点型是double型,123.4就是一个double型,123.4f就是一个float型;
char类型是一个单一的16位Unicode字符(2个字节) 0000 0000 0000 0000;
最小值是’/u0000’(即为0);
最大值是’/uffff’(即为65,535);
char数据类型可以储存任何字符;
例子:
char ch1 = 88;
char ch2 = 'A';
字符型可以说是一种特殊的整型。
boolean数据类型表示一位的信息,只有两个取值:true和false,用来判定逻辑条件
这种类型只作为一种标志来记录true/false情况;
默认值是false;
例子:boolean one = true。
上面介绍了8中基本类型,在Java中每一种基本数据类型都对应一个对象版本:
byte -》Byte;
short -》Short;
int -》Integer;
long -》Long;
float -》Float;
double -》Double;
char -》Character;
boolean -》Boolean;
对于每一种数据类型的范围和占用位数不用死记,可以利用对应对象获取,比如:
Integer.SIZE是int型占用的位数,Integer.MIN_VALUE、Integer.MAX_VALUE分别表示int型的最小、最大值。注意boolean型没有最大最小值,它只有true或者false两个值。
说了这么多基本知识你可能看的有点烦,下面来点实战的。在有些面试题和实际编程中经常会遇到不同数据类型数据之间的计算。例如:
float f=3.4; 是否正确?short s1 = 1; s1 = s1 + 1;有错吗?
答案我先不说,先看下图:
在进行数学计算的时候如果运算符两侧的数据类型不同就会进行数据类型转换,在转换时有可能出现数据丢失。上图中实箭头表示在进行转换时无数据丢失,虚箭头表示在转换后有数据丢失。
两个不同数据类型进行计算时有哪些转换的标准?例如n和m 进行数学运算(+、-、*、/)
1、如果运算符两侧n、m有一个是double类型的,那么另一个将会转换为double类型,如果不满足则按下面的规则;
2、如果运算符两侧n、m有一个是float类型的,那么另一个将会转换为float类型,如果不满足则按下面的规则;
3、如果运算符两侧n、m有一个是long类型的,那么另一个将会转换为long类型,如果不满足则按下面的规则;
4、n和m都转换为int类型进行计算;
知道了规则后上面的面试题答案知道了吗?
float f = 3.4;是错误的,因为默认浮点型是double的,float f = 3.4f或者float f = (float)3.4才正确;
s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型;
再次强调一下,比int小的数据类型(byte、char、short)在进行运算前都会自动转为int,所以计算结果是int型,如果要把结果赋值给比int小的数据类型时要进行强制类型转换。
Java基本数据类型知道了, 下一篇 给大家聊聊Java的基本语法规则。
想第一时间获得更多原创文章,请关注个人微信公众平台:程序员互动联盟(coder_online),扫一扫下方二维码或者搜索微信号 coder_online 即可关注,里面有大量Android,Chromium,Linux,编程技巧等相关文章等着您,我们还可以在线交流。