IT兄弟连 Java语法教程 数据类型转换
类型转换是将一个值从一种类型更改为另一种类型的过程。例如,可以将String(字符串,字符串是Java中非常特殊的数据类型,字符串属于引用类型,但是可以像基本类型一样使用字面值赋值)类型数据“456”转换为一个数值型,而且可以将任意类型的数据转换为String类型。
如果从低精度(比如byte,最大值127)数据类型向高精度(比如short,最大值32767)数据类型转换,则永远不会溢出,并且总是成功的;而把高精度数据类型向低精度数据类型转换则必然会有信息丢失,有可能失败。
数据类型转换有两种方式,即隐式转换与显式转换(强制类型转换)。
隐式类型转换
从低级类型向高级类型的转换(比如byte向int转换),系统将自动执行,程序员无需进行任何操作。这种类型的转换成为隐式转换(自动类型转换)。下列基本数据类型会涉及数据转换,不包括逻辑类型和字符类型。这些类型按精度从低到高排列的顺序为byte<short<int<long< float<double。
例如如下代码;使用int型变量为float型变量赋值,此时int型变量将隐式转换成float型变量,如下所示:
int x = 50; //声明int型变量x
float y = x; //将x赋值给y
此时执行输出语句,y的结果将是50.0。
隐式类型的转换也要遵循一定的规则,来解决在什么情况下将那种类型的数据转换成另一种类型的数据。表11列出了各种数据类型转换的一般规则。

下面通过一个简单实例介绍数据类型隐式转换
例:创建类Conver,在主方法中创建不同数值型的变量,实现将各变量隐式转换。
public class Conver{
public static void main(String[] args){
byte myByte = 127;
int myInt = 150;
float myFloat = 452.12f;
double myDouble = 45.46546;
char myChar = 10;
System.out.println("byte型与float型数据进行运算结果为:"
+ (myByte + myFloat));
System.out.println("byte型与int型数据进行运算结果为:"
+ (myByte + myInt));
System.out.println("byte型与char型数据进行运算结果为:"
+ (myByte + myChar));
System.out.println("double型与char型数据进行运算结果为:"
+ (myDouble + myChar));
}
}
编译并运行该程序,控制台将显示如图15所示的内容。

图15 Conver运行结果
要理解类型转换,可以这么想象,大脑前面是一片内存,源和目标分别是两个大小不同的内存块(由变量及数据的类型来决定),将元数据赋值给目标内存的过程,就是用目标内存块尽可能都地套取源内存中的数据。
显示类型转换
当把高精度的变量的值赋给低精度的变量时,必须使用显示类型转换运算(又称强制类型转换)。语法如下:
(类型名)要转换的值
下面通过几种常见的显示数据类型转换实例来说明明
例:将不同的数据类型进行显示类型转换,代码如下:
int a = (int)45.23 //此时输出a的值为45
long y = (long)456.6F; //此时输出y的值为456
int b = (int)'d'; //此时输出b的值为100
当执行显示类型转换时可能会导致精度损失,只要是boolean类型移位其他基本类型之间的转换,全部都能以显示类型转换的方法达到。
当把整数赋值给一个byte、short、int、long型变量时,不可以超出这些变量的取值范围,否则必须进行强制类型转换,例如:
byte b = (byte)129;
上面代码中字面量129已经超出了byte的最大支持范围,所以必须使用显示类型转换才能赋值给byte型变量b。
IT兄弟连 Java语法教程 数据类型转换的更多相关文章
- IT兄弟连 Java语法教程 标识符和关键字
Java语言也和其它编程语言一样,使用标识符作为变量.对象的名字.也提供了一系列的关键字用以实现特别的功能.本小节将详细介绍Java语言的标识符和关键字等内容. 1.分隔符 Java语言里的分号“;” ...
- IT兄弟连 Java语法教程 Java语法基础 经典面试题
1.Java语言中有几种基本类型?分别是什么?请详细说明每种类型的范围以及所占的空间大小? Java语言中有8中基本类型,分别是代表整形的byte.short.int和long,代表浮点型的float ...
- IT兄弟连 Java语法教程 变量1
什么是变量 在Java程序中,变量是基本的存储单元.是在程序运行中值可以改变的一块内存区域.变量是通过标识符(变量名).变量类型及可选的初始化器来定义的,此外,所有的变量都有作用域,作用域定义了变量的 ...
- IT兄弟连 Java语法教程 Java语言的其他特性
Java语言中除了非常重要的跨平台特性外,还有如下几个关键特性: ● 语法简单易学 Java语言的语法简单明了,容易掌握,而且是纯面向对象(OOP)的语言,Java语言的简单性主要体现在以下几个方面 ...
- IT兄弟连 Java语法教程 数组 数组的初始化
Java语言中数组必须先初始化,然后才可以使用.所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值. 这时有人会问,能不能只分配内存空间,不赋初始值呢?答案是肯定不行的,一旦为数组 ...
- IT兄弟连 Java语法教程 Java的发展历程
只有少数几种编程语言对程序设计带来过根本性的影响.其中,Java的影响由于迅速和广泛而格外突出.可以毫不夸张的说,1995年Sun公司发布的Java1.0给计算机程序设计领域带来了一场变革.这场变革迅 ...
- IT兄弟连 Java语法教程 数组 多维数组 二维数组的初始化
二维数组的初始化与一位数组初始化类似,同样可以使用静态初始化或动态初始化. 1)静态初始化 静态初始化的格式如下: 数组名字 = new 数组元素的类型[][]{new 数组元素的类型[]{元素1,元 ...
- IT兄弟连 Java语法教程 数组 多维数组 二维数组的声明
Java语言里提供了支持多维数组的语法.但是这里还想说,从数组底层的运行机制上来看是没有多维数组的. Java语言里的数组类型是引用类型,因此数组变量其实是一个引用,这个引用指向真实的数组内存,数组元 ...
- IT兄弟连 Java语法教程 数组 使用foreach循环遍历数组元素
从JDK5之后,Java提供了一种更简单的循环:foreach循环,也叫作增强for循环,这种循环遍历数组和集合更加简洁.使用foreach循环遍历数组和集合元素时,无需获得数组或集合的长度,无需根据 ...
随机推荐
- PWA 学习笔记(五)
离线与缓存 资源请求的拦截代理: 1.资源请求的判断: (1)fetch 事件会拦截页面上所有的网络资源请求,但我们通常只对部分资源请求进行处理, 其余的请求会继续走浏览器默认的资源请求流程 (2)f ...
- Linux平台达梦数据库V7单实例安装方式之图形方式
一 前言 我们在学习任何一个应用时,了解它的最初步骤通常是学会如何进行安装配置,后序才去关心如何使用,学习达梦数据库也是如此,而达梦数据库的安装提供了多种方式,接下来会一一介绍每种安装方式,达梦数据库 ...
- nginx 配置实例-反向代理
反向代理实例一 虚拟机IP:192.168.116.129实现效果:使用 nginx 反向代理,访问 www.123.com 直接跳转到 虚拟机的192.168.116.129:8080 实验代码 ...
- [洛谷P4942][题解]小凯的数字
这题打着高精的旗号其实是闹着玩的……(我不是题目) 数据范围就是提示你这题O(1)的 我们知道,一个数膜9的余数等于它数字和膜9的余数 我们可以把l到r加起来然后膜9 也就是(l+r)(r-l+1)/ ...
- SQL Server事务复制(sql 2008 r2)
一.环境准备 1.两个虚拟服务器 主机1:XINXIBU01 作为发布和分发服务器 主 机2:XINXIBU02 192.168.1.160 作业阅服务器 2.SQL SERVER sql 2 ...
- 2019阿里天猫团队Java高级工程师面试题之第一面
2019阿里天猫团队Java高级工程师面试题之第二面 2019阿里天猫团队Java高级工程师面试题之第三面 1.五分钟自我介绍,说说自己的擅长及拿手的技术 自我介绍是为了考察面试者的语言表达和总结概括 ...
- Python中容易忽视的知识点
今天坐在实验室,觉得有点无聊,想了下,很久没写博客了,就来写一点,正好遇到了一个有意思的小问题,分享给大家. 首先我们通过一个小的实验来看一下内容: 不管是 Python2 还是 Python3 环境 ...
- Leetcode题解 - BFS部分题目代码+思路(896、690、111、559、993、102、103、127、433)
和树有关的题目求深度 -> 可以利用层序遍历 -> 用到层序遍历就想到使用BFS 896. 单调数列 - 水题 class Solution: def isMonotonic(self, ...
- PHP 开发工程师基础篇 - PHP 数组
数组 (Array) 数组是 PHP 中最重要的数据类型,可以说是掌握数组,基本上 PHP 一大半问题都可以解决. PHP 数组与其他编程语言数组概念不一样.其他编程语言数组是由相同类型的元素(ele ...
- Github新项目Dress(好耶是女装)
面向可爱的蓝孩子 (/ω\) 的 git 学习实践项目,包含了600多位蓝孩子的女装照,访问前做好心理准备. 每个人都可以成为这个项目的参与者 访问地址:https://github.com/kome ...