我在Java中有一个带方法签名的函数
public void myMethod (int someInt, String someString)
Run Code Online (Sandbox Code Playgroud)
在我的抽象类中,我用方法覆盖了它
public void myMethod (Integer someInt, String someString)
Run Code Online (Sandbox Code Playgroud)
过度骑行不起作用.这是不一致吗?我认为自动装箱也适用于方法签名覆盖.
当比较 Integer 对象和常量值时,Java 是对值进行装箱还是对 Integer 对象进行拆箱?
根据我所读到的内容,“==”是一个引用比较,因此假设Java将常量装箱以在对象之间执行引用比较是合乎逻辑的。然而,下面的测试代码似乎给出了矛盾的结果。
Integer v1 = 1000;
Integer v2 = 1000;
boolean b1 = v1 == 1000; //True.
boolean b2 = v1 == v2; //False. Proof that 1000 boxes to new object and is not fetched from cache.
Run Code Online (Sandbox Code Playgroud)
==那么在 Java 中如何使用对象与常量值进行比较呢?在这种情况下,运算符是否按值进行比较?
分配值而不使用通常的表示法,例如"this.<Double> getAnything(int flag)"
private <T> T getAnything(int flag) {
Object o = null;
if (flag==0)
o=new String("NewString");
else if (flag==1)
o=new Double(0D);
return (T)o;
}
private void someMethod() {
String s = getAnything(0);
Double d = getAnything(1);
}
Run Code Online (Sandbox Code Playgroud)
在过去,只有方法上的返回对象和接收类型上的简单强制转换就足够了,因此在接收器对象上缺少通用符号,它更加相似和快速写入,还有其他任何提示吗?
该程序将使用for循环计算4个考试的平均成绩,方法是一次一个地提示用户输入考试成绩,然后计算平均值并显示结果.
public class ExamsFor4 {
public static void main(String[] arguments) {
int inputNumber; // One of the exams input by the user.
int sum = 0; // The sum of the exams.
int i; // Number of exams.
Double Avg; // The average of the exams.
TextIO.put("Please enter the first exam: "); // get the first exam.
inputNumber = TextIO.getlnInt();
for ( i = 1; i <= 4; i++ ) {
sum += inputNumber; // Add inputNumber to running sum. …Run Code Online (Sandbox Code Playgroud)