八大基础类型都有哪些呢?
八大基本类型介绍
数据类型 | 类型名称 | 字节空间 | 范围 |
整数型 | byte | 1 | -27到27-1 或者 -128到127 |
整数型 | short | 2 | -215到215-1 |
整数型 | int | 4 | –231到231-1 |
整数型 | long | 8 | -215到215-1 |
浮点型 | float | 4 | 单精度,对小数部分的精度要求不高 |
浮点型 | double | 8 | 双精度,精确的小数部分并操作值很大时 |
字符 | char | 2 | 0到65535 |
布尔 | boolean | 1 | 真true 假false |
整数型
通过代码进行验证四种整数型的取值范围,牢记知识点。
//整型测试 byte short int long
//定义变量记录最大值 最小值
//数据类型 数据名 数据值
byte max=Byte.MAX_VALUE;
System.out.println(max);//127
byte min=Byte.MIN_VALUE;
System.out.println(min);//-128
short smax=Short.MAX_VALUE;
System.out.println(smax);//32767
short smin=Short.MIN_VALUE;
System.out.println(smin);//-32768
int imax=Integer.MAX_VALUE;
System.out.println(imax);//2147483647
int imin=Integer.MIN_VALUE;
System.out.println(imin);//-2147483648
long lmax=Long.MAX_VALUE;
System.out.println(lmax);//9223372036854775807
long lmin=Long.MIN_VALUE;
System.out.println(lmin);//-9223372036854775808
代码中含有一些还没有学到的知识点,在这先简单的说一下
Byte\Short\Integer\Long 这四个分别是byte\short\int\long的包装类型(引用类型),在这里尤其注意int类型的包装类型。
包装可以这样理解:比如,对于每个人(people)来说,都有自己的名字(name),性别(gender)和年龄(age)等属性(或者功能–吃喝拉撒),而包装类能就是把这些属性和行为功能全部打包装到一起,打包后我们用它的首字母大写来表示它的包装类。然后,我们通过People.name的方式调出它的方法(通过英文点的方式调用)。
** 这方面的内容后期会专门讲解,一步一步来,不要急 **
浮点类型、字符类型和布尔类型
//浮点型 float double
float fmax=Float.MAX_VALUE;
System.out.println(fmax);//3.4028235E38
float fmin=Float.MIN_VALUE;
System.out.println(fmin);//1.4E-45
double dmax=Double.MAX_VALUE;
System.out.println(dmax);//1.7976931348623157E308
double dmin=Double.MIN_VALUE;
System.out.println(dmin);//4.9E-324
//布尔类型
boolean b=false;
boolean b1=true;
//字符型
char c='a';//可以存一个字符
char c2=97;//可以打印一个数字
char c3='中';//可以存一个汉字
//char 类型可以存数字,但是在打印的时候,会查ascii码表确定相应数字对应的字符
System.out.println(c);
System.out.println(c2);
System.out.println(c3);
这里需要注意char的包装类型是character,这里没有用到。 char类型可以是一个字符和数字,甚至是一个汉字。char 类型可以存数字,但是在打印的时候,会查ascii码表确定相应数字对应的字符。
整数类型的字面值–这里就用到了每个整数类型的取值范围了
整数型的字面值都是int类型,浮点类型的字面值是double类型,强行记住就行,基本知识点
int a=9999;//没有超过int 类型的取值范围
float f = 3.0;//错误,右面的字面值是double类型,左面是float类型,放不下的。
byte,short,char三种比int小的整数可以用范围内的值直接赋值
byte b = 127;
byte b2 = 128;//右面128字面值是int类型,已经超出byte取值范围
字面值后缀LFD
long a = 999999999999L;// 999999999999字面值是int类型,但是超出了int取值范围,会报错,解决方案就是加后缀L,从int转成long
float b = 3.0F;//3.0字面值是double类型,加后缀F会变成floa类型
double d = 3D;//3字面值是int类型,加后缀D,会变成double类型
==另一个知识点,基本类型的转换
数据间的转换,根据上面的图片就可进行小转大或者大转小,多加练习即可,不难
//小转大/隐形
byte a=10;
long b=a;
System.out.println(b);
//大转小,强制转换
double c=3.415545256;
int d=(int)c;
理解运算规则
//计算结果的数据类型,与最大类型一致
System.out.println(3/2);//1,int/int,得到的结果类型还是int
System.out.println(3/2d);//1.5,int/double。得到的结果是double
//byte,short,char三种比int小的整数,运算时会先自动转换成int
byte a = 1;
byte b = 2;
byte c = (byte)(a+b);//a+b会自动提升成int类型,右面得运算结果就是int大类型,给左面的byte小类型赋值,不可以,需要强转。
//整数运算,类似于一个钟表,转到最大时,再转会回到最小。
//计算:光速运行一年的长度是多少米?3亿m/s
//溢出的现象:因为做了大的整型数据的运算,会超出int取值范围。解决方法:把整数提升成long类型。
System.out.println(300000000L*60*60*24*365);
//浮点数的特殊值
Infinity 无穷大 3.14/0
NaN not a number 0/0.0