黑马程序员技术交流社区

标题: 返回值!!! [打印本页]

作者: 471686505    时间: 2013-9-24 10:03
标题: 返回值!!!
本帖最后由 杨增坤 于 2013-9-25 07:36 编辑

例:     public class A4_6{
public static void main(String[] args){
  int year=2006;
  int i=80000;
  while(i<200000){
   i=i+(i/100*25);
   year++;
  }
  System.out.println(year+"30000");
}
问下 那个返回值 void 什么时候要用什么时候不要用  !!大概遗爱我知道就是经常搞混!!

作者: 陈洋    时间: 2013-9-24 10:12
void是没有返回值的返回类型,当程序没有返回值的时候,方法定义void,当有返回值的时候,把void改为返回值的类型
作者: 1098918523    时间: 2013-9-24 10:12
其实说白点就是当我调用这个method的时候需要用另外一个变量来捕获这个返回值,这些值和用System.out.print是不同概念,后者表示需要将某些message输出,如果你用IDE的话会输出在Console里在command模式下就是打印在command界面上。但是在这个method外是没办法得到该值得。
至于main为什么要void表示main当JVM调用main方法时不需要其返回值。



返回值是指return 语句。

比如一个方法,它的返回值是String
public String getName(){
this.name = "name";
return this.name;
}
你就可以用 Sting myname = getName();来得到name,
同理,Void的方法不需要return,因为你这个方法并不需要返回什么东西。

比如set和get方法,
set是指设置,所以不需要返回值,
public void setName(String name){
this.name = name;
}
而get是指拿到,所以需要返回值
public String getName...同前面的例子。


void是指方法无返回值,可有return,但后面不加语句,如
public void getName(){
System.out.println("OK");
return;
}
return;可有可无
指定返回值的要返回相应类型的值,如
public int getNumber(){
int a=5;
return a;
}

return返回的值一定要为public后指定的int类型



在java中没有过程的概念(如delphi/pascal中有过程和函数的概念),因此,就使用void表示过程,也就是没有反回值的函数。其中main方法和其他的方法没有任何区别。它也是普通方法。

在函数中不管有没有void定义,都可以有return语句,但如果有void,return后面就不能跟任何东西。如
public void aa()
{
return;
}
作者: doitforyou    时间: 2013-9-24 10:18
main函数格式是固定的,只有参数列表中的数组名可以变动。返回类型一直为void,因为JVM对文件中的数据都很清楚,不需要返回值,所以为void。至于其他的方法中,是否使用void主要看我们调用此方法后是否需要使用它最后的结果,需要则返回指定类型,不需要则为void。如,打印方法一般都不需要返回的,所以为void
作者: 咕咕猫    时间: 2013-9-24 10:18
当不需要返回值时 就在函数应该写返回值类型的位置标上void表示此函数没有返回值 如果有函数运行后需要返回一些数值那就标上返回的数值的类型。
作者: doitforyou    时间: 2013-9-24 10:18
main函数格式是固定的,只有参数列表中的数组名可以变动。返回类型一直为void,因为JVM对文件中的数据都很清楚,不需要返回值,所以为void。至于其他的方法中,是否使用void主要看我们调用此方法后是否需要使用它最后的结果,需要则返回指定类型,不需要则为void。如,打印方法一般都不需要返回的,所以为void
作者: 黄炳期    时间: 2013-9-24 10:18
若问题已经解决,麻烦修改主题成“已解决”
作者: 张云飞    时间: 2013-9-24 10:19
其实主要就是弄明白自己定义的方法的目的或者是作用。当该方法仅仅是处理一些数据或者逻辑,而不需要返回任何对象(一切皆对象哈)时,那就不返回,所以就用void嘛;

当该方法需要返回一个对象时,那就需要确定返回的对象的类型,是什么类型就把void用该类型代替了,然后在方法最后搞一个return语句,OK。


作者: bjbao1    时间: 2013-9-24 18:31
关键字void的意思是:无返回值,意思是在函数(方法)运行结束后,不需要返回某种特定类型值时使用。比如说,一个功能为打印结果的函数,就不需要在函数结束之后返回某个值,该功能在函数体内已经完成。所以,定义此类函数时,就要用void:public static void printDate(...){/打印日期语句}

如果需要在函数运行结束后返回某特定类型的值,则要用类型名称替换上例中的void,而且函数体内必须包含return语句,返回特定类型的值。

而你提到的public static void main(String[] args){} 是java程序的main函数,程序执行的切入点,这是固定格式,需要记住。
作者: HM代景康    时间: 2013-9-24 19:03
在函数不需要返回值时使用voidint x; public void setX(int x){this.x=x;}你的这个函数的作用是给x设定值,但是并没有返回值;int x; public int getX(){return x;}这个函数因为要返回值,所以不能使用void,必须与返回的类型匹配
作者: 雪人    时间: 2013-9-24 19:31
我没太懂你的意思...我想你是想问viod什么时候用?但是跟你的程序有什么关系...

其实对于viod我是这么理解的,一个方法,只要实现某种功能,而不需要返回来什么数据的时候,就用void.

我是把void当做一种返回值,就像int,string,Object 等等一样,把它就看做是个返回值,这个返回值的类型就是void类型,但是这个void类型不等同于null.
作者: 近夜之星    时间: 2013-9-24 20:25
不需要返回值就用void
作者: 0和1,编程世界    时间: 2013-9-24 20:37
举个列子,简单说明一下返回值类型,希望对你有所帮助
1.
[java] view plaincopy
01.void  test1(int a){ System.out.println("只输出a:"+a);}  
02.int  test2(int a)(){System.out.println("求出a*a");     
03.                     return a*a; // 记住我的方法前面是int型,所以一定要有一个int类型的返回值  
04.  
05.}  

2.你可以把一个方法想想成一个黑盒子,不知道里面的具体业务实现方式,你想通过该方法得到什么类型的值就在前面写什么类型,在方法内部return什么类型,如果这个方法你觉得没有必要返回值,就写void了

3.方法相当于一个容器,参数是苹果,苹果传到方法里面,假如你想要苹果汁 就给他来个返回值是 苹果汁,想要苹果泥,就来个返回值是苹果泥,假如你就只是放在里面,以后不管苹果烂了还是怎么了,都不管它了,那就 给方法来个 void的空返回值。 有点俗!希望对lz有所帮助!

4.你需要通过这个方法获得什么样的数据类型,就把该方法定义成什么样的返回数据类型
比如你写一个两数求和的方法
public int add(int x,int y){
    return x+y;
}
那么这个方法就要定义成int型的,因为通过这个方法求得的数据是两个int型整数的和,当然也是int型咯,所以
返回数据类型就是int型的;
如果这个方法不需要返回一个值,就要把返回类型定义成void型,但不能不写(当然,只有一种情况可以不写,就是构造方法,现在你先不用考虑)
比如一个简单的输出方法,就无需返回一个值
public void show(){
   System.out.println("--------");
}
这时候就把返回类型写成空类型void

作者: 薆情媬証書    时间: 2013-9-24 23:00
本帖最后由 薆情媬証書 于 2013-9-24 23:07 编辑

其实这个理解了就很简单,这样说吧
方法的定义包括两部分:方法声明和方法体

最基本的方法声明包括方法名和方法的类型,

方法的类型可以是任意的java数据类型,当一个方法不需要返回数据时,方法的类型必须是void。

简而言之,看你写的这个方法是否需要向外界传递参数,如果需要,则写上你要传送数据的类型,

如果不需要,则就是void。






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