Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';s方法括号中使用参数和不使用参数之间的区别_Java - Fatal编程技术网

Java 什么';s方法括号中使用参数和不使用参数之间的区别

Java 什么';s方法括号中使用参数和不使用参数之间的区别,java,Java,这两者之间的区别是什么: (一) 公共空隙角(双f_角) { 如果(f_角=-15) { 方格=1000*f_角*Math.PI/180000; }否则 system.out.println(“发射角度:“+f_角度+”不在-15和15之间”); 和 (二) 公共静态int f_角度 公共空隙角() { ; 如果(f_角=-15) { 方格=1000*f_角*Math.PI/180000; }否则 system.out.println(“发射角度:“+f_角度+”不在-15和15之间”); 参

这两者之间的区别是什么:

(一)

公共空隙角(双f_角)
{
如果(f_角=-15)
{
方格=1000*f_角*Math.PI/180000;
}否则
system.out.println(“发射角度:“+f_角度+”不在-15和15之间”);

(二)

公共静态int f_角度
公共空隙角()
{ ;
如果(f_角=-15)
{
方格=1000*f_角*Math.PI/180000;
}否则
system.out.println(“发射角度:“+f_角度+”不在-15和15之间”);

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

这称为


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

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

  • 您可以从多个线程同时成功地调用第一个方法;第二个方法不可能做到这一点
  • 调用者很清楚,
    f_angle
    是方法的参数;第二种方法没有这样的清晰性
示例#2对类中的一个变量进行操作,该类实现了名为Angle的方法(该方法应以小写字母开头)

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


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

我认为对您的问题的回答是局部变量和全局变量之间的差异;它们由变量生存期和范围区分

当你为函数定义一个参数时,它就像一个局部变量,一旦函数执行完毕,变量就会被销毁(例如#1)。变量的作用域仅限于函数块


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

区别在于该方法是否使用参数。您知道全局变量和局部变量之间的区别吗?因为这似乎就是问题的症结所在。根据上一个问题判断,您需要阅读基本java教程因此,方法应该以小写字母开头,变量名应该使用camelCase而不是下划线。不仅是安全性,而且是正确性。谁知道是什么方法在更改全局变量或它们在使用它做什么。(when位显然是线程安全性)你的意思是第二种方法可能可以接受任何值,而第一种方法只能接受int值吗?这只是为了用户安全吗?@treppenwitz不,这根本不是我的意思。Java允许你同时运行多个函数(在多处理器或多核的计算机上,这非常重要)。在这种情况下,两个不同的方法可以同时调用
Angle
——字面上来说。不可能同时将
f_Angle
设置为两个不同的值,因此第二个方法不能使用,而第一个方法可以。@treppenwitz查找并。因此,在案例1中,我将无法使用变量f_Angle块外?不能。它的行为与函数内声明的局部变量相同。
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.");
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.");