在布尔方法中返回的确切做什么?

时间:2012-01-10 20:43:04

标签: java arrays methods if-statement

在此代码中:

public static void main(String []args){
   int [] a = {10, 20, 30};
   if(m1(a))
     m2(a, 0);
   else
     m2(a, 1);
   for(int i = 0; i < a.length; i++)
     System.out.println(a[i] + " ");
}

public static boolean m1(int [] a){
   return a[0] == a[1] / 2;
}

public static void m2(int [] a, int b){
    a[b] = 1;
}
}
m2中的

return a[0] == a[1] / 2之后的行是什么? 这是小鸡的声明吗?因为在return

之后它会让人感到困惑

6 个答案:

答案 0 :(得分:5)

我认为你的意思是m1。

无论如何,如果你阅读这样的代码会有所帮助:

public static boolean m1(int [] a){
   return (a[0] == (a[1] / 2));
}

记下运算符优先级:在相等之前计算括号。也就是说,返回a [0]和表达式结果(a [1] / 2)之间的相等。


如果您不知道您的优先规则,您也可以将代码读作:

public static boolean m1(int [] a){
    int i = a[1] / 2;
    boolean foo = (a[0] == i);
    return foo;
}

答案 1 :(得分:5)

return a[0] == a[1] / 2
如果表达式实际为真,则

返回true,即。 a [0]等于a [1]除以2,否则为假。

答案 2 :(得分:2)

这是一个布尔表达式,表明该方法将返回的值 它与返回int的方法没有什么不同。

答案 3 :(得分:2)

根据if声明来考虑它 - 以下是做什么的?

if (a[0] == (a[1] / 2)) {
...

这是评估的布尔结果 - truefalse。如果是真的,那就做点什么吧。

将它与return一起使用会将该布尔结果返回给调用者。

答案 4 :(得分:1)

有一种程序员宁愿按如下方式编写代码:

if( a[0] == a[1] / 2 )
    return true;
else
    return false;

我们嘲笑这种程序员,在午休期间,我们不会坐在他们附近的任何地方。

所以,为了回答你的问题,return a[0] == a[1] / 2;是一个非常有效的陈述,任何有经验的程序员都宁愿这样看,而不是以任何其他方式。表达式中的'=='告诉我们这个表达式正在计算一个布尔值,然后该函数返回这个布尔值。那绝对没问题。

如果它可以帮助您更好地理解它,您可以将其表达为return a[0] == (a[1] / 2);,但如果您知道您的运算符优先级则不需要,并且在任何情况下,替代方法(return (a[0] == a[1]) / 2;)都不可能因为除法运算符不适用于布尔值。

答案 5 :(得分:0)

在返回值的方法中,return语句指示要返回的值。例如,这种方法:

public static int timesTwo(int i)
{
    return 2 * i;
}

返回其参数的两倍;所以这个方法:

public static void main(String... args)
{
    System.out.println(timesTwo(7)); // prints 14.
}

打印14

你的例子:

public static boolean m1(int [] a)
{
    return a[0] == a[1] / 2;
}
如果true,则

返回a[0] == a[1] / 2;否则,它返回false