1、通过method方法只输出 "a=100 b=100"
2)当a、b为基本类型时,例如int,method的写法如下
3、最简单最无耻也不用区分类型的方法
public static void main(string[] args){
a=10;
b=10;
method(a,b);
sysout("a="+a);
sysout("b="+b);
}
2、分析
表面上看,这个考的是值传递和引用传递,当变量为基本类型时,考的是值传递,这个时候常规方法是无解的,只能另辟蹊径:修改输出方法,写出下边的方法1)有加分,说明你对java的基础理解的很深。当变量的基本类型为对象类型时,考的是引用传递,这个时候常规方法是有解的,但直接给引用赋值不对,原因是变量不是类的变量而是main方法的变量(main方法不属于类而是程序的入口),这个考察的是java反射,写出下边的方法2)加分很多。如果是直接写出下边的第三个方法且不写出原因,那么只能说明java基础一般。
1)当a、b为基本类型时,例如int,method的写法如下
public static void method(int a, int b) {
PrintStream ps = new PrintStream(System.out) {
@Override
public void println(String x) {
if ("a=10".equals(x)) {
x = "a=100";
} else {
x = "b=200";
}
super.println(x);
}
};
System.setOut(ps);
}
2)当a、b为基本类型时,例如int,method的写法如下
public static void method(Integer a,Integer b) throws Exception{
Field field = a.getClass().getDeclaredField("value");
field.setAccessible(true);
field.set(a, 100);
Field fieldb = b.getClass().getDeclaredField("value");
fieldb.setAccessible(true);
fieldb.set(b, 200);
}
3、最简单最无耻也不用区分类型的方法
public static void method(a,b){
System.out.println("a="+100);
System.out.println("b="+100);
System.exit(0);
}