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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周坤 中级黑马   /  2012-8-7 02:24  /  2044 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class StaticDe {

  2.         public static Object obj;
  3.         public static int number=5;
  4.         public static String ss="为什么";
  5.        
  6.         public static void main(String[] args) {

  7.                 System.out.println(obj);
  8.                 System.out.println(number);
  9. //                System.out.println(obj+number+"为什么编译失败?");
  10.                 System.out.println("为什么编译成功?"+obj+number);
  11.                

  12.         }

  13. }
复制代码

6 个回复

倒序浏览
代码复制全了么?我试了编译通过的啊。
回复 使用道具 举报
本帖最后由 李知伦 于 2012-8-7 03:28 编辑

obj+number    Object对象不能用+跟整形的对象进行运算
""+obj+number=new StringBuffer().append("").append(obj).append(number).toString()
StringBuffer类的append()方法,可以传入Object类型的变量
回复 使用道具 举报
因为代码运行是有先后顺序的,
  System.out.println(obj+number+"为什么编译失败?");就拿这句话来说吧,
他会先运行obj+number,而number是int类型变量,而obj是Object类型的变量,是不能进行“+”号运算的,所以编译失败。
但是System.out.println("为什么编译成功?"+obj+number);这句话会编译成功而且会有运行结果,
因为任何数据跟""字符串进行加法运算后其结果都是字符串,所以"为什么编译成功?"会先跟obj运算结果是个字符串,
在跟number运算,结果也是个字符串。
回复 使用道具 举报
本帖最后由 戎石锁 于 2012-8-7 07:35 编辑

class public class StaticDe
{
        public static Object obj;
        public static int number=5;
        public static String ss="为什么";
        public static void main(String[] args)
        {
                System.out.println(obj);
                System.out.println(number);
                //System.out.println(obj+number+"为什么编译失败?");
                //因为而obj是Object类型的变量,number是int类型变量,不能进行“+”号运算的,所以编译失败。

                System.out.println("为什么编译成功?"+obj+number);   
                //因为任何数据和“”相加后的结果都是字符串 ,所以最后结果也是字符串      
        }
}

//上面的代码和 下面这个代码道理一样

public class Test
{
        public static void main(String args[])
        {
                System.out.println(1+2);
                System.out.println(""+1+2);//1和“”是字符串 然后再和2相加也是字符串,所以结果是12
                System.out.println(1+""+2);
                System.out.println(1+2+"");
        }
}

打印结果是3  12  12  3
回复 使用道具 举报
谢谢各位。
问题已解决。
回复 使用道具 举报
public class StaticDe {

        public static Object obj;
        public static int number=5;
        public static String ss="为什么";
        
        public static void main(String[] args) {

                System.out.println(obj);
                System.out.println(number);
                //楼主null+数字是错误的,中间加个字符串,
               System.out.println(obj+""+number+"为什么编译失败?");
                System.out.println("为什么编译成功?"+obj+number);
               
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马