我是JAVA的新手。我正在JAVA中编写一个包装库,以便使用类似Basic的语言提供一些函数。
当我注意到某些代码没有在JAVA库中执行时,虽然编译器没有抱怨(使用Eclipse),但我在某个时刻得到了库存。我最终通过更换代码解决了这个问题:
public void VideoQuality(int vQuality) //did not work
进入
public boolean VideoQuality(int vQuality) //works
以下是完整的代码片段:
public void VideoQuality(int vQuality) //did not work
{if (vQuality==16) {
vidQuality=16;
}
else if (vQuality==-16) {
vidQuality=-16;
}
else if (vQuality==0) {
vidQuality=0;
}
else
vidQuality=-16;
vitamioExt.setVideoQuality(vidQuality);
}
public boolean VideoQuality(int vQuality) //works
{if (vQuality==16) {
vidQuality=16;
}
else if (vQuality==-16) {
vidQuality=-16;
}
else if (vQuality==0) {
vidQuality=0;
}
else
vidQuality=-16;
vitamioExt.setVideoQuality(vidQuality);
return true;
}
我认为 void 对应于Visual Basic中的sub,而 boolean 对应于一个函数。
我发现奇怪的是,以下代码使用 void
public void setVolume(float leftVolume,float rightVolume)
{
vitamioExt.setVolume(leftVolume, rightVolume);
}
我肯定错过了一些非常明显的东西,但是当布尔 - 代码工作时,我无法理解为什么 void -code不起作用。
也许这取决于我如何调用代码?
任何可以点灯的人?
编辑:澄清什么不起作用,我的意思是代码:
vitamioExt.setVideoQuality(vidQuality);
没有在void-snippet中执行。
EDIT2:vidQuality在代码的不同部分声明。我刚刚发布了片段,因为问题与这些片段有关,而且变量都在运行。
EDIT3:最后,我想我必须错误地调用void-snippet,尽管编译器没有编译。在任何一种情况下,两个片段都应该执行,虽然当然void-snippet是正确的,因为我没想到返回值。
答案 0 :(得分:8)
之间的唯一区别
public void VideoQuality(int vQuality)
和
public boolean VideoQuality(int vQuality)
是前者不返回值,后者确实(特别是boolean
值)。这就是差异的全部程度。
这意味着,例如void
版VideoQuality
:
boolean x = VideoQuality(10); // Will not compile
VideoQuality(10); // Will compile
...因为您无法将void
函数的结果分配给变量。
如果您使用的boolean
版VideoQuality
:
boolean x = VideoQuality(10); // Will compile
VideoQuality(10); // Will compile
...因为虽然你可以分配一个将boolean
返回给boolean
变量的函数的结果,但你没有到。如果您愿意,可以忽略返回值。 (通常这不是好习惯,但有时候也没问题。)
我认为void对应于Visual Basic中的sub,而boolean对应于一个函数。
松散地说,是的。 void
表示该函数没有返回值,如VB中的Sub
。其他任何内容(boolean
,int
,Foo
,等等)表示A)函数有返回值,B)它是给定类型。这就像VB中的Function
。
答案 1 :(得分:0)
函数使用类型声明,与常规变量非常相似,但函数声明的类型称为返回类型,它表示“此函数在调用时将返回为布尔值”。例如:
boolean alive = true;
boolean isDogAlive() {
return alive;
}
如果调用此函数,它将返回true,因此您可以说
if (! isDogAlive()) { // if it returns false
System.out.println("Oh no!");
} else {
System.out.println("Yay!");
}
如果函数没有返回任何内容,则声明 void 。除非您确实需要获取true / false值,否则您不需要为方法提供布尔返回类型。虚空应该适合你的情况。