public class UseThree { /**
 * @param args
 */

 final int a=1;
int b;
public void print()
{
System.out.println("a+b="+a+b);

}
}
class UseThree1
{

public static void main(String[] args) {
// TODO Auto-generated method stub
        UseThree a1=new UseThree();
        a1.b=10;
        a1.print();
        int c;
        c=a1.a+a1.b;
        System.out.println(a1.a+a1.b);
}}
得到的结果是
a+b=110
11为什么第一结果是110呢?

解决方案 »

  1.   

    你还没有搞清楚运算顺序和类型转换吧!!
    System.out.println("a+b="+a+b); 
    首先("a+b="不说了后面+a,尽管是整型,但是会转换成String和前面的字符串进行拼合。后面的同理。
    也就是("a+b="+"1")+"10"
    仔细研读java基础。找一本最便宜最薄的相关书籍,都可以看到的
      

  2.   

    同优先级的运算时从左到右,第一个"a+b="+a+b; 先算"a+b="+a, 结果类型为String,再+b,相当于字符拼接...而第二个a1.a+a1.b, 是int型相加,结果还是int型