java基础之数据类型转换

Java的数据类型分为两大类:基本数据类型,引用数据类型。
基本数据类型:包括 整型、 浮点数 、 字符 、 布尔 。
1.整型:表示的是整数。分为字节型byte、短整型short、整型int、长整型long。
2.浮点型:表示的是小数。包括单精度浮点数float, 双精度浮点数double。
3.字符型:表示的是单个字符。类型只有一个是char。
4.布尔型:表示的是真假。类型是boolean ,其值只有真假两种状况。
在这里插入图片描述
java程序中要求参与计算的数据,必需要保证数据类型统一成一致,才能够参与运算,若是数据类型不一致将发生类型的转换。因此数据类型之间的转换是有必要的。
取值范围小的类型 能够自动转换为 取值范围大的类型 。也就是小范围变量到大范围变量是自动转换的。知足byte->short->int->long->float->double,其中char类型的变量能够直接自动转换给int类型的变量。
注意:char是编号,可是字符编号的范围是有限的,相对于int类型来讲是小范围,因此能够转换。
char ch = '中'; int it = ch ; System.out.println(it); // 就是 '中'在底层的编号
强制转换:将 取值范围大的类型 强制转换成 取值范围小的类型 。也就是把大范围类型的数据或者大范围的类型变量
赋值给小范围的类型变量必需要强制类型转换不然代码报错。 比较而言,自动转换是Java自动执行的,而强制转换须要咱们本身手动执行。
注意:
1.浮点型转成整型,直接截断小数点,保留整数部分,可能形成数据损失精度。
2.大范围类型的变量 强制转成 小范围类型的变量,可能形成数据丢失。
数据类型在表达式中参与运算时将知足必定的转换规则,转换规则:
1.范围小的类型向范围大的类型提高, byte、short、char 运算时是直接提高为 int的(byte、short、char–>int–>long–>float–>double)。
2.表达式的最终类型由表达式中的最高类型决定。
计算机存储浮点数:
32位:0-22位为有效数字 23~30位为位移阶数 31位为符号位
64位:0-51位为有效数字 52-62位为位移阶数 63位为符号位
在这里插入图片描述
图 中六个实箭头表示无信息损失的转换,而三个虚箭头表示的转换则可能会丢失精度。有时在程序设计中也须要进行在图 1-1 中没有出现的转换,在 Java 中这种数字转换也是能够进行的,不过信息可能会丢失。在可能丢失信息的状况下进行的转换是经过强制类型转换来完成的。其语法是在须要进行强制类型转换的表达式前使用圆括号,圆括号中是须要转换的目标类型。例如:
double x = 7.8;
int n = (int)x; //x 等于 7
Java 使用常见的算术运算符+-*/进行加、减、乘、除的运算。当除法运算符/做用于两个整数时,是进行整数除法。
整数的模(即求余)运算使用 % 运算符。算法以下:
5%(-3)的值是2,(-5)%(-3)是-2。由于%被俗称为“取余除”操做符,就是取被除数除以除数后的余数做为计算结果。既然结果是余数,那么余数的符号确定是与被除数的符号相同了。
对整型变量一种最多见的操做就是递增与递减运算,与 C/C++ 同样 Java 也支持递增和递减运算符。例如:
int n = 7, m = 2;
double d = 7;
n = n / m; //n 等于 3
d /= m; //d 等于 3.5
n–; //n 等于 2
int a = 2 * n++; //a 等于 4
int b = 2 * ++m; //b 等于 6
此外 Java 还具备完备的关系运算符,如==(是否相等),<(小于),>(大于),<=(小于等于),>=(大于等于),!=(不等于);而且 Java 使用&&表示逻辑与,||表示逻辑或,!表示逻辑非;以及七种位运算符&(与)、|(或)、^(异或)、~(非)、 >>(右移)、<<(左移)、>>>(高位填充 0 的右移)。
最后 Java 还支持一种三元运算符 ?: ,这个运算符有时颇有用。它的形式为
condition ? e1 : e2 这是一个表达式,在 condition 为 true 时返回值为 e1,不然为 e2。例如:min = x < y ? x : y; 则 min 为 x 与 y 中的较小值。java