Java类型转换-创新互联

一、隐式转换

把一个取值范围小的数值或者变量,赋值给另一个取值范围大的变量,数据类型可以直接转换。

成都创新互联主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、网络营销推广、网站程序开发、HTML5响应式网站建设公司手机网站制作设计、微商城、网站托管及网站建设维护、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为成都砂岩浮雕行业客户提供了网站制作服务。

例如:

public class Demo01 {public static void main(String[] args) {int a = 10;
        double b = a;
        System.out.println(b);//输出的结果为 10.0
    }//此处由于double类型取值范围较大,所以变量b可以直接转换为double类型
}

表示数据范围从小到大示例:

byte -->(short,char)–>int -->long -->float -->double

注意:虽然 float 占用 4 个字节,但是取值范围要比 8 个字节的 long 更大,原因在于小数的二进制存储形式更加节省内存!

运算过程中的隐式转换

1,取值范围小的数据和取值范围大的数据进行运算,范围小的数据类型会先提升为范围大的数据类型之后,再进行运算。

例如:

public class Demo01 {public static void main(String[] args) {int a = 10;
        double b = 12.3;
        double c = a + b;//此处int类型数据会先转换为double类型,然后再进行加法运算
        System.out.println(c);//此时输出结果为22.3
    }
}

2,byte、short、char 三种数据在运算的时候,都会提升为 int 之后再进行运算。

例如:

public class Demo01 {public static void main(String[] args) {byte a = 10;
        byte b = 20;
        int c = a +b;
        System.out.println(c);//此时输出结果为30
    }
}
二、强制转换

把一个取值范围大的数值或者变量,赋值给另一个取值范围小的变量,数据需要进行强制类型转换。
强制转换格式:目标数据类型 变量名 = (目标数据类型)被强转的数据;

注意:强制转换有可能会出现精度损失

例如:

public class Demo02 {public static void main(String[] args) {double a = 12.3;
        int b = (int)a;
        System.out.println(b);//此时输出结果为12,但丢失了一定的精度
    }
}
三、原码反码补码原码

数据的二进制体现形式,一个字节由8个二进制位组成。
高位:二进制数据中,最左侧的数据,通过高位代表符号位。
0代表正数
1代表负数
其余位表示数值大小

弊端:遇到负数运算,可能会出现错误。

反码

正数的反码与其原码相同。
负数的反码是对其原码逐位取反,但符号位除外。

补码

正数的补码与其原码相同。
负数的补码是在其反码的末位加1。

四、强制转换中的精度损失

在这里插入图片描述

五、常量优化机制

例如:

public class Demo03 {public static void main(String[] args) {byte a = 1+2;
        System.out.println(a);
    }
}

Java存在常量优化机制,在编译的时候(javac)就会将3和4这两个字面量进行运算,在产生的字节码文件中 byte a = 3。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页名称:Java类型转换-创新互联
当前URL:http://scyanting.com/article/eedhd.html