一、数据类型转换1.1 自动类型转换类型转换的知识。为什么要学习类型转换呢 因为在我们实际开发中可能存在将某种类型变量的值赋值给另一个类型的变量也可能存在多种数据 类型的数据一起运算的情况。 在以上情况中其实都会涉及到类型转换。类型转换的形式总体分为2种一种是自动类型转换一种是 强制类型转换。 这里先学习自动类型转换 什么是自动类型转换呢 答自动类型转换指的是数据范围小的变量可以直接赋值给数据范围大的变量 byte a 12; int b a; //这里就发生了自动类型转换(把byte类型转换int类型) 自动类型转换的原理是怎样的 答自动类型转换其本质就是在较小数据类型数据前面补了若干个字节public class TypeConversionDemo1 { public static void main(String[] args) { // 目标理解自动类型转换机制。 byte a 12; int b a; // 发生了自动类型转换了 System.out.println(a); System.out.println(b); int c 100; // 4 double d c;// 8 发生了自动类型转换了 System.out.println(d); char ch a; // a 97 00000000 01100001 int i ch; // 发生了自动类型转换了 00000000 00000000 00000000 01100001 System.out.println(i); } }自动类型转换还有另外一种形式就是表达式的自动类型转换。所谓表达式指的是几个变量或者几个数 据一起参与运算的式子。 如果同一个表达式中出现不同类型的变量或者数据一起运算这种情况下运算结果是一个什么数据类 型呢需要遵守下面的两条运算规则 1.多种数据类型参与运算其结果以大的数据类型为准 2.byte,short,char 三种类型数据在和其他类型数据运算时都会转换为int类型再运算 注: boolean类型不能与其他基本数据类型相互转换 接下来我们来看代码演示自己试一试 public class TypeConversionDemo2 { public static void main(String[] args) { // 目标掌握表达式的自动类型转换机制。 byte a 10; int b 20; long c 30; long rs a b c; System.out.println(rs); double rs2 a b 1.0; System.out.println(rs2); byte i 10; short j 30; int rs3 i j; System.out.println(rs3); // 面试笔试题 即使两个byte运算结果也会提升为int byte b1 110; byte b2 80; int b3 b1 b2; System.out.println(b3); } }1.2 强制类型转前面我们学习了自动类型转换我们知道可以将数据类型小的数据可以直接赋值给数据范围大的变量。 那反过来能不能将数据范围大的数据直接赋值给数据范围小的变量呢 答案是会报错。 因为数据范围大的数据赋值给数据范围小的变量它有可能装不下就像把一个大桶的水倒入一个小 桶中有溢出的风险。什么是强制类型转换 是强行将范围大的数据赋值给范围小的变量也是可以的这里就需要用到强制类型转换。下面是 强制类型转换的格式目标数据类型 变量名 (目标数据类型)被转换的数据public class TypeConversionDemo3 { public static void main(String[] args) { // 目标掌握强制类型转换。 int a 20; byte b (byte) a; // ALT ENTER 强制类型转换。 System.out.println(a); System.out.println(b); int i 1500; byte j (byte) i; System.out.println(j); } } double d 99.5; int m (int) d; // 强制类型转换 System.out.println(m); // 丢掉小数部分保留整数部分注意事项:1. 强制类型转换可能造成数据(丢失)溢出2. 浮点型强转成整型直接丢掉小数部分保留整数部分返回。