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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭孟涛 高级黑马   /  2013-2-12 23:52  /  2113 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x = Search();
  6.                 System.out.println(x+" ----");
  7.                 Search();
  8.         }
  9.         public static int Search()
  10.         {
  11.                 int i = 9;
  12.                 System.out.println(112);
  13.                 return i;
  14.         }
  15. }
复制代码
输出结果:112
9 ----
112

为什么直接写函数Search();的时候怎么也输出结果“112”,没有返回值?而赋值给x的时候 还输出的返回值“9”。

7 个回复

倒序浏览
直接写函数当然有返回值,只是楼主没有创建变量储存,所以只是输出了“122”

第五行代码,赋值给x,就把返回值“9”赋值给了变量x并执行一次输出"122"
回复 使用道具 举报
因为从主函数开始读
第一句int x = Search();  虚拟机会去找Search方法所以读到System.out.println(112);就打印了112 。
并把返回值9付给了x。
所以这条语句:System.out.println(x+" ----"); 就打印了9 ----。
最后又读Search方法。但没有进行存储,只是调用了该方法。所以就只用到该方法的功能。
当然就打印该语句:System.out.println(112);  结果就是112.
回复 使用道具 举报
直接写函数就是运行了一遍那个函数,函数里有输出112,所以输出112。你调用了函数,可是没有取得它的返回值, Java又不强制检查你有没有用返回值。
回复 使用道具 举报
search()是有值的,只不过你没用而已。你System.out.println(search());看有结果没。
回复 使用道具 举报
最后一句当然有返回值,只是你没使用它,因为你那句话运行到了,不管返不返值,只要运行到,就把这句话执行到,而返回值你没使用。
回复 使用道具 举报
int x = search();  执行函数search(),输出一个123,i 的值返回后把值放到变量x中,接着输出x的值。
直接调用search函数,search();  这时函数search函数内执行一个操作来输出123,i 的值因为没有输出动作因此不显示。

评分

参与人数 1黑马币 +6 收起 理由
郭孟涛 + 6 理解了,return把值返回给函数search,因为.

查看全部评分

回复 使用道具 举报
直接写函数,函数也是有返回值的。但是你没有保存它。int x=Serach(),相当于你将一碗水(Search() )倒到例外一个锅(x)里。如果你直写一个Search();这个返回值就被倒到地上一样,你根本找不到。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马