1. 数据类型概况

  1. 基本数据类型
    1. 数值型
      • 整数类型,存放整数(byte[1], short[2], int[4], long[8])
      • 浮点(小数)类型(float[4], double[8])
    2. 字符型(char[2]),存放单个字符
    3. 布尔型(boolean[1]),存放true, false
  2. 引用数据类型
    1. (class)
    2. 接口(interface)
    3. 数组([ ])

2. 基本数据类型的自动转换

当java程序在进行赋值或者运算时,精度小的类型自动转换精度大的数据类型,这个就是自动类型转换

数据类型按精度(容量)大小排序为:

  1. char < int < long < float < double
  2. byte < short < int < long < float < double
    比如 int num = 'c'; double d = 80; 是成立的

自动类型转换注意和细节

  1. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后在进行计算
  2. 当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换
  3. byte, shortchar之间不会相互自动转换
  4. **byte, short, char**三者之间可以计算,在计算时首先转换为**int**类型
  5. boolean不参与转换
  6. 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
    1. // byte, short, char三者之间可以计算,在计算时首先转换为int类型
    2. byte b1 = 1;
    3. byte b2 = 2;
    4. byte b3 = b1 + b2; // 错误,b1 + b2 为int类型
    5. short s1 = 1;
    6. short s2 = b1 + s1; //错误
    7. int i = b1 + b2 + s1; // 正确
    8. // byte, short, char三者之间的任意计算,都会转换为int

3. 基本数据类型的强制转换

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,格外要注意

  1. int i = (int)1.9;
  2. System.out.println(i); // 1,造成精度损失
  3. int j = 1000;
  4. byte b1 = (byte)j;
  5. System.out.println(b1); // 造成数据溢出
  1. 当进行数据的大小从 大—>小,就需要使用到强制转换
  2. 强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
    1. int x = (int)10*3.5+6*1.5; // 编译错误,double类型
    2. int y = (int)(10*3.5+6*1.5); // 正确,int类型
    3. System.out.println(y);
  1. char类型可以保存int的常量值,但不能保存int的变量值,需要强转
    1. char c1 = 100; // 正确
    2. int m = 100;
    3. char c2 = m; // 错误
    4. char c3 = (char)m; // 正确
    5. System.out.println(c3); // 100对应的字符,'d'.
  1. byteshort类型在进行运算时,当做int类型处理

4. 基本数据类型与String类型的转换

  1. 基本数据类型转换为String类型
    将基本类型的值+""即可
    1. int n1 = 100;
    2. float f1 = 1.1F;
    3. double d1 = 4.5;
    4. boolean b1 = true;
    5. String s1 = n1 + "";
    6. String s2 = f1 + "";
    7. String s3 = d1 + "";
    8. String s4 = b1 + "";
    9. System.out.println(s1 + " " + s2 + " " + s3 + " " + s4 + " ");
    10. System.out.println(n1 + " " + f1 + " " + d1 + " " + b1 + " ");
    11. // 100 1.1 4.5 true
    12. // 100 1.1 4.5 true
  1. String类型转换为基本数据类型
    通过基本类型的包装类调用parseXX方法即可
    使用基本数据类型对应包装类的相应方法,得到基本数据类型
    **String**类型转为**char**类型需用到**charAt(int index)**
    1. String s = "123"
    2. int n1 = Integer.parseInt(s);
    3. double n2 = Double.parseDouble(s);
    4. float n3 = Float.parseFloat(s);
    5. long n4 = Long.parseLong(s);
    6. byte n5 = Byte.parseByte(s);
    7. boolean b = Boolean.parseBoolean("true");
    8. short n6 = Short.parseShort(s);
    9. char n7 = s.charAt(0); // 第一个字符