0

有什么区别:

1)

public void Angle(double f_angle) 
{
    if (f_angle <= 15 && f_Angle >= -15)
    {
        fAngle = 1000 * f_Angle * Math.PI / 180000;
    } else
        system.out.println("Firing Angle: " + f_Angle + " is not between -15 and 15.");

2)

public static int f_angle

public void Angle() 
{ ;
    if (f_angle <= 15 && f_Angle >= -15)
    {
        fAngle = 1000 * f_Angle * Math.PI / 180000;
    } else
        system.out.println("Firing Angle: " + f_Angle + " is not between -15 and 15.");
4

5 回答 5

1

区别在于线程安全性和便利性:

  • 您可以成功地从多个线程并发调用第一个方法;第二种方法是不可能的。
  • 调用者很清楚这f_angle是方法的参数;第二种方法没有这样的明确性。
于 2012-11-03T03:02:00.953 回答
0

我认为对您的问题的回答是局部变量和全局变量之间的区别;它们由变量life timescope区分。

当你为一个函数定义一个参数时,它就像一个局部变量,一旦函数执行完毕,这个变量就会被销毁(示例#1)。并且变量范围仅限于功能块。

但是即使函数执行完毕并且所有函数都可以访问全局变量(示例#2),它仍然存在。

于 2012-11-03T03:29:40.410 回答
0

参数添加到方法签名中。尽管名称相同,但它们是不同的方法,因为它们的签名不同。这样您就可以创建重载方法。

于 2012-11-03T03:00:16.003 回答
0

示例 #2对实现名为Angle的方法的类中的变量进行操作(应以小写字母开头)。

示例 #1对从某处传递给Angle方法的参数进行操作。

正如@dasblinkenlight 所指出的,这对线程安全有影响。

于 2012-11-03T03:07:16.373 回答
0

这称为方法重载

方法通常被重载以增加操作的特异性或使调用者在控制方法的操作方式方面具有更大的灵活性。

于 2012-11-03T03:01:31.703 回答