请看下面的程序:
class TestInt
{
    public static void main(String args[])
    {
        
        int i=10,j=10,k=10;
        int t=(i==j)?++i:--k;
        System.out.println("t="+t);
        System.out.println("i="+i+10);
        System.out.println("k="+k+000);
        
    }
}打印结果是:
t=11
i=1110
k=100t,i没有问题,
只是k,为什么会是100?而不是10000??

解决方案 »

  1.   

    K的值肯定是100~~~~~~~~~
    因为System.out.println("k="+k+000)中的+是要加上""的~~~~~
    你这样等于100+000还是等于100
    如果改成这样System.out.println("k="+k+"000");
    那么K就是10000了
      

  2.   

    TO joy_cz() :
    好像不是你说的这样的.如果K本来应该是10的,+后,变成100了,请看清楚.
      

  3.   

    http://community.csdn.net/Expert/topic/5039/5039559.xml?temp=9.283084E-02
    呵呵,找到了.学习
      

  4.   

    楼主从整型的内存状态来考虑:000的存储状态是什么?全0。
    那么0的存储状态呢?全0。
    所以机器在内存中认为bit位全0的是0,不管你连接多少个0,结果都是一个0,若要实现多个0的效果可以加"",连接字符串。
      

  5.   

    TO:lanseliuying()可是此时的+符号是作为字符串连接的,比如上面的 i 的值.考虑内存中的状态的话,i 的值不会是1110了吧?
      

  6.   

    class TestInt
    {
        public static void main(String args[])
        {
            
            int i=10,j=10,k=10;
            /*
             *++i赋t=11,k值不变
         * result : i=11;t=11;k=10;
             */
            int t=(i==j)?++i:--k;
            System.out.println("t="+t);//print:t=11
            System.out.println("i="+i+10);//print i=1110;当println方法参数以字符串开头                     //时,后面"+"为字符连接符
            System.out.println("k="+k+000);//这里主要是注意"000"实际存着0 参考楼上解说所得
            
        }
    }
      

  7.   

    k的值是10阿
    000是数字,在做加法时当然表示是0
    如果要达到k=10000的效果的话
    应该是:
     System.out.println("k="+k+"000");
      

  8.   

    System.out.println()里面的参数不是String 类型的话,会自动调用toString()的方法.10.toString()是"10",而000.toString()是"0".因为直接在程序中写数字会有一个类型转换的过程,最终取到的只是它的值
      

  9.   

    你们有没有试过System.out.println("k="+k+011) ;
    输出结果是:k=109.奇怪吧?因为001是八进制的如果是System.out.println("k="+k+009) ;
    则不能通过编译,因为八进制怎么可能出现9 ??所以上边说的什么toString()方法根本不严密