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
  • 相关阅读:
    HDU 4348 To the moon(可持久化线段树)
    HDU 5875 Function 大连网络赛 线段树
    HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)
    HDU 5876 大连网络赛 Sparse Graph
    HDU 5701 中位数计数 百度之星初赛
    CodeForces 708B Recover the String
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    ASP.NET生成验证码
    ASP.NET生成验证码
    ASP.NET生成验证码
  • 原文地址:https://www.cnblogs.com/lixingwu/p/9191876.html
Copyright © 2011-2022 走看看