Java的数据类型分为两大类:基本数据类型,引用数据类型。

基本数据类型:包括 整型、 浮点数 、 字符 、 布尔 。

1.整型:表示的是整数。分为字节型byte、短整型short、整型int、长整型long。

2.浮点型:表示的是小数。包括单精度浮点数float, 双精度浮点数double。

3.字符型:表示的是单个字符。类型只有一个是char。

4.布尔型:表示的是真假。类型是boolean ,其值只有真假两种情况。

java 为什么类型转换 java 中的类型转换是什么_数据类型


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位为符号位

java 为什么类型转换 java 中的类型转换是什么_Java_02


图 中六个实箭头表示无信息损失的转换,而三个虚箭头表示的转换则可能会丢失精度。有时在程序设计中也需要进行在图 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 中的较小值。