java学习day03---(八种基本数据类型)
一、八种数据类型
整数类型
类型 范围 占用字节数
byte -128到127 1
short 正负3万 2
int 21亿 4
long 最大 8
浮点数类型
float 单精度 4字节
double 双精度 8字节
字符类型
char 能表示0~65535的整数 2字节
布尔型
booleam 只表示true和false 1字节
二、八种数据类型详解
四种变量声明赋值:
声明和赋值一起的:int a=1; 声明了,再赋值:int a;a=1; 声明多个变量并赋值:int a=10,b=16,c=18; 声明多个变量,再赋值:int a,b,c;a=10;b=15;c=18;
一个变量赋值的过程:
整数类型的系统默认值是int,浮点类型的默认值是double。
long a=10; 赋值的过程为:1、系统会先把10转换成默认类型int类型。2、再把10(int类型)转换成long型。
short a=10;不会报错的原因是系统默认加了强制类型转换,实际在运行中是这样的 short a=(short)10; 如果赋值超过了类型的最大范围系统就会报错。
long b=2200000000;这赋值会报错,因为赋值的过程中系统会把22亿先存储到int类型的容器中,但int最大范围是21亿。因此需要把22亿直接赋值到long类型的容器中
可以在22亿后面加L:long b=2200000000L 这样22亿会直接赋值在long类型的容器中,我认为和强制类型转换:long b=(long)2200000000;是差不多的。
float的赋值也是需要在后面加F,因为float类型比int类型大。
double不能做加减乘除 会丢失精度。
char存储数字时输出的是ascii码对应的图形,如果用的是utf-8编码则就是其对应的图形,utf8的中文字符占3个字节。
三、数据类型转换
数据类型的容量大小:double>float>long>int>short(char)>byte
自动类型转换(小转换成大)
不会出现问题,整数变成小数会补.0。如:int a=100;long b=a;
强制类型转换(大转换成小)
需要加强制类型转换符,如果超出范围系统不会报错(因为语法没有错误),但运行出来会丢失数据
如 int a=10; byte b=a; 此时会报错,因为a为int类型比b是byte类型大,需要加强制类型转换符:byte b=(byte)a;
但强制类型转换不一定非要和转换的数据类型一样,可以比转换的数据类型小,如:int a=(short)b;是正确的。
精度缺失:小数部分全部舍去(小错误)
精度溢出:转换时数据打过转换类型的最大范围,数据会错乱 (重大错误,工作中要避免)
两个类型不同的数据相加,结果的类型是数据大的类型,需要注意强制转换
char和short之间的转换 在公共区间需要加强制类型转换 其他会溢出

浙公网安备 33010602011771号