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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余银桂 中级黑马   /  2012-6-11 23:58  /  1484 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 余银桂 于 2012-6-12 18:06 编辑
  1.         public static void main(String[] args) {
  2.                 int a;
  3.                 a=+1;
  4.                
  5.                 int b;
  6.                 b+=1;
复制代码
为什么 a 那里编译通过, b 反而编译失败!

这 =+ 和 += 有什么区别?

8 个回复

倒序浏览
没有初始化的变量是不能使用的。
回复 使用道具 举报
你后面那个b+=1

就是b=b+1;

你b都没有初始化一个值。肯定错啦

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
首先说错误,   b没有给出初始化
a=+ 1和 int a=1;a+= 1有什么区别?
第一个可以看作是符号,加号
第二个   看作是a=a+1;
回复 使用道具 举报
  1.         a=+1;//给a赋值+1,正号可以忽略
  2.         b+=1;//相当于b=b+1;先计算b加1的值,再赋值给b,可是b此时还未初始化,无法参与运算,所以这里报错
  3.         //变量使用前一定要初始化!
复制代码
回复 使用道具 举报
你可以这样来验证
  1. public static void main(String[] args){
  2.                 int a = 2;
  3.                 a =+1;
  4.                 int b = 2;
  5.                 b+=1;
  6.                 System.out.println(a);
  7.                 System.out.println(b);
  8.                
  9.         }
复制代码
结果是
1
3
所以说明了,a =+1;中的+表示的是正号,而        b+=1;中的+=其实就是java语言自定义的一个符号,就是b=b+1的简写,
就如同++这样的符号一样,一般这样的符号要特别注意优先级问题,比如++的很多面试题:int c = b+++a;问c的值等等
回复 使用道具 举报
a=+1;就是基本的赋值,将+1赋值给a;格式写的清楚一点就是  a   =   +1;不会报错
b+=1;这个表示b = b + 1;b还没有初始化,不能参与这样的运算,所以报错.
回复 使用道具 举报
+= 是JAVA定义定运算符号,而=+不是一个标准运算符号;

  int a;   a=+1;//意思是声明整型变量a,并将+1赋值给a ,这里只做了声明和赋值。
  int b; b+=1;//意思是声明整型变量b,并将b+1的值重新赋值给b,这里声明了b但未给b赋值,所以无法计算b+1, 变量应遵循先声明,赋值后使用的原则。

回复 使用道具 举报
{:soso_e113:}大致了解了!谢谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马