为了账号安全,请及时绑定邮箱和手机立即绑定

类型转换时候,编译器是如何具体实现的?

package a0319v01;

public class a0319v01 {

public static void main (String[] args){

int score1 = 82;

double score2 = score1;

int score3 = (int)score2;

System.out.println("score1 = "+score1);

System.out.println("score2 = "+score2);

System.out.println("score3 = "+score3);

}

}

运行结果显示:

score1 = 82

score2 = 82.0

score3 = 82


请问,在编译 double score2 = score1; 这条语句时候,编译器是具体怎样进行的?为何score1类型转换后值没变?而后面强制类型转换 int score3 = (int)score2; 时候,score2内存里的数是如何让进行取舍,或者编译时候如何取整的? 

正在回答

3 回答

double是有小数的,你原来的score1就是整数82,所以转成double后取成了小数82.0,后面double强制转换为int是直接将小数部分去掉,所以就又变回82了,而不是82.0

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1165161    人
  • 解答问题       17581    个

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

进入课程

类型转换时候,编译器是如何具体实现的?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信