给出以下代码:
class Number {
public int i;
public Number(int ii) {i=ii;};
}
public class Main {
static void f(Number n) {
n.i = 9;
}
static void g(Integer n) {
n=9;
}
public static void main(String[] args) {
Number k = new Number(10);
f(k);
Integer m = new Integer(10);
g(m);
System.out.println(k.i+":"+m);
}
}
程序运行后输出结果是:
答案:程序运行后输出结果是:9:10。
解释:在程序中,我们定义了一个Number类和一个Main类。在Main类中,我们定义了两个静态方法f和g,分别接受Number类型和Integer类型的参数。在f方法中,我们将传入的Number类型参数的i属性值修改为9;在g方法中,我们将传入的Integer类型参数重新赋值为9,但是这个操作不会影响到原来的Integer对象。在main方法中,我们分别创建了一个Number对象k和一个Integer对象m,并将它们作为参数传递给f和g方法。在f方法中,我们修改了k对象的i属性值为9,因此最终输出k.i的值为9;而在g方法中,我们重新赋值了m对象,但是这个操作不会影响到原来的m对象,因此最终输出m的值仍然为10