【编程基础】Java 如何完成数据类型转换

在写程序的时候经常遇到数据的运算,在数据运算中又经常遇到不同类型的数据之间进行转换,那么数据类型之间的转换规则是什么样的呢?

Java数据类型转换分为两种:

1、自动类型提升;

2、强制类型转换;

先来说说第一种,自动类型提升。

发生条件:

两种不同的基本数据类型之间进行算术运算,一个操作数的数据类型会自行提升到与另操作数的数据类型;

比如:a + b;

a是double型,b是int型,那么上面的表达式结果是一个什么类型呢?

先来看看不同数据类型计算自动提升的规则:

  • 如果a或者b有一个为double,则另一个也转换为double,如果不满足则进行如下判断;
  • 如果a或者b有一个为float,则另一个也转换为float,如果不满足则进行如下判断;
  • 如果a或者b有一个为long,则另一个也转换为long;
  • 如果以上都不满足则a和b都转换为int进行计算;

进行转换的规则如下:

因为不同数据类型所占用的位数不同,所以在进行数据类型的转换时可能会有数据丢失,上图中实线表示无数据丢失,虚线为有数据丢失。

第二种、强制类型转换;

自动类型提升是一种数据类型自动变为另一种数据类型,强制类型转换则是人为的用进行数据类型改变。

强制类型转换的语法格式是:

type2 变量2 =(type1)变量1;

上面的小括号就是强制类型转换。

例如:

double a = 123.456;

int b = (int)a;

a的值为123,强制类型转换是把小数部分抹去,把整数部分赋值给目标变量。

注意:在进行数据类型强制转换的时候,如果目标数据类型无法容纳转换后的值那么就会出错。比如:(byte)300,结果绝对不是你想要的,所以要避免这种强制类型转换。

以上就是数据类型转换的知识点,截图和部分话语摘自来《Java核心技术卷I》。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-10-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏软件开发 -- 分享 互助 成长

sizeof(结构体)的计算

摘要: 经常被计算结构体的sizeof给搞晕,于是找了个时间,静下心来,搞定它。 一、为什么结构体计算这么乱? 答案是字节对齐,计算机存储系统中以Byte为单位...

3139
来自专栏小狼的世界

Python3.6学习笔记(三)

面向对象编程 Object Oriented Programming 简称 OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作...

832
来自专栏大数据和云计算技术

算法基础:优先队列

算法是基础,小蓝同学准备些总结一系列算法分享给大家,这是第四篇《优先队列》,非常赞!希望对大家有帮助,大家会喜欢! 前面系列文章: 归并排序 #算法基础#...

3266
来自专栏赵俊的Java专栏

由一道 Java finally 执行顺序的题引发的思考

2284
来自专栏PHP在线

字符串和编码

字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才...

2867
来自专栏PhpZendo

带你入门 JavaScript ES6 (二)

上一篇学习下一代 JavaScript 语法: ES6 (一),我们学习了关于块作用域变量或常量声明 let 和 const 语法、新的字符串拼接语法模版字面量...

761
来自专栏有趣的Python

3-Linux C语言结构体-学习笔记

将#include <stdio.h>中stdio.h展开,将未注释的内容直接写入.i文件。

2281
来自专栏九彩拼盘的叨叨叨

学习纲要:JavaScript 数据类型

701
来自专栏沈唁志

PHP中多维数组自定义排序uasort()

1583
来自专栏liukaili_666888999

Swift空格和打印

1093

扫码关注云+社区

领取腾讯云代金券