某某茶叶有限公司欢迎您!
金沙棋牌在线 > 金沙棋牌在线 > Java类型转换

Java类型转换

时间:2019-12-29 06:39

为对象的类型做强制转换是一种非常不好的设计。但在某些情况下,我们没有其他选择。Java自诞生的那一天起,就具备这种功能。

以前一直对java中的类型转换了解的不是很清楚,因为平时写代码有IDE的帮助,所以往往忽略这一块的内容,但往往就是这样的小知识点不清楚,很有可能造成很大的错误。所以在闲暇时间总结一下这些可能被遗忘的知识点。网上已经有很多相关的介绍文章了,现在来梳理一番:

自动类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。


低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double


  • char 转int 得到char的ASCII码值
      char c ='a';//定义一个char类型
      int i = c;//char自动类型转换为int
      System.out.println("char自动类型转换为int后的值等于"+i);

运行结果为:

      char自动类型转换为int后的值等于97

1.自动类型转换

自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。在图中,黑色的实线表示无数据丢失的自动类型转换,而红色的虚线表示在转换时可能会精度的损失。

 特例: 可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围

            Short  b = 12;     //合法

            short  b = 1234567;    //非法

金沙棋牌在线 1

我认为Java 8在一定程度改善了这项古老的技术。

基本类型

  • 基本类型优先级

首先来看java中的基本类型有哪些:

byte:byte数据类型是一个8位有符号二进制补码整数。

short:short数据类型为16位有符号二进制补码整数。

int:int数据类型是一个32位有符号二进制补码整数

金沙棋牌在线,long: long数据类型是一个64位二进制补码整数

float: float数据类型是单精度、32位、符合IEEE 754标准的浮点数

boolean: boolean数据类型只有两个可能的值:true和false

double: double数据类型是双精度、64位、符合IEEE 754标准的浮点数;

char: char数据类型是一个16位的Unicode字符

基本类型优先级由低到高排序:

(byte short char) int long float double

其中,byte short char 平级

  • 转换规则

1.有多种数据类型混合计算的时候,低优先级类型自动提升为优先级最大的那个类型再来继续计算

3.高优先级类型转换为低优先级类型时,需要强制类型转换,并且有可能丢失精度或溢出。

2.byte short char 他们三者在计算时,首先会转换为int类型

3.由于byte short char三者平级,他们之间互相转换时需进行强制类型转换。

4.boolean不能与其他类型转换

强制类型转换

    1. 转换的数据类型必须是兼容的。
    1. 格式:(type)value ,type是要强制类型转换后的数据类型
      实例:
public class QiangZhiZhuanHuan{
    public static void main(String[] args){
        int i1 = 123;
        byte b = (byte)i1;//强制类型转换为byte
        System.out.println("int强制类型转换为byte后的值等于"+b);
    }
}

运行结果:
int强制类型转换为byte后的值等于123

2.强制类型转换(Cast)

 

强制类型转换,又被称为造型,用于显式的转换一个数值的类型. 在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。

 

强制类型转换的语法格式:“(type)var”,运算符“()”中的type表示将值var想要转换成的目标数据类型

 

当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值