在Java中有8中基本数据类型来存储数值、字符和布尔值,分别为byte、short、int、long、float、double、char、boolean。
下面来介绍每一种基本数据类型(概念真的不想学TAT,现在的复习就是之前偷懒的惩罚~~)
首先是存储数值的整数类型(byte、short、int、long)和浮点类型(float、double)
1.整数类型
整数类型是用来存储整数数值,即没有小数点的数值,可以是正数,也可以是负数,整型数据根据所占内存大小不同,可分为byte、short、int、long四种类型:
1)byte
所占内存空间为8位(8位等于1字节),因此该类型取值范围为-2^7~2^7-1,即取值范围为-128~127。
(注1:关于为什么是2的7次方而不是3的或者其他的7次方,是因为1个比特(bite)位只有1和0的二进制表示,可以理解为一扇门非开即关,只有两种情况。因此所占内存为8个比特位就是指8个每个非开即关的门,以下类型同理)
(注2:关于为什么是2的7次方而不是2的8次方,是因为带符号情况下,最高位是符号位,因此,一共只有7个比特位用来实际计数,以下类型同理)
2)short
所占内存空间为16位即两个字节,因此该类型取值范围为-2^15~2^15-1,即取值范围为-32768~32767。
3)int
所占内存空间为32位即4个字节,因此该类型取值范围为-2^31~2^31-1,即取值范围为-2147483648~2147483647
4)long
所占内存空间为64位即8个字节,因此该类型取值范围为-2^63~2^63-1,即取值范围为-9223372036854775808~9223372036854775807
因此赋值时,需要注意变量的取值范围,超出相应的范围会出错。
public class Number {
public static void main(String[] args) {
byte inbyte=127;//赋值byte取值范围内正常
// byte outbyte=128;//超出byte取值范围报错
short inshort=32767;//赋值short取值范围内正常
// short outshort=32768;//超出short取值范围报错
int inint=2147483647;//赋值int取值范围内正常
// int outint=2147483648;//超出int取值范围报错
/*
* 对于long整型,若赋的值大于int型的最大值或小于int型最小值,则需要在数字后加L或l
* */
long inlong=9223372036854775807l;//赋值long取值范围内正常
// long outlong=9223372036854775808l;//超出long取值范围报错
}
}
2.浮点类型
什么叫浮点?查了一下百度(百度大法好)解释是相对于定点数而言,浮点数利用指数使小数点的位置可以根据需要而上下浮动,从而可以灵活地表达更大范围的实数。
在这里我把它简单理解为有小数部分的数字。
浮点类型也可以分为两种类型:单精度浮点类型(float)和双精度浮点类型(double)
1)float
所占内存空间为32位即4个字节,单精度浮点数可以表示的范围为1.4E-45~3.4028235E38
2)double
所占内存空间为64位即8个字节,多精度浮点数可以表示的范围为4.9E-324~1.7976931348623157E308
由于小数在默认情况下都被看作多精度浮点数double型,因此在使用double型小数时,可用后缀d或者D来表示,也可以不加后缀,但在使用float型小数时,必须加f或者F,不然定义变量时,该小数会被认为是double型从而报错。
3.字符类型
字符类型(char)用于存储单个字符,占用16位内存,即2个字节,需要注意的是,定义字符时,要用单引号表示,如果用双引号,则定义的是字符串。
public class Char {
public static void main(String[] args) {
char a='s';//单引号表示定义字符,可正常定义
// char a="t";//双引号表示定义字符串,这里报错了
String r="u";//字符串要用String正常定义
}
}
4.布尔类型
布尔(boolean)类型又称逻辑类型,只有true和false,通常用作判断条件
例如以下实例
boolean t=true;
boolean f=false;