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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© bushangkoukou 中级黑马   /  2013-5-23 01:38  /  1335 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 bushangkoukou 于 2013-5-23 21:09 编辑

  第一种情况:

class printArray
{
                public static void main(String[] args)
                           {
  
                                        int[] arr=new int []{12,545,46,44};
                                       int max = getMax(arr);
                                       System.out.print(max);
                          }
               public static int getMax(int[] arr)
                        {
                                      int max = arr[0];
   
                                        for(int i=1; i<arr.length; i++)
                                             {
                                                    if(arr>max)
                                                          {
                                                                  max = arr;
                                                         }
                                            }
                                      //System.out.print(max);
                                      return max;
                        }

   }



第二种是:

class printArray
{
                public static void main(String[] args)
                           {
  
                                        int[] arr=new int []{12,545,46,44};
                                       int max = getMax(arr);
                                       //System.out.print(max);
                          }
               public static int getMax(int[] arr)
                        {
                                      int max = arr[0];
   
                                        for(int i=1; i<arr.length; i++)
                                             {
                                                    if(arr>max)
                                                          {
                                                                  max = arr;
                                                         }
                                            }
                                      System.out.print(max);
                                      return max;
                        }

   }

请问这两种函数输出有什么区别??结果都是一样的,这里我告诉大家,但是我就是不太明白,一个是在主函数里面输出,一个是在getMax函数里面输出,有什么不一样。

评分

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

查看全部评分

8 个回复

倒序浏览
(1)这种有什么好纠结的,主函数就是一个线程,而且上面的情况是单线程,程序自然的是按照这顺序执行下去,
当执行到getMax()函数自然也就进入到函数去执行。那遇到了打印就打印,该干嘛干嘛。执行完成就把一个结果复制返回去给调用者。
(2)你非得钻牛角尖,说着有区别就这个max定义的地方不一样,各为其主,都是局部变量,之所以输出结果都一样,在哪里打印的都是max的值或者副本。

评分

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

查看全部评分

回复 使用道具 举报
楼主夜战,鼓励鼓励,多休息啊
回复 使用道具 举报
李德全 发表于 2013-5-23 02:28
楼主夜战,鼓励鼓励,多休息啊

人才,又是你啊,,,,,你不也夜战,
回复 使用道具 举报
因为主函数调用的getMax方法,而getMax方法中有输出语句,才会输出啊。
回复 使用道具 举报
史政法 发表于 2013-5-23 09:37
人才,又是你啊,,,,,你不也夜战,

额,又是你,我是半夜出来乘乘凉,不是夜战
回复 使用道具 举报
一种是你调用函数的时候,函数线程会去调用System去输出来。而另一种是你调用函数结束后,主函数线程再去调用输出语句打印结果!
回复 使用道具 举报
标成已解决的吧。。。
回复 使用道具 举报
无论输出语句在main方法中,还是你自己定义的方法中,调用任意一个包含输出语句的方法,都会指向输出语句,当输出语句在main方法在,只要在输出语句之前不是遇上System.exit();后者有抛出异常或error都会执行该输出语句;当输出语句在你自定义的方法中时,该方法可以正常调用和实现其功能就会执行该输出语句,具体选择哪种情况要根据你的需求及逻辑顺序选择,没有一个固定的说法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马