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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 潘际昌 中级黑马   /  2013-11-27 16:26  /  1253 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. a. byte b = 1 + 1;     
  2.         b. byte b = 1; b = b + 1; //不能自动从一个int 转换成byte;
  3.         c. byte b = 1; b = b += 1;   
  4.         d. byte b = 1; b = ++b;
复制代码

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

6 个回复

倒序浏览
我认为
c. byte b = 1; b = b += 1; (这个编译器会特殊处理,自动帮我们加上类型转换)   
d. byte b = 1; b = ++b;(编译器特殊处理处理)
这两个是对的
回复 使用道具 举报
  1. a. byte b = 1 + 1;    //错的。
  2.         b. byte b = 1; b = b + 1; //不能自动从一个int 转换成byte;
  3.         c. byte b = 1; b = b += 1;  //对的。  不涉及运算。
  4.         d. byte b = 1; b = ++b; //对的。不涉及运算。
复制代码

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1 赞一个!

查看全部评分

回复 使用道具 举报
byte b=1+1是对的,我测试过的。我想可能是jvm在运算时判断是否右边大于左边,不大于则变成byte
回复 使用道具 举报
G.x 初级黑马 2013-11-28 17:11:09
报纸
D答案。其他三个都会牵扯类型转换的问题
回复 使用道具 举报
G.x 初级黑马 2013-11-28 17:12:21
地板
D答案。其他三个都会牵扯类型转换的问题。D答案只是自增,没牵扯到类型转换问题
回复 使用道具 举报
  1.         public static void main(String[] args) {
  2.                 // TODO Auto-generated method stub
  3.                 byte b1 = 1 + 1;     
  4.         //byte b2 = 1; b2 = b2 + 1; //这里是两步运算,中间有一个类型提升的过程,编译错误
  5.         byte b3 = 1; b3 = b3 += 1;  //这里是一部运算, b3直接被赋值了运算后的值,中间虚拟机会自动转换  
  6.         byte b4 = 1; b4 = ++b4;
  7.         
  8.         System.out.println(b1);
  9.         //System.out.println(b2);
  10.         System.out.println(b3);
  11.         System.out.println(b4);
  12.         }
复制代码


评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马