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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程宏志 中级黑马   /  2012-7-19 01:29  /  2220 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这里我的解释不知道有问题没,请高手指点下!

未命名.JPG (104.3 KB, 下载次数: 63)

return的问题

return的问题

评分

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

查看全部评分

7 个回复

倒序浏览
  1. class Sui
  2. {

  3.         public static void main(String[] args)
  4.         {
  5.                 int x = method();

  6.                 System.out.println(x);
  7.         }
  8.        
  9.         public static int method()
  10.         {
  11.                 int temp = 1;
  12.                 for (int i = 0;i<5 ;i++ )
  13.                 {
  14.                         temp = i;
  15.                         //System.out.println(temp);这里既然有了返回值,就没必要将他进行输出,这是画蛇添足
  16.                 }
  17.                 return temp;//用于跳出该函数,也就是结束该函数
  18.         }
  19. }
复制代码
希望对你有所帮助

评分

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

查看全部评分

回复 使用道具 举报
return是退出函数。你没有写出贴出主函数,我想应该是打印的
System.out.println(aa.method());在调用method()方法时,返回值是temp的值。
在你的方法里,调用这个方法的时候,先循环,循环过程中,输出了1,2,3,4。最后到return temp,此时temp=4,所以,最终输出的结果为
1 2 3 4 4
public static int method()

12.        {

13.                int temp = 1;

14.                for (int i = 0;i<5 ;i++ )

15.                {

16.                        temp = i;

17.                        System.out.println(temp);//如果注释掉这句,打印的结果是就一个值4。

18.                }

19.                return temp;//用于跳出该函数,也就是结束该函数

20.        }

至于return i,出现1 2 3 4 5 ,是因为在判定for循环的时候,i最后时候等于了5,return i,返回值结果就是5.
回复 使用道具 举报
return语句就是用来返回你这个方法所需要返回的值,并退出该方法。当你这个方法不需要返回任何值是,你在定义方法是就应该用void声明。
你的方法名为int method,所有返回值的类型必须是int类型的。定义为void method的话就没有返回值,出现1,2,3,4,4的结果
不是return中有两个语句,而是你在main方法中调用这个方法时肯定是打印了这个返回值,你的方法本身就用了System.out.println(temp)
这个打印语句,意思就是说你在调用这个方法时它帮你打印出来的1,2,3,4。后面那个4是temp的返回值返回给了你在main方法
调用时的那个方法。而且你应该是在调用这个方法的前面加了打印。所以返回回来的4也被打印了。
至于i为1,2,3,4,5是同理的。当i=4时,执行完for循环后i++,这时i=5,返回i再打印,就是1,2,3,4,5。
回复 使用道具 举报
楼主的代码貌似有点问题吧,这里return的作用是返回结果值,return temp;就是返回temp的值, 即0,1,2,3,4.
而这里的System.out.println(t);打印出的值是4,即调用method1方法返回for循环打印出的最后一个值,即为4,所以最后打印的结果是0,1,2,3,4,4,如下代码所示:


{T~}OUUF91$U{B2CH$}9}VA.jpg (34.48 KB, 下载次数: 25)

{T~}OUUF91$U{B2CH$}9}VA.jpg

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2 奖励1分

查看全部评分

回复 使用道具 举报
for循环共执行5次
第一次的值 i :0
          temp : 0
第二次  i=1
         temp=1
第三次  i=2
          temp=2
第四次  i=3
          temp=3
第五次  i=4
          temp=4
第6次 i=5 不满足循环条件 退出循环 所以temp = i 不执行
      temp=4
l楼主应该在主函数中还有一个打印语句,分别输出i 和 temp 的值
return语句没有楼主说的隐藏了两个语句
return语句是在循环结束后才执行的 所以根本不可能每次循环结束都返回temp的值
关于return语句的用法:
return的常用作用有以下两种
一种是返回参数所用的关键字,假如一个有返回值的方法执行完了之后需要返回一个参数
示例:public string functionTest(){
         String a = "abc";
         return a;
}
那么这个方法被调用之后就会返回一个值为abc的字符串,string result = functionTest();

第二种用法是,代码执行到此处终止。
比如当代码执行到某个地方会出现几种结果,然后其中一种结果就不能执行后续代码
这时候在那里加上一个return就可以终止后面的代码执行。

          temp=4

评分

参与人数 1技术分 +1 收起 理由
黑马张扬 + 1

查看全部评分

回复 使用道具 举报
for代表循环每次循环都执行一次i++也就是自增1,直到不满足for循环的条件为止,当i不小于5时循环就会停止也就是i循环到等于5时循环停止,所以输出的i是5,而当i=5时循环是不执行的所以要是返回temp的值是4
回复 使用道具 举报
  1. package demo;

  2. public class forDemo {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 forDemo fd = new forDemo();
  9.                 fd.method();
  10.         }
  11.         public void method(){
  12.                 int i =0;
  13.                 int temp =1;
  14.                 for (; i < 5; i++) {
  15.                         temp=i;
  16. //                        System.out.println(temp);
  17.                         System.out.println(".....................");
  18.                 }
  19.                 System.out.println(temp);
  20.         }

  21. }
复制代码
for循环,基本格式:
for(初始化部分;循环条件;迭代部分){
             循环体
              }
执行for语句时,先执行初始化部分,这部分只会被初始化一次,接下来就是作为循环条件的布尔表达式,true就执行循环体,接下来执行迭代部分,然后再就是作为循环条件的布尔表达式,如此反复。
楼主的代码           int i =0;
                int temp =1;
                for (; i < 5; i++) {
                        temp=i;
                        System.out.println(temp);                       
                }
第一次循环:判断循环条件i<5,true,把i=0的值赋给temp,然后打印temp的值为0,迭代部分i++后i=1
第二次循环:判断循环条件i<5,true,把i=1的值赋给temp,然后打印temp的值为1,迭代部分i++后i=2
第三次循环:判断循环条件i<5,true,把i=2的值赋给temp,然后打印temp的值为2,迭代部分i++后i=3
第四次循环:判断循环条件i<5,true,把i=3的值赋给temp,然后打印temp的值为3,迭代部分i++后i=4
第五次循环:判断循环条件i<5,true,把i=4的值赋给temp,然后打印temp的值为4,迭代部分i++后i=5
第六次循环:判断循环条件i<5,false,终止循环,此时temp的值为4,
接下来运行循环外的return语句,即该函数返回的那个值是4,这儿没有隐含打印temp,你的函数是有返回值的,这儿只是返回一个匹配你返回值类型的一个值,
这个函数的的目的是取到一个值,只是取到,至于调用它的别的对象怎么处理,你是不知道的,所以我们就不能打印,只是返回这个值。

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马