java中关于return和void

我知道return是有返回值,void没有。这两个有什么区别?什么情况下使用return,什么情况下使用void?

6个回答

如果你调用这个方法的目的是为了求出一个值,得出一个结果。
你就得加对应返回类型,这就需要return。
如果你的方法为了赋值或者其他不要结果的运算,就可以用void。

qq_38135036
qq_38135036 明白了
2 年多之前 回复
yangymy
yangymy 回复qq_38135036: 打个比喻,假如说你要去超市买东西,但是你没钱,所以你要先赚钱,这里你的需求是钱。所以你先去赚钱,我们把赚钱的所有步骤都整合起来,这就是一个方法,最终赚了多少钱,你需要一个返回这个钱数用来买东西。其实就是需求的问题,你需要的话就返回,不需要就无所谓了。这个在项目中挺明显的。
2 年多之前 回复
yangymy
yangymy 回复qq_38135036: 需要哪个就返回哪个,如果都需要,可以放入集合
2 年多之前 回复
qq_38135036
qq_38135036 如果一个方法中有多个值,那要返回哪个值?
2 年多之前 回复

根据所写方法的功能需要:
void是无返回值的意思。
比方说 public void walk()
{
System.out.print("你好!");
}
如果别的地方调用这个方法 就会打印出 你好!
再看这里:
public String walk() //注意这里的返回类型是String不是void了
{
System.out.print("你好!");
return "哈喽"; //注意这里这个return 如果不写就会报错!
}
原因就是因为上面 的返回类型必须是String型
如果写的是void意思就是不需要返回类型。所以就没必要写return 了
如果方法上面写了某种返回类型 就必须写return后面跟 相应的类型值

yangymy
yangymy 回复qq_38135036: 我觉得void不能替代return,不然你的方法就只能自己玩,不能跟别人玩了。
2 年多之前 回复
qq_38135036
qq_38135036 这些我明白...那么这样是不是说明用void写的方法可以完全替代return的方法或者用return方法完全替代void?
2 年多之前 回复

这个是根据你的需要,你写的函数执行完任务需要有返回值的就
public 返回数据类型 函数名(){
return 返回数据};

你写的函数执行完任务不需要有返回值的就
public void 函数名(){};

dhcao1112
TuringK 回复qq_38135036: 执行到return就返回,并结束方法。就算有很多个return。只要执行到其中一个,方法就结束。所以,返回哪个值,看的是执行到哪个return
2 年多之前 回复
qq_38135036
qq_38135036 返回值有什么用?如果一个方法里有多个值,那要返回哪个值?
2 年多之前 回复

当你调用方法需要返回值的时候,就用return返回值,不需要返回值的时候,就void。那么返回值是干嘛的呢?举例:
1.//该方法返回一个整数,是参数a和b的和
public int sum(int a,int b){
int s = a+b;
return s;
}
2.//该方法无返回值,调用它会输出一句话。
public void pri(){
System.out.println("中华人民共和国")
}
什么时候需要返回值,什么时候不需要,关键看使用者,用这个方法来干什么。例1用来求和,那么就需要传入两个整数,返回他们的和。例2仅仅用来
打印一行字符串,那么就不需要返回值,直接调用就可以了。

这个返回值是你执行完一个方法后要返回的结果:-->当你需要返回值的时候就return返回值,方法结束后需要什么样的返回结果就直接返回就可以了,可以是运算的结果,要创建的对象等等,当你的方法设计的比较简单的时候例如就是输出一句乃至多话的时候就没必要返回值就是一个void,总结一句话要不要返回值是看你设计的方法结束后想得到啥样的结果的。

你这个问题很容易解决,只需要函数头即可知道什么时候用return,什么时候不用return。
一个函数的结构如下:
public/private 返回值类型 函数名(参数列表)
{
方法体;
}
当返回值类型为void的时候代表无返回值(或者可以理解为返回值类型为空,这是没有return)
当返回值类型为其他的数据类型时,如int,double等,就需要返回相应的数据类型,此时就需要用return返回该函数需要返回的数据类型。
(注:你这个问题应该是高级程序语言讲函数的时候会讲到的内容)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于return和void的问题?
我是java初学者:rnreturn关键字的用法:1.已经做完,离开此方法;2.如果此方法产生一个值,这个值放在return后面rn如果不想返回值,就指示方法返回void(空),此时return的作用只是退出此方法,但是书上(Thinking in java)说,没有必要到方法借宿是才离开,可在任何地方返回。这个“任何地方”很不理解,是在方法体的“任何地方”吗?还是在调用它时的“哪个地方”?rn我想的是在方法体的任何地方:void A()System.out.println();return;System.out.println();如果把这个方法放在一个类中在编译时不成功,会出现后面return后面的那句话无法访问的访问的错误,那么说明我所理解的“任何地方”是错误的?那这个“任何地方”到底是个什么地方?rn//本例主要是要求理解方法中的returnrnclass He3//解决这个类,将以三种不同方法顺序有条件执行过程rnint A()return 2;rnfloat B()return 3.14f;rnvoid C()return;rnboolean D()return true;rn public static void main(String[] args)rn//He3 h=rn//void h=rn//He3 h1=null;rnnew He3().C();rnSystem.out.println(new He3().A());rnSystem.out.println(new He3().B());rn//System.out.println(new He3.C());//这里为什么没有了rnSystem.out.println(new He3().D());rnrnrn//System.out.println(new He3.C());//这里为什么没有了rn就是这句话在编译时不成功,会出现此处不允许使用“void”类型。原因是什么? rn
Java中void、return、返回值的详解
1
//关于 return 一个 void 的问题?
//下边的代码通过 Solaris 6的 gcc version 2.95.3 20010315 (release) 编译没有报错。rn//但是 Win2K 的 VC++6 就报错,为什么 B::vf()返回一个void还会报错?rn//但是我发现上边的 gcc 对全局函数的处理是和 VC6 类似报错的,但对类中的就不报错,可以正常运行。rn//为什么?rnrn//#include "stdafx.h"//此行仅于VC++6中rnrn#include rnrnusing namespace std;rnrnclass Brnpublic:rn virtual void f() =0;rn;rnrnclass D:public Brnpublic:rn void f() return vf(); rn void vf() cout<<"D::vf()"<f();rnrnrn//VC6中的报错信息rn//--------------------Configuration: t01 - Win32 Debug--------------------rn//Compiling...rn//t01.cpprn//D:\_MyVC\__TEST\_MyTests\t01\t01.cpp(17) : error C2562: 'f' : 'void' function returning a valuern// D:\_MyVC\__TEST\_MyTests\t01\t01.cpp(17) : see declaration of 'f'rn//Error executing cl.exe.rn//rn//t01.exe - 1 error(s), 0 warning(s)
【】void函数中return的含义
为什么看有些代码,发现在每个【void型】的函数的【最后】都加上return,有点不理解这是为什么?rn例如:rn[code=C/C++]rnvoid MyFunc()rnrn...rn...rn... // 函数倒数第二行!rnreturn; // 函数的最后一行!rnrn[/code]rn假设函数运行正常,走到return处也不就正常结束了?rnrn然后我又很无知的想了一会,如果对于用户自定义的void型的消息映射函数,如果也在函数的最后一行加return有意义吗?rn例如:rn[code=C/C++]rn// 申明处rnafx_msg void OnMyFun(UINT wParam, Long lParam);rnrn// 映射rnBEGIN_MESSAGE_MAP(CMyView,CView) rn……rnON_MESSAGE(WM_MY_FUN, OnMyFun)rn…… rnEND_MESSAGE_MAP()rnrn// 函数体rnvoid OnMyFun(UINT wParam, Long lParam)rnrn...rn...rn... // 函数倒数第二行!rnreturn; // 函数的最后一行!rnrn[/code]rn此时的return 和我说的之前的return有什么不同的意义吗?rn【我的疑问就是】:rnreturn都是写在函数的结尾处,而且没有什么出错处理的过程,只是单纯的(也许在我看来是吧)在函数最后一行处写了return,没什么意义吧?rn大家帮我分析好吗?rn谢谢!!!!!!!!!!!!!!!rnrn
关于java中的return
在java中的return有两个的作用: 1.可以将一个程序的结果返回给调用者 2.可以将这个程序在这里终止.不再继续向下执行代码.
编程风格 void 的 return;
rn我记得某个编程风格的书中提到,rn即使是void型函数,函数结尾也要写一个return;rnrn请问这样做的目的和好处是什么,我忘记了,请大家指教?rnrn谢谢!
【漫谈】 Java 中的 Void 和 void
Java 中,大家对 void 应该是相当熟悉了。它表示“空”,所有无返回值的方法都使用它表示返回类型。 public static void main(String[] args) { // ... } void 是一种基本数据类型。 而 Void 是 void 封装类型,API 上称其为“占位符(placeholder)”。 看起来,Void 之于 void 类似于 Integer 之于 ...
在void函数中return另外一个void函数调用
在使用一些宏替换时发现了这个,有些惊讶。rn例如:rnrnvoid func1(int a, char *b)rnrnrnrnvoid func2(int a)rnrn return func1(a, "");rnrnrnint main()rnrn func2(5);rnrnrn这里func1和func2都是void函数,但是return func1()这样是可以的。rn谁知道这个是C规范中的,还是属于特定编译器的?rn
在C#中void函数还要不要return;?
首先:像这样的函数rnint hanshu()rnrn return xx;//肯定是要return的rnrn但是:rnstatic void Main(string[] args)rnrn //这样的函数我习惯不用什么return;就算在特别时候也用的很勉强. rnrn如果是自己定义的子函数或事件函数.rnvoid zidingyi(int k)rnrnrnprivate void btn_Str_Click(object sender, EventArgs e)rnrnrn这样的我只有需要提前退出函数(方法)时才用return;的.rn----------------------------------------------------------------------------------------------rn反编译*.exe后发现原程序添加了很多this.但是没加什么return;是不是C#里不用管什么返回到调用处的下行之类的东西啊?rnrn rn
void函数中人return的含义
void Backtrack(int i)rnrn if(i > n)rn rn if(cw > bestw)rn rn for(int j = 1;j <= n;j++)rn bestx[j] = x[j];rn bestw = cw;rn rn return;rn rn r = r-w[i];rn if(cw+w[i]<=c)rn rn x[i] = 1;rn cw=cw+w[i];rn Backtrack(i+1);rn rn r = r+w[i];rnrn这里我输入n的值为4,当执行return 之前i的值为四,执行完return语句之后i变为了2(i的初始值为1),求解释!
void 与 return 的矛盾(thinking in C++)
我在学习《C++编程思想》(thinking in C++)时经常发现有下段例子,rnvoid* fetch(stash*s,int index)rnif(index>=s->next||index<0)rnreturn 0;rnreturn &(s->storage[index*s->size]);rn问题是void 不是已规定不让代回任何值,rn可为何还用return 返回函数地址?
关于return语句用于void函数中的问题
return语句既可用于非void函数中,也可用于void函数中,我想请教一个问题,在return语句用于void函数中(除主函数)时,程序返回后是回到主函数重新执行程序还是回到其它地方啊?求解答?
关于void *和(void *)和void **的问题
就像下面这两个函数定义中的rnint pthread_creat(pthread_t *thread, pthread_attr_t *attr, void*(*strat_routine)(void *), void *arg);rn中的void *(*start_routine)(void *)是什么意思?rn还有下面这个例子rnint pthread_join(pthread_t th, void **thread_return);rn中的void **thread_return是什么意思?rnrn谢谢
关于“void main(void) ”?
网上看了些文章谈到void main(void) 是错误的,不是C/C++标准rn但发现在许多地方都是这么写的,尤其是在嵌入式软件中,rn那么究竟void main(void) 是对是错?应该怎样写
JAVA中的return语句。。。。。。。。
class Personrnrn public [color=#FF0000]void [/color] m(int age)rn if(age>100) [color=#FF0000]return[/color]rn rn rnrnrnrnrn当对象调用m()这个方法的时候,执行return会跳到哪???
Java中的return关键字
Java中的return有两方面的用途: (1)返回方法指定类型的值(前提是方法的返回值类型不是void)。 (2)方法的结束,它会导致当前的方法退出。   使用的两种形式: (1)方法有返回值类型,格式: return 返回值; (2)方法没返回值类型,格式: return;   例子1:方法有返回值类型 public class Testreturn { static...
Java中的异常处理与return
Java中的异常可抛可捕抓,就是throw或try...catch.如果是throw,那么在抛完异常后,后面的代码不会再执行.如果是try...catch,程序还会往下执行.大多数情况下,我们都是使用try...catch捕获异常.在catch块内进行异常的业务处理.再使用throw把异常抛出....
Java中return的含义
写了这么久的代码,才明白了return的含义以及其用法,下面介绍一下我理解的return
Java中return的用法
一般的就是用在有反回值的方法中,用来返回方法指定类型的值,同时结束方法执行;也可以用在返回值为void的方法中,用来终止方法运行。
关于Java中方法参数为Void的用法
关于Java中方法参数为Void的用法 看String源码的时候发现方法参数竟然有一个参数是Void类型的,感觉很奇怪,做了这么长时间的java还是头一次发现方法参数是Void类型的,看了代码以后发现这种用法确实不错,特此记录一下 String的源码里面这个方法就用了Void做了参数,比较好奇,就去追踪的看了下。 String(char[] value, int off, int len,...
Java中return的问题
public class Test rn public String t5() rn String out = "abc";rn if(true) rn String in = "";rn if(true) rn in = "def";rn rn return in;rn rn return out;rn rnrn public static void main(String[] args) rn System.out.println(new Test8().t5());rn rnrn为什么打印结果是:def
java中return
[code=Java]rnpublic static int test()rn int i=0;rn tryrn return i++;rn finallyrn ++i;rn i=32;rn rn rn[/code]rnrn为什么这里输出的是0rnrn知道的大虾回答下。谢谢。rn高分奉上。就100分了。rnrn^_^rnrn不知道的、给建议的、打酱油的请不要回复。rn因为楼太高真不好找答案。
java return return false
java 中return 和return false有什么区别rnreturn的返回值类型是boolean还是没有类型的n[b]问题补充:[/b]n能不能详细点呢
【小家java】对java中null、void、Void的理解学习
1、概述 本篇博文很简单啊,主要说说咱们平时最长看见的null、void和Void等。一般人可能不会留意,但此文通过一些简单的例子,希望可以加深同学们对他哥几个的了解 2、栗子 关于null,估计很多人可能恨透它了,因为它是NullPointerException的罪魁祸首。但是用好了它,我们还是能成为好朋友滴。null是所有引用类型的默认值,但是我要澄清一些误解,null既不是对象也不是一...
javascript:void(0) nclick="return false;"
不太明白,标签 a 这样写后,是怎么连接别的页面的。没百度到,谁告诉我一下
关于java里 return的接收
https://zhidao.baidu.com/question/365822422060654132.html interface A {//(1) int method(int n); } class B implements A{ public int method(int n){ int sum =1; for(int i=1;i<=n;i++){ sum *= i; }
又问个小问题啦(void,return)
一个比较细节的问题,如下rn[color=#FF0000]void[/color] inv(int *sp,int n)rnrn int *i,*j;rn int m=(n-1)/2,temp;rn i=sp;rn j=i+n-1;rn for(;i<=sp+m;i++,j--)rn rn temp=*i;rn *i=*j;rn *j=temp;rn rn [color=#FF0000]return;[/color]rnrn边看边写时发现这个问题,既然函数被定义为void不返回的话,完全没必要写return了吧,但是书上加个return是什么意思呢?是不是纯粹是废代码?
void函数里return有什么用呢
void mazeTraversal(char maze[12][12],int xCoord,int yCoord,int direction)rnrn rn maze[xCoord][yCoord]='o';//将走过的路径用o来表示rn printMaze(maze);//打印迷宫rn if(coordsAreEdge(xCoord,yCoord) && xCoord!=X && yCoord!=Y)rn rn cout<<"\nSuccessfully get out of the maze!\n\n";//成功找到了出口rn rn else rn if(false && xCoord==X && yCoord==Y)rn rn cout<<"\nBack to the start.\n\n";//回到原来的地方,并不是出口rn rn elsern rn rn for(int move=direction,count=0;count<4;++count,++move,move%=4)rn switch(move)rn rn case DOWN:rn if(validMove(maze,xCoord+1,yCoord))rn rn mazeTraversal(maze,xCoord+1,yCoord,LEFT);rn return;rn rn break;rn case RIGHT:rn if(validMove(maze,xCoord,yCoord+1))rn rn mazeTraversal(maze,xCoord,yCoord+1,DOWN);rn return;rn rn break;rn case UP:rn if(validMove(maze,xCoord-1,yCoord))rn rn mazeTraversal(maze,xCoord-1,yCoord,RIGHT);rn return;rn rn break;rn case LEFT:rn if(validMove(maze,xCoord,yCoord-1))rn rn mazeTraversal(maze,xCoord,yCoord-1,UP);rn return;rn rn break;rn rn rnrn函数里面一定要有return,如果没有,它就会继续地执行下去不停止,为什么呢?它为什么在出口处执行停止,而回到入口是不会停止呢?各位老师,达人,谢谢了……
'void' return type assumed 是什麼意思
'void' return type assumed 是什麼意思
void型函数最后的return是什么意思?
今天看谭浩强的书,里面有一些程序中自定义的一个void型的函数的最后一句是return;,这是什么意思,有什么作用?
关于void WINAPI与WINAPI void
在VC++ 中为什么在定义函数的时候rnvoid WINAPI Fun() ; 可以正常编译通过,rn但是写作 WINAPI void Fun() ;的时候虽然可以通过,但是会报警rnrn而如果在borlande c++ 中这两种写法都是可以正常编译通过的rnrn#include rn#include rnrnusing namespace std ;rnrnvoid WINAPI void Fun(int iValue)rnrn cout << "iValue = " << iValue << endl ;rnrnrnint main()rnrn Fun(10) ;rn return 1 ;rnrn在vc6.0下编译正常通过,但是WINAPI void Fun(int iValue)会报警;rnrn申明,并不是无聊研究这个,所以请教下各位高人。rn谢谢!
return (void**)((BYTE*)p + m_nNextOffset); 问题
搞不懂这段代码。有谁指点下啊。windows编程里面的。rnrnrninline void** CSimpleList::GetNextPtr(void* p) constrn return (void**)((BYTE*)p + m_nNextOffset);
void方法返回处,需不需要return
void main 在新标准中是错误的。 main() 返回一个整型给调用它的程序。int 返回类型是可以省略的(但不建议)。 不返回值并不代表函数没用。它可以输出信息,读写文件等干很多别的事情。在 C 语言中,也可以给函数传递指针参数,让函数修改相应的内存空间数据,这样函数返回后,传入指针所指向的数据已经改变了,变相达到返回结果的目的(这在 C 中很常见)。 没有 return (但函数未声明为...
void返回值return;有必要吗?为什么?
RT,我看很多函数都是void型,但是返回值为return;rn有必要吗?还是仅仅为了好看或者以后调试方便什么的。。。rnrn
return 與void比較的迷惑.
return 是否可以返回給自身class的方法,如rnString a(c)rnreturn(b(d,e));rnrnString b(k,f)rn...rnrn那麽void是否,只是用來返回變量對象的引用,是否給別的類當方法用,那麽自己身類呢?如rnvoid a(String b)rnthis.b =brnrn我可以把問題講的不太清楚,請各位幫我解釋下,感激...
求助关于void*与void**的区别
最近看代码,有void这样的实现rntypedef struct LST_Trnrn HI_VOID **first;rn HI_VOID **last;rnLST_T; /* Anonymous */rnrn#ifndef LST_NULLrn#define LST_NULL ((void *)0)rn#endifrnrnrnvoidrnLST_init(LST_T * list)rnrn list->first = LST_NULL;rn list->last = LST_NULL;rnrnrnrnvoidrnLST_add(LST_T * list, void *item)rnrn if (list->first == LST_NULL) rn list->first = item;rn list->last = item;rn else rn *(list->last) = item; /* link to last item */rn list->last = item; /* update tail pointer */rn rn *((void **) item) = LST_NULL; /* terminate list */rnrnrnitem的第一个成员通常是 void** link类型rn想问一下void*与void**应该怎么样理解呢?是都只理解为地址就可以了吗?
Java中void方法的异常处理
主类(Main1.java)。其中的方法有a1(),a2().rn在Main1.java要先后调用a1(),a2()。当a1()中try块里出现异常,那么进入catch中,catch里写return;是否会重新执行a1()这个方法?如果会执行,在return时执行成功了,能够回到Main1中,继续执行a2()方法吗?rnrn其中a1和a2都是void返回类型rnrn请详细解释一下,如果出现异常,我想重新执行该方法,并且执行后返回调用处继续向下执行其他代码,该如何实现?谢谢各位大侠!!!!!!!!!!!!!!!!!!!!!!
关于void*
小弟对void*不甚了解,自己做了一个小程序测试了一下。visual c++ 6.0环境下。rn// testOne.hrn[code=C/C++]#ifndef TESTONE_H_rn#define TESTONE_H_rn#include rnclass testOne rnrnpublic:rn testOne()rn virtual ~testOne()rn void deal() std::cout<<"testOne"; rnrn;rnrn#endif // TESTONE_H_[/code]rn// testTwo.hrn[code=C/C++]#ifndef TESTTWO_H_rn#define TESTTWO_H_rnrnclass testTwo rnrnpublic:rn testTwo()rn virtual ~testTwo()rn void deal() std::cout<<"testTwo"; rn void excess() std::cout<<"excess"; rnrn;rnrn#endif // TESTTWO_H_[/code]rn// main.cpprn[code=C/C++]#include "testOne.h"rn#include "testTwo.h"rnint main( void )rnrn void * l_void = new testOne();rn testTwo * l_two = ( testTwo* ) l_void;rn l_two->deal();rn l_two->excess();rn delete l_void;rn return 1;rn[/code]rnrn输出为testTwoexcess。rn小弟知道这种办法很不正规的,也没什么依据。rn我本来以为这样是会报错的,结果反而输出了,很想知道是为什么,所以请教各位大大。
关于void
char*类型的形式参数不能传递给void*类型的实参,为什么呢?
关于 void*
void* 型的指针 是什么概念?rn他不指向任何对象,只是表示他一个地址吗?rnrn通过类型转换后将其转换为指向具体地址的指针?rnrnvoid* p = malloc(size);rnmalloc分配一块具体的内存,同时 p 是 void* 型的,p指向这块分配的内存吗?
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数