黑马程序员技术交流社区

标题: 为什么直接写函数没有返回值? [打印本页]

作者: 郭孟涛    时间: 2013-2-12 23:52
标题: 为什么直接写函数没有返回值?
  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”。


作者: 石琪    时间: 2013-2-13 00:05
直接写函数当然有返回值,只是楼主没有创建变量储存,所以只是输出了“122”

第五行代码,赋值给x,就把返回值“9”赋值给了变量x并执行一次输出"122"
作者: Gaara    时间: 2013-2-13 00:30
因为从主函数开始读
第一句int x = Search();  虚拟机会去找Search方法所以读到System.out.println(112);就打印了112 。
并把返回值9付给了x。
所以这条语句:System.out.println(x+" ----"); 就打印了9 ----。
最后又读Search方法。但没有进行存储,只是调用了该方法。所以就只用到该方法的功能。
当然就打印该语句:System.out.println(112);  结果就是112.
作者: 王昕    时间: 2013-2-13 12:21
直接写函数就是运行了一遍那个函数,函数里有输出112,所以输出112。你调用了函数,可是没有取得它的返回值, Java又不强制检查你有没有用返回值。
作者: 朱玉玺    时间: 2013-2-13 15:05
search()是有值的,只不过你没用而已。你System.out.println(search());看有结果没。
作者: 史政法    时间: 2013-2-13 16:47
最后一句当然有返回值,只是你没使用它,因为你那句话运行到了,不管返不返值,只要运行到,就把这句话执行到,而返回值你没使用。
作者: huangxiaoyue    时间: 2013-2-14 00:07
int x = search();  执行函数search(),输出一个123,i 的值返回后把值放到变量x中,接着输出x的值。
直接调用search函数,search();  这时函数search函数内执行一个操作来输出123,i 的值因为没有输出动作因此不显示。
作者: dzr19850306    时间: 2013-2-14 09:26
直接写函数,函数也是有返回值的。但是你没有保存它。int x=Serach(),相当于你将一碗水(Search() )倒到例外一个锅(x)里。如果你直写一个Search();这个返回值就被倒到地上一样,你根本找不到。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2