Java类型转换之自动类型转换和强制类型转换区别理解总结

首先 , 晒出一段测试代码

/*
* java中基本数据类型转换的总结 (需要运算的值类型相同)
*/

// 声明测试变量
int a;
int b;
long c;

// 分割线
System.out.println("\n-------------------------------------------------------------------------------------------");
System.out.println("-------------------------------------需要运算的值类型是相同的------------------------------------");
System.out.println("------------------------------------Int最大值:" + Integer.MAX_VALUE+"------------------------------------");
System.out.println("--------------------------------Long最大值:" + Long.MAX_VALUE+"------------------------------");
System.out.println("-------------------------------------------------------------------------------------------\n");

// 自动类型转换(a * b的值小于int类型的最大值)
a = 1;
b = 2147483647;
c = a * b;
System.out.println("----------------------------------------c = a * b------------------------------------------");
System.out.println("自动类型转换(a * b的值小于或等于int类型的最大值) : a的数值为:" + a + ",b的数值为:" + b + ",c的数值为:" + c);

// 强制类型转换(a * b的值小于int类型的最大值)
a = 1;
b = 2147483647;
c = (long) a * b;
System.out.println("\n-------------------------------------c = (long) a * b--------------------------------------");
System.out.println("强制类型转换(a * b的值小于或等于int类型的最大值) : a的数值为:" + a + ",b的数值为:" + b + ",c的数值为:" + c);
System.out.println("\n-------------------------------------------------------------------------------------------");

// 分割线
System.out.println("----------上面的是a * b的值小于或等于int类型的最大值-------下面的是a * b的值大于int类型的最大值-----------");
System.out.println("-------------------------------------------------------------------------------------------\n");

// 自动类型转换(a * b的值大于int类型的最大值)
a = 2;
b = 2147483647;
c = a * b;
System.out.println("----------------------------------------c = a * b------------------------------------------");
System.out.println("自动类型转换(a * b的值大于int类型的最大值) : a的数值为:" + a + ",b的数值为:" + b + ",c的数值为:" + c);

// 强制类型转换(a * b的值大于int类型的最大值)
a = 2;
b = 2147483647;
c = (long) a * b;
System.out.println("\n-------------------------------------c = (long) a * b--------------------------------------");
System.out.println("强制类型转换(a * b的值大于int类型的最大值) : a的数值为:" + a + ",b的数值为:" + b + ",c的数值为:" + c);

// 分割线
System.out.println("-------------------------------------------------------------------------------------------\n");
System.out.println("------------------------------------------最后总结-------------------------------------------");
System.out.println("------------------------------------如果运算的值类型是相同的-------------------------------------\n");
System.out.println("-----------------------------------------自动类型转换-----------------------------------------");
System.out.println("-------------------------在运算结果不超过本身值类型最大值的情况下,运算结果没问题------------------------");
System.out.println("-----------------------但是如果运算结果超过了本身值类型最大值的情况下,运算结果有误!----------------------\n");
System.out.println("-----------------------------------------强制类型转换-----------------------------------------");
System.out.println("-------------------------在运算结果不超过本身值类型最大值的情况下,运算结果没问题------------------------");
System.out.println("------------------------如果运算结果超过了本身值类型最大值的情况下,运算结果没问题!----------------------");

接下来是测试结果显示图片

这里写图片描述

通过测试的结果,我有了两个猜测

( 需要运算的值类型相同 ) 自动类型转换 和 强制类型转换 的执行过程为:

猜测一 :
自动类型转换 , 为 先进行值之间的运算 , 然后把结果值的类型转换
强制类型转换 , 为 先将需要运算的值进行类型转换 , 然后进行值之间的运算

猜测二 :
自动类型转换 , 使用 运算的值类型最大值为界限 , 如果 超出了这个值 , 那么 运算将出错
强制类型转换 , 使用 需要强转的值类型最大值为界限 , 如果 超出了这个值 , 那么 运算将出错

再晒出一段代码

/*
 * java中基本数据类型转换的总结 (需要运算的值类型不同)
 */

// 声明测试变量
int a;
long b;
long c;

// 分割线
System.out.println("\n-------------------------------------------------------------------------------------------");
System.out.println("-------------------------------------需要运算的值类型是不同的------------------------------------");
System.out.println("------------------------------------Int最大值:" + Integer.MAX_VALUE+"------------------------------------");
System.out.println("--------------------------------Long最大值:" + Long.MAX_VALUE+"------------------------------");
System.out.println("-------------------------------------------------------------------------------------------\n");

// 自动类型转换(c的值小于int类型的最大值)
a = 1;
b = 2147483647;
c = a * b;
System.out.println("----------------------------------------c = a * b------------------------------------------");
System.out.println("自动类型转换(a * b的值小于或等于int类型的最大值) : a的数值为:" + a + ",b的数值为:" + b + ",c的数值为:" + c);

// 强制类型转换(c的值小于int类型的最大值)
a = 1;
b = 2147483647;
c = (long) a * b;
System.out.println("\n-------------------------------------c = (long) a * b--------------------------------------");
System.out.println("强制类型转换(a * b的值小于或等于int类型的最大值) : a的数值为:" + a + ",b的数值为:" + b + ",c的数值为:" + c);

// 分割线
System.out.println("\n-------------------------------------------------------------------------------------------");
System.out.println("----------上面的是a * b的值小于或等于int类型的最大值-------下面的是a * b的值大于int类型的最大值-----------");
System.out.println("-------------------------------------------------------------------------------------------\n");

// 自动类型转换(c的值大于int类型的最大值)
a = 2;
b = 2147483647;
c = a * b;
System.out.println("----------------------------------------c = a * b------------------------------------------");
System.out.println("自动类型转换(a * b的值大于int类型的最大值) : a的数值为:" + a + ",b的数值为:" + b + ",c的数值为:" + c);

// 强制类型转换(c的值大于int类型的最大值)
a = 2;
b = 2147483647;
c = (long) a * b;
System.out.println("\n-------------------------------------c = (long) a * b--------------------------------------");
System.out.println("强制类型转换(a * b的值大于int类型的最大值) : a的数值为:" + a + ",b的数值为:" + b + ",c的数值为:" + c);

// 分割线
System.out.println("-------------------------------------------------------------------------------------------\n");
System.out.println("------------------------------------------最后总结-------------------------------------------");
System.out.println("------------------------------------如果运算的值类型是不同的-------------------------------------\n");
System.out.println("-----------------------------------------自动类型转换-----------------------------------------");
System.out.println("------------------------在运算的时候,会将不相同的数据类型转换成相同的数据类型然后在开始运算----------------\n");
System.out.println("-----------------------------------------强制类型转换-----------------------------------------");
System.out.println("------------------------在运算的时候,会将不相同的数据类型转换成相同的数据类型然后在开始运算----------------");

接下来是测试结果显示图片

这里写图片描述

通过测试的结果,我有了个猜测

( 需要运算的值类型不同 ) 自动类型转换 和 强制类型转换 的执行过程为:

猜测 :
运算的时候 , 会将需要运算的 不相同的数据类型 全部转换成 参与运算中数据类型中最大的那个数据类型

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值