当前位置:   article > 正文

java经典考题_public static void method (int a,int b)

public static void method (int a,int b)
1、通过method方法只输出 "a=100 b=100"
  1. public static void main(string[] args){
  2. a=10;
  3. b=10;
  4. method(a,b);
  5. sysout("a="+a);
  6. sysout("b="+b);
  7. }

2、分析

表面上看,这个考的是值传递和引用传递,当变量为基本类型时,考的是值传递,这个时候常规方法是无解的,只能另辟蹊径:修改输出方法,写出下边的方法1)有加分,说明你对java的基础理解的很深。当变量的基本类型为对象类型时,考的是引用传递,这个时候常规方法是有解的,但直接给引用赋值不对,原因是变量不是类的变量而是main方法的变量(main方法不属于类而是程序的入口),这个考察的是java反射,写出下边的方法2)加分很多。如果是直接写出下边的第三个方法且不写出原因,那么只能说明java基础一般。

1)当a、b为基本类型时,例如int,method的写法如下

  1. public static void method(int a, int b) {
  2. PrintStream ps = new PrintStream(System.out) {
  3. @Override
  4. public void println(String x) {
  5. if ("a=10".equals(x)) {
  6. x = "a=100";
  7. } else {
  8. x = "b=200";
  9. }
  10. super.println(x);
  11. }
  12. };
  13. System.setOut(ps);
  14. }

2)当a、b为基本类型时,例如int,method的写法如下

  1. public static void method(Integer a,Integer b) throws Exception{
  2. Field field = a.getClass().getDeclaredField("value");
  3. field.setAccessible(true);
  4. field.set(a, 100);
  5. Field fieldb = b.getClass().getDeclaredField("value");
  6. fieldb.setAccessible(true);
  7. fieldb.set(b, 200);
  8. }

3、最简单最无耻也不用区分类型的方法
  1. public static void method(a,b){
  2. System.out.println("a="+100);
  3. System.out.println("b="+100);
  4. System.exit(0);
  5. }



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/940375
推荐阅读
相关标签
  

闽ICP备14008679号