赞
踩
- 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);
- }
- 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);
- }
- public static void method(a,b){
- System.out.println("a="+100);
- System.out.println("b="+100);
- System.exit(0);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。