A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

yangvsguang

初级黑马

  • 黑马币:30

  • 帖子:6

  • 精华:0

© yangvsguang 初级黑马   /  2016-7-5 11:18  /  587 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

"byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
从两方面去回答这个题
b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值"
那么int x=sc.nextInt();
      int y=sc.nextInt();
      int sum=x+y;        这个jvm就知道x,y里面的具体值了?

6 个回复

倒序浏览
。。。。。。。。。
回复 使用道具 举报
他不知道什么值 但是他知道是什么类型的
回复 使用道具 举报
本帖最后由 Vision-V 于 2016-7-6 00:26 编辑

①byte b1 = 3;
②byte b2 = 4;
③byte b3 = b1 + b2;
这里③不对哦~
java是一种强类型语言.基本数据类型中,每一个类型占得字节大写都是固定的,内存里就开辟固定的空间来存放这个数据,它并不知道你即将键盘录入的值是多少,但是它已经准备好了容器.
上面的③,byte类型的数据在运算时会自动转化为int类型的,因此③式左边是byte类型,只有1个字节,而右边有4个字节,塞不下~所以③式子如果需要强制赋值给b3 的话,右边需要强制转换数据类型.byte b3 = (byte)(b1 + b2);
下面的式子
      int x=sc.nextInt();
      int y=sc.nextInt();
      int sum=x+y;
这里是两个变量x,y接收键盘录入的数值,因为你使用的键盘录入方法是nextInt();这个只能接收输入的整数,那么用int x容器来接收刚好,下面的y同理, int sum=x+y;这里只是一个算式,系统不管你两次录入的值相加多少,你使用了int类型的数据来接收这个和,那系统帮你开辟这个空间,给你一个容器,你要是输入很大了,它就提醒你,警告你,如果在int类型的范围内,它就输出结果给你看~

回复 使用道具 举报
你输入的数字,jvm默认的就是int类型.即你不指定类型的话.jvm就把他当成int类型.相加之后赋值给int型的变量,并不会出什么问题
回复 使用道具 举报
两个byte类型数据运算时会被java自动提升为int类型,计算的结果是int型,没有强转的情况下是无法赋值给byte类型的,而两个int类型数据运算时就是int型,所以结果就是int型,赋值给int型变量是没有问题的。
回复 使用道具 举报
干的漂亮
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马