基本数据类型:分为4类8种
整数型:byte,short,int,long
浮点型:float,double
字符型:char
布尔型:boolean
一:java语言中的数据是有默认类型的
整数的默认类型是int类型,实数的默认类型是double类型。
例如。float f=1.2;这样定义float变量时不正确的,在编译的时候会报错,“可能损失精度”。因为默认写为小数,例如1.2,默认是double型数据,所以声明常量float时,认为把double类型数据放到float里会出错。
所以声明float型常量是后面必须加‘f’或者是‘F’。同理,声long型常量后要加“l”或“L”。
double d=123.56;//正确
float f=123.56f;//必须要加f否则会出错
float型精确度是小数点后7位,double型数据精确度是小数点后15位。
1.任何类型的数据都可以向String转换
2.boolean类型不可以转换为其他的数据类型
3.整形,字符型,浮点型的数据在混合运算中相互转换,转化时遵循以下原则:
a.容量小的类型自动转换为容量大的数据类型:数据类型按容量大小排序为:
a1. byte,short,char-->int -->long-->float-->double
a2. byte.short.char 之间不会相互转换。他们计算时首先转换为int类型
b.容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出
c.有很多类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行运算
容量大小值的是表示的数的大小,而不是内存中占的多少。例如,long类型数在内存中占8个字节,而float类型数占4个字节,但是float所能表示的数要比long类型大得多。
public class Test4 {
public static void main (String args[]){
int i1=10;
int i2=30;
float f=(float) ((i1+i2)/1.2);//1.2是double类型的,(i1+i2)/1.2也是double型的。而f是float型的,所以将(i1+i2)/1.2强制转换为float型的
System.out.println(f);
}
}
二:在初始化变量或者为变量赋值时,应该注意的几点:
(1)float数据后要加f,float f=(float)0.1;与floatf=0.1f;之间是有很大差别的:第一个中,0.1是double类型,在内存中占8个字节,是将其强制转换为float型在赋给变量f;第二个中,0.1直接就是float类型,在内存中占4个字节。
(2)byte(或char类型,或short型数据)数据进行运算时是将其转换为int型数据在进行运算,所以其运算结果必须要先强制转换为byte型(或char型,或short型数据),然后才能赋值给byte型变量(或char型变量,或short型变量)。其次还要注意byte型数据的取值范围是:-128至127;
(3)long型数据后要加L,最好用大写的L,因为小写的l容易与1弄混;
类型 | 占用存储空 间 | 表数范围 |
byte | 1字节 | -128---127 |
short | 2字节 | -215---215-1 |
int | 4字节 | -231---231-1 |
long | 8字节 | -263---263-1 |
float | 4字节 | -3.403E38~3.403E38 |
double | 8字节 | -1.798E308~1.798E308 |
(表格中的红色数字表示幂数)
public static void main (String args[]){
int i=1,j=12;
float f1=(float)0.1;//0.1是double类型的,所以要强制转换为float型
float f2 =123;
long l1=12345678,l2=8888888888L;
double d1=2e20,d2=124;
byte b1=1,b2=2,b3=127;
j=j+10;
i=i/10;
i=(int)(i*0.1);//i*0.1是double型的 所以要强制转换
char c1='a',c2=125;
byte b = (byte)(b1-b2);//系统将转换为int型运算,需要强制转换符
char c =(char)(c1+c2-1);//1是int型的
float f3 =f1+f2;
float f4 =(float)(f1+f2*0.1);//(f1+f2*0.1)是double型的
double d =d1*i+j;
float f = (float)(d1*5+d2);//(d1*5+d2)是double型的 所以强制转换
}
三:Java变量:
从本质上讲是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后进行赋值(填充内容),才能使用。