zoukankan      html  css  js  c++  java
  • java基础之 类型转换

    一、自动类型转换

    1、java中不同类型的数据在计算时,为保证数据的精度,数据的类型会以大容量的类型为主;

    2、自动类型转换的排序:

    char、byte、short -> int -> long -> float -> double

    3、字符串和任意类型的数据进行连接运算(+),都会自动转换为字符串;

    4、赋值运算时常量可以进行自动类型转化,变量不可以,例如:

    int a=1byte b=1;
    System.out.println(a+b);
    
    // 结果:2
    
    byte a=1a=a+1;
    
    //结果:java: 不兼容的类型: 从int转换到byte可能会有损失
    //原因:byte 在进行计算时会自动转换为int类型,这时就会变成 byte=int+int int类型被要求转换为byte,导致产生上面的错误。

     5、在进行加运算的时候比int小的数据类型(char、byte、short)之间的运算都会自动转化成int的加运算,例如:

    byte a = 1;  
    byte b = 2;  
    a = b + a;  
    System.out.println("b="+a);   
    // 结果:java: 不兼容的类型: 从int转换到byte可能会有损失
    // 原因:b+a 数据类型自动转化为int了,不能赋值给byte类型的a

    byte a = 1;
    byte b = 2;
    int c = b + a;
    System.out.println(c);

    // 结果:3

    二、强制类型转换

    1、将容量大的数据类型转换为容量小的数据类型,强制类型转换可能会造成精度的降低或者溢出;

    2、强制类型转换符(),括号里为要强制转换为什么类型,例如:

    double a = 1.91;
    int b = (int) a;
    System.out.println(b);
    
    // 结果:1
    // 这里的 a 被强制转换为int类型,小数点被强制去了

    3、字符串不能直接转换为基本数据类型,但可以通过基本类型的封装类型进行转换,例如:

    String s = "12";
    int a = Integer.parseInt(s);
    System.out.println(a);
    
    //结果:12

    4、boolean类型和字符串的类型转换;

    //boolean 转 String
    boolean f = true;
    String s = f + "";
    System.out.println(s);
    //结果:true
    
    //String 转 boolean
    String s = "true";
    boolean f = Boolean.parseBoolean(s);
    System.out.println(f);
    //结果:true

    5、在继承中,子类可以自动转型为父类,但是父类强制转换为子类时只有当引用类型真正的身份为子类时才会强制转换成功,否则失败;

    class Father {}
    class Son extends Father {}
    
    //Father 是 Son的父类
    Father father = new Son();
    Son son = (Son) father;
    
    //father虽然是Father类型的数据,但是它指向的其实是 Son对象
    //所以 (Son) father 是可行的
    
    
    Father father1 = new Father();
    Son son1 = (Son) father1;
    
    //father指向的是 Father对象
    //所以 (Son) father 是不可行的
    //这将会报错 java.lang.ClassCastException
  • 相关阅读:
    面试题 31: 求子数组的最大和
    [面试] 结构体占用空间的问题,内存对齐~! 真的懂了,cpu取加快速度,省空间来考虑。
    [计算机] 32768~32767 计算机中的 1 表示
    C#跨线程调用窗体控件
    合并字节数组
    将汉字转化为2位大写的16进制Unicode
    关公与子龙两大杀手
    早年的J2EE笔记
    给小组新成员的一份信
    c++虚函数详解
  • 原文地址:https://www.cnblogs.com/lixingwu/p/9191876.html
Copyright © 2011-2022 走看看