博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一网打尽各类Java基本数据类型转换
阅读量:5067 次
发布时间:2019-06-12

本文共 2554 字,大约阅读时间需要 8 分钟。

一 自动类型转换

1 自动类型转换图
 
数范围小的向数范围大的进行自动类型转换,如同把小瓶的水倒入大瓶,不会有任何问题。Java支持自动类型转换。
2 代码示例

public class AutoConversion{	public static void main(String[] args)	{		int a  = 6;		// int可以自动转换为float类型		float f = a;		// 下面将输出6.0		System.out.println(f);		// 定义一个byte类型的整数变量		byte b = 9;		// 下面代码将出错,byte型不能自动类型转换为char型		// char c = b;		// 下面是byte型变量可以自动类型转换为double型		double d = b;		// 下面将输出9.0		System.out.println(d);	}}

 

3 运行结果

6.0

9.0
4基本类型的值和字符串连接代码示例

public class PrimitiveAndString{	public static void main(String[] args)	{		// 下面代码是错的,因为5是一个整数,不能直接赋给一个字符串		// String str1 = 5;		// 一个基本类型值和字符串进行连接运算时,基本类型值自动转换为字符串		String str2 = 3.5f + "";		// 下面输出3.5		System.out.println(str2);		// 下面语句输出7Hello!		System.out.println(3 + 4 + "Hello!");		// 下面语句输出Hello!34,因为Hello! + 3会把3当成字符串处理,		// 而后再把4当成字符串处理		System.out.println("Hello!" + 3 + 4);	}}

5 运行结果

3.5

7Hello!
Hello!34

 

二强制类型转换

1概念介绍
希望把上图的右边类型转化为左边类型,则必须进行强制的类型转换,强制类型转换格式是(targettype)value,类似把大瓶的水倒入小瓶,如果大瓶的水很多,将会引起溢出,从而造成数据丢失。这种转换也称为缩小转换。
2 代码示例

public class NarrowConversion{	public static void main(String[] args)	{		int iValue = 233;		// 强制把一个int类型的值转换为byte类型的值		byte bValue = (byte)iValue;		// 将输出-23		System.out.println(bValue);		double dValue = 3.98;		// 强制把一个double类型的值转换为int		int tol = (int)dValue;		// 将输出3		System.out.println(tol);	}}

3 运行结果

-23

3
4 模拟随机字符串示例

public class RandomStr{	public static void main(String[] args)	{		// 定义一个空字符串		String result = "";		// 进行6次循环		for(int i = 0 ; i < 6 ; i ++)		{			// 生成一个97~122的int型的整数			int intVal = (int)(Math.random() * 26 + 97);			// 将intValue强制转换为char后连接到result后面			result = result + (char)intVal;		}		// 输出随机字符串		System.out.println(result);	}}

 

5运行结果

rxyelm

 

三 表达式自动提升

1 自动提升概念
当一个算术表达式包含多个基本类型的值时,整个算术表达式的数据类型将会自动提升,提升规则如下
所有byte类型,short类型和char类型将被提升到int类型
整个算术表达式类型自动提升到与表达式中最高等级操作数同样类型
2 代码示例

public class AutoPromote{	public static void main(String[] args)	{		// 定义一个short类型变量		short sValue = 5;		// 下面代码将出错:表达式中的sValue将自动提升到int类型,		// 则右边的表达式类型为int,将一个int类型赋给short类型的变量将发生错误。		// sValue = sValue - 2;		byte b = 40;		char c = 'a';		int i = 23;		double d = .314;		// 右边表达式中在最高等级操作数为d(double型)		// 则右边表达式的类型为double型,故赋给一个double型变量		double result = b + c + i * d;		// 将输出144.222		System.out.println(result);		int val = 3;		// 右边表达式中2个操作数都是int,故右边表达式的类型为int		// 因此,虽然23/3不能除尽,依然得到一个int整数		int intResult = 23 / val;		System.out.println(intResult); // 将输出7		// 输出字符串Hello!a7		System.out.println("Hello!" + 'a' + 7);		// 输出字符串104Hello!		System.out.println('a' + 7 + "Hello!");	}}

 

3 运行结果

144.222

7
Hello!a7
104Hello!

转载于:https://www.cnblogs.com/ainima/p/6331695.html

你可能感兴趣的文章
微软职位内部推荐-Software Engineer II
查看>>
小程序:彩票机选神器 !
查看>>
ping过程详解
查看>>
MVC - 云服务器部署
查看>>
sqoop数据导入到Hdfs 或者hive
查看>>
AWS国际版的Route 53和CloudFront
查看>>
bzoj 2456: mode【瞎搞】
查看>>
bzoj 2111: [ZJOI2010]Perm 排列计数【树形dp+lucas】
查看>>
excel动态去重和动态排序
查看>>
走进异步世界-犯傻也值得分享:ConfigureAwait(false)使用经验分享
查看>>
sql2000执行sql2005导出的数据脚本时出现“提示含有超过64K限度的行”(转)
查看>>
设计模式(20)-----迭代器模式
查看>>
AutoCAD.NET二次开发:创建自定义菜单(AcCui)
查看>>
NHibernate的调试技巧和Log4Net配置
查看>>
foreach和List.Foreach 退出循环相关问题
查看>>
数据转换
查看>>
同源策略
查看>>
WPF : ListBox的几种Template属性
查看>>
DirectX11 With Windows SDK--13 动手实现一个简易Effects框架、阴影效果绘制
查看>>
WPF绘制矢量图形模糊的问题
查看>>