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
  • 相关阅读:
    聊聊高并发(二十)解析java.util.concurrent各个组件(二) 12个原子变量相关类
    windows curl ssl版本号编译
    扩展MSEG 加入Z字段
    HDU 1565 1569 方格取数(最大点权独立集)
    Codeforces Round #277.5 (Div. 2)
    葡萄城公布新版ActiveReports 9报表控件和报表server
    we标签
    ADO.NET (二)—— ADO和ADO .NET对照
    补:小玩文件2--将文本文件里的全部行加上行号后写到新文件里
    poj3061 Subsequence ,尺取法
  • 原文地址:https://www.cnblogs.com/lixingwu/p/9191876.html
Copyright © 2011-2022 走看看