类型总览
类型分类
语法格式
数据类型 变量名 = 初始值
Java使用变量时一定要初始化,否则会报错(初始化:在定义变量时就对其赋值)
使用示例
(下面只讨论使用方法和使用特殊规定 大小和范围在上面表格)
int类型 包装类为:Integer
int a = 10; //定义整形变量a,a是变量名(也被称为标识符),该变量中放置的值为10
short类型 包装类为:Short
short a = 25;
long类型 包装类为:Long
long a = 10L //整数默认为int类型,L使10为长整型(long)
(当long a =2147483648时会报错,而long a =2147483648L时不会)
byte类型 包装类为:Byte
double类型 包装类:Double
double d = 3.14;
float类型 包装类:Float
float f = 12.5F //小数默认为double类型,F使12.5为float类型
char类型 包装类:character
char a = 'a'
char a = '正'
中文英文都可以(阿拉伯语都能用) (太复杂的中文会报错)
一个中文占两字节 也就是说一个 char类型只能储存一个中文字
boolean类型 包装类:Boolean
boolean a = true;
boolean b = false;
注意:boolean类型只有true和false两种取值(没有c语言中的0为假,非零为真)且boolean类型不可参与运算。
类型转换
简单来说就是把这种类型的数据转换成另一种类型
1.隐式转换,范围从小到大自动进行
int a = 10;
long b = 100L; a,b什么值都行
b = a;//隐式转换
2.强制转换,范围由大到小,手动操作且可能丢失一部分精度(就是本来人家有八个字节大,硬要放在四字节的空间里,放不下)
int a = 10;
long b = 100L;
a=(int)b;//强制转换 在变量前加一个(类型)就可以转换
注:强制类型转换不一定能成功,两个不相干类型不可以转,比如布尔(boolean)类型转不了。
类型提升
不同类型数据进行运算时,范围小的类型会自动变成大的类型再进行运算的过程叫做整形提升,由于cpu按照四字节从内存中读取数据,所以小于四字节的类型(short,byte)在运算时,会先转变成int型。
我们来看下面这段代码:
int a = 10;
long b = 120;
int c = (int)(a+b); //可以运行但丢失精度 a+b是int+long然后提升为long+long 结果再强转为int(丢失精度)再赋给c;
long b = a+b; // a+b是int+long然后提升为long+long再赋给c
那么再看下一段
byte a = 10;
byte b = 50;
long c = a+b; //程序报错 a+b是byte+byte然后提升为int+int 直接赋给long类型的c会丢失精度
c语言学了27天啊.........多少天能学完java呢.......(任重道远)