数据类型
整数类型:byte、short、int 和 long
浮点类型:float 和 double
字符类型:char
布尔类型:boolean
1、 整型
Java 语言的整型类型默认是 int 类型,例如 16 表示为 int 类型常量,而不是 short 或byte,更不是 long,long 类型需要在数值后面加 l(小写英文字母)或 L(大写英文字母)。
2 、浮点型
Java 语言的浮点类型默认是 double 类型,例如 0.0 表示 double 类型常量,而不是 float类型。如果想要表示 float 类型,则需要在数值后面加 f 或 F。double 浮点数值后面也可以加字母 d 或 D,以表示是 double 浮点数。
3、指数表示
进行数学计算时往往会用到指数表示的数值。如果采用十进制表示指数,需要使用大写或小写的 e 表示幂,e2 表示 102。
采用十进制指数表示的浮点数示例如下:
double myMoney = 3.36e2;
double interestRate = 1.56e-2;
其中 3.36e2 表示的是 3.36×10的平方,1.56e-2 表示的是 1.56×10的负2次方。
4、布尔型
在 Java 语言中声明布尔类型的关键字是 boolean,它只有两个值:true 和 false。如果试图给它们赋值 true 和 false 之外的常量,则发生类型不匹配编译错误。
5、类型转换
5.1 自动转换
自动类型转换就是需要类型之间转换是自动的,不需要采取其他手段,总的原则是小范围数据类型可以自动转换为大范围数据类型,如图所示,从左到右是自动。
char类型比较特殊,char自动转换为int、long、float和double,但byte
和short不能自动转换为char,而且char也不能自动转换为byte或short。自动类型转换不仅发生在赋值过程中,在进行数学计算时也会发生自动类型转换,在运算中往往是先将数据类型转换为同一类型,然后在进行计算。计算规则如表所示。
public static void main(String[] args){
byte byteNum = 16;
short shortNum = 16;
int intNum = 16;
long longNum = 16L;
// byte类型转换为int类型
intNum = byteNum;
System.out.println("byte类型转换后的值:"+intNum);
char charNum = '花';
// char类型转换为int类型
intNum = charNum;
System.out.println("char类型转换后的值:"+intNum);
// long类型转换为float类型
float floatNum = longNum;
// float类型转换为double类型
double doubleNum = floatNum;
//表达式计算后类型是double
intNum = 16;
double result = floatNum * intNum + doubleNum / shortNum;
System.out.println("计算的值:"+result + " 类型为:"+getType(result));
/*该表达式是由 4 个完全不同的数据类型组成,范围最大的是 double,所以在计算过程中
它们先转换成 double,所以最后的结果是 double。*/
}
public static String getType(Object o){ //获取变量类型方法
return o.getClass().toString(); //使用对象的的getClass()方法
}
输出:
byte类型转换后的值:16
char类型转换后的值:33457
计算的值:257.0 类型:class java.lang.Double
5.2 强制转换
强制类型转换是在变量或常量之前加上“(目标类型)”实现。
int i = 10;
byte b = (byte) i;
double d = 10.24;
long ll = (long) d;// 10
强制类型转换可能会导致精度损失,数据溢出。
byte/short/char这三种数据类型在运算时,会被首先提升成int类型,然后计算。
布尔类型不能发生数据类型转换