V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
DeadLion
V2EX  ›  问与答

一道 Java 面试题,还有其他解法吗

  •  
  •   DeadLion · 2017-02-14 17:09:28 +08:00 · 2032 次点击
    这是一个创建于 2847 天前的主题,其中的信息可能已经有所发展或是发生改变。
    public class Test {
        public static void main(String[] args) {
            int a = 10;
            int b = 10;
    
            //调用 method 方法后,最后分别输出 100,200
            method(a, b);
    
            System.out.println("a=" + a); //a=100
            System.out.println("b=" + b); //b=200
        }
    
        public static void method(int a, int b) {
    
        }
    }
    

    有一种方法就是重写 println 方法,有能更改值的方法么? 一开始想到反射,但是方法内的局部变量好像获取不到吧。 不知道还有没有其他方法

        public static void method(int a, int b) {
            PrintStream ps = new PrintStream(System.out) {
                @Override
                public void println(String s) {
                    if (s.startsWith("a")) {
                        super.println("a=100");
                    }
                    if (s.startsWith("b")) {
                        super.println("b=200");
                    }
                }
            };
    
            System.setOut(ps);
        }
    
    12 条回复    2017-02-14 21:43:05 +08:00
    Lonely
        1
    Lonely  
       2017-02-14 17:13:28 +08:00 via iPhone   ❤️ 1
    直接打印两句然后 System.exit
    LaudOak
        2
    LaudOak  
       2017-02-14 17:28:15 +08:00
    遇到过这样的,要实现你说的效果就是函数里实现后 System.exit(0);
    DeadLion
        3
    DeadLion  
    OP
       2017-02-14 17:30:52 +08:00
    ```
    public static void method(int a, int b) {
    System.out.println("a=100");
    System.out.println("b=100");
    System.exit(0);
    }
    ```
    @Lonely 哈哈哈 可以可以
    islandev
        4
    islandev  
       2017-02-14 17:31:35 +08:00
    可以传引用不。
    DeadLion
        5
    DeadLion  
    OP
       2017-02-14 17:31:46 +08:00
    @LaudOak 确实是个方法
    DeadLion
        6
    DeadLion  
    OP
       2017-02-14 17:34:27 +08:00
    @islandev Java 里是传值,咋传引用
    islandev
        7
    islandev  
       2017-02-14 17:35:51 +08:00
    @DeadLion 以为有 geek 方法的 可以搞
    zhengjian
        8
    zhengjian  
       2017-02-14 17:36:40 +08:00
    DeadLion
        9
    DeadLion  
    OP
       2017-02-14 17:47:40 +08:00
    @zhengjian 哈哈哈 看来没啥其他方法了
    DeadLion
        10
    DeadLion  
    OP
       2017-02-14 17:47:58 +08:00
    @islandev 目前没发现
    gam2046
        11
    gam2046  
       2017-02-14 21:32:47 +08:00   ❤️ 1
    面试就是绞尽脑汁出这种反人类的题么?如果以后的产品里都写这么蛋疼的代码,吃枣药丸。谁接盘谁死......

    出题不从实际需求出发......
    murmur
        12
    murmur  
       2017-02-14 21:43:05 +08:00
    这是在考脑筋急转弯还是编程。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2693 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:32 · PVG 17:32 · LAX 01:32 · JFK 04:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.