Ava方法的重载是一种编程技术,开发人员可以在同一类中多次使用相同的方法名称,但可以使用不同的参数。 在这种情况下,我说这个方法被重载了。
示例1显示了参数如何按数量、类型和顺序不同。 三种类型的方法重载:
Number of parameters:
公共类计算器{
语音计算(int number2,int number2) }
voidcalculate(intnumber1,int number2,int number3) }
}
参数类型:
公共类计算器{
语音计算(int number2,int number2) }
void calculate (双精度编号1,双精度编号2 ) }
}
参数订单:
公共类计算器{
void calculate (双编号1,int编号2 ) }
语音计算(int number 1,double number2) }
}
在示例1中,可以看到原始类型int和double。 由于要进一步处理这些类型和其他类型,因此需要一些时间来检查Java的原始类型。
重载不仅有助于使代码清晰、易于阅读,而且有助于避免程序中的错误。 请想象一下与例1相比的程序。 有几种calculate ()方法,例如calculate1、calculate2和calculate3。 这样好像不好。 重新加载calculate ()方法时,只能使用相同的方法名称更改需要更改的内容:参数。 找到重载的方法也很容易。 因为通常在代码内组合。
请注意,重命名变量不会导致重载。 无法编译以下代码:
公共类计算器{
语音计算(intfirstnumber,int secondNumber ) }
语音计算(intsecondnumber,int thirdNumber ) }
}
也不能更改方法签名的返回类型来重新加载方法。 以下代码也无法编译:
公共类计算器{
双计算(int number2,int number2) {return 0.0; }
longcalculate(intnumber1,int number2) {return 0; }
}
可以像使用方法一样重新加载构造函数。
公共类计算器{
私密int number 1;
私密int number 2;
公共计算器(int number1) {this.number1=number1; }
公共计算器(int number2,int number2) {
this.number1=number1;
this.number2=number2;
}
}
首先,JVM是一个聪明的懒汉。 总是尽最大努力执行方法。 因此,在考虑JVM如何处理重载时,请注意以下三种重要的编译器技术:
1 .加宽
2 .装箱(自动装箱和开箱)
3 .瓦拉加斯
如果您从未遇到过这三种技术,您应该有助于列举一些例子来阐明它们。 请注意,JVM按照给定的顺序运行。
这是一个加宽的例子:
int最优int number=5;
doubleprimitivedoublenumber=primitive int number;
对于扩展,这是原始类型的顺序。
这是一个自动包装的例子:
int最优int number=7;
integerwrapperintegernumber=primitive int number;
请注意,编译此代码后,它将在后台发生。
integerwrapperintegernumber=integer.value of (primitive int number );
这是一个开箱的例子:
Integer wrapperIntegerNumber=7;
intprimitiveintnumber=wrapperintegernumber;
这是编译这段代码后在后台发生的事情:
intprimitiveintnumber=wrapperintegernumber.intvalue (;
这是可变参数的一个例子; 请注意,此varargs始终是上次运行的时间:
execute(int…numbers ) {}
如果将数字1直接传递给执行操作方法,JVM将自动视为int。 所以,数字不符合执行动作(short var )方法。
同样,如果传递1.0的数字,JVM会自动将该数字识别为双精度。 当然,数字1.0可以是浮点,但类型是预定义的。 这就是在执行操作(双var )示例2中调用此方法的原因。
使用双包装器类型时,包装器编号可以打开为原始类型,也可以扩展为对象。 请注意,Java中的每个类都扩展了Object类。 )在这种情况下,JVM选择将双精度类型扩展为an。 因为Object,正如之前说明的那样,比开箱更少劳力。 我们给的最后一个数字是1L,这次指定了变量类型,所以是长的。
在需要相同方法名称和不同参数的情况下,重载是一项非常强大的技术。 这是一项有用的技术,因为在代码中使用正确的名称对可读性有很大的影响。 方法可以很容易地重载,而不是复制并给代码带来混乱。 这样可以组织代码,便于阅读,并降低以重复方式破坏部分系统的风险。
最后,感兴趣的学生可以通过查看本网站的专业java视频课程了解更多重载的实例和使用方法。 更深的学习知识只有在你的一念之间。