面试题求解

①不放弃 2017-07-13 11:01:52
...全文
899 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘温柔_ 2017-07-17
  • 打赏
  • 举报
回复
我觉得这个是改不了的、调用方法的时候传的是形参、也就是实参的一个副本、就算在调用的那个方法里再怎么改变都不可能把实参的值改了、因为实参没在这里、
ps45221 2017-07-17
  • 打赏
  • 举报
回复
我觉得你题目中的类型是不是写错了,a,b估计是Integer的,Integer是可以通过反射做到的

public class Main {
    public static void main(String[] args) throws Exception {
      Integer a,b;
      a = 4;
      b = 5;
      change(a,b);
      System.out.println("a=" + a + ",b=" + b);
    }

    private static void change(Integer a, Integer b) throws Exception {
        Class<?> clazz = a.getClass();
        Field field = clazz.getDeclaredField("value");
        field.setAccessible(true);
        field.set(a,400);
        //b 类似
        //.....
    }


}
自由自在_Yu 2017-07-17
  • 打赏
  • 举报
回复
引用 18 楼 Sun1956 的回复:
我觉得你题目中的类型是不是写错了,a,b估计是Integer的,Integer是可以通过反射做到的

public class Main {
    public static void main(String[] args) throws Exception {
      Integer a,b;
      a = 4;
      b = 5;
      change(a,b);
      System.out.println("a=" + a + ",b=" + b);
    }

    private static void change(Integer a, Integer b) throws Exception {
        Class<?> clazz = a.getClass();
        Field field = clazz.getDeclaredField("value");
        field.setAccessible(true);
        field.set(a,400);
        //b 类似
        //.....
    }


}
看网上的答案,这题目更像是智力题

private static void method(Object a, Object b) {
    a = 400;
    b = 500;
    System.out.println(a);
    System.out.println(b);
    System.exit(0);
}
自由自在_Yu 2017-07-17
  • 打赏
  • 举报
回复
引用 17 楼 Ink4T 的回复:
public class Helo1 { public static void main(String[] args) { int a, b; a = 4; b = 5; method(a, b); System.out.println("a=" + a + "b=" + b); } public static void method(Object a, Object b) { // 通过这个方法把a变成400,把b变成500 a = 400; b = 500; // 输出还是a=4 b=5 在这里输出a,b 然后退出执行System.exit(0); // 函数体内部玩法修改函数以外的变量值 } }
public static void method(Object a, Object b) { // 通过这个方法把a变成400,把b变成500 a = 400; b = 500; // 输出还是a=4 b=5 在这里输出a,b 然后退出执行System.exit(0); // 函数体内部玩法修改函数以外的变量值 }
huqun987812492 2017-07-17
  • 打赏
  • 举报
回复
基本类型的变体引用类型和String都不能直接当纯引用类型来用,比如Integer,Double等都是int与double的引用类型,但是你不能像普通引用类型那样直接对他的值做改变,因为在他们里面封装的原始int与double都用了final进行声明。所以你就算重新赋值了原始的int与double都不会改变。
zycxnanwang 2017-07-15
  • 打赏
  • 举报
回复
问题的关键在于 a, b都是基本类型, 不是引用类型, 好像无法操作。。
Hygge1p 2017-07-15
  • 打赏
  • 举报
回复
public class Helo1 { public static void main(String[] args) { int a, b; a = 4; b = 5; method(a, b); System.out.println("a=" + a + "b=" + b); } public static void method(Object a, Object b) { // 通过这个方法把a变成400,把b变成500 a = 400; b = 500; // 输出还是a=4 b=5 // 函数体内部玩法修改函数以外的变量值 } }
Antonio_zjn 2017-07-15
  • 打赏
  • 举报
回复
看来是我不懂了,我去查了下,原来Integer也不行
Antonio_zjn 2017-07-15
  • 打赏
  • 举报
回复
不知道我没看懂还是什么意思,我感觉很简单啊,传入的是Integer类型不就行了,java8支持自动拆装箱的
自由自在_Yu 2017-07-14
  • 打赏
  • 举报
回复
引用 1 楼 qq_30831935 的回复:
网上很多 private static void method(Object a, Object b) { a = 400; b = 500; System.out.println(a); System.out.println(b); System.exit(0); }
好像也只能这样了
zerozerg2006 2017-07-14
  • 打赏
  • 举报
回复
反正我觉得你这断章取义截一半的题目,还有各种个人添加的信息进行误导,就跟给了一份缺斤少两的文档然后让人找bug,最关键的是,你还觉得你文档写的非常完美,一般人看一眼就知道怎么找bug
zerozerg2006 2017-07-14
  • 打赏
  • 举报
回复
public static void method(Integer a, Integer b) { a.setIntValue(400); b.setIntValue(300); } ??
soton_dolphin 2017-07-13
  • 打赏
  • 举报
回复
原始型传入的是一个副本,除非重新赋值,不然改变不了
①不放弃 2017-07-13
  • 打赏
  • 举报
回复
。。。因为是纸质笔试题,但在我印象中,基本数据类型传参 ,是不能改变实参的值的,因为 我也不知道这到题是不是有问题还是真的有方法可以解决。
MikeDDT009 2017-07-13
  • 打赏
  • 举报
回复
这玩意真心无解啊,看了下就6L说的有道理,基本类型怎么改。一个副本无法啊,如果是引用类型倒还可以撸,毕竟引用到处窜,你写的方法在带入实参的时候就是另外的一个东西了,哪怕会被解析为Integer打包器,但是也无法影响到方法体外的a和b的值啊
①不放弃 2017-07-13
  • 打赏
  • 举报
回复
不是,面试的时候 ,只需要写那个方法 其他的 都是已经写好的,纸质面试 。。。
shpery 2017-07-13
  • 打赏
  • 举报
回复
main方法是自己写的吗?可以用List或者map
u011035329 2017-07-13
  • 打赏
  • 举报
回复
楼主要的是这效果吧,纯手敲的。 public class Helol{ static class T{ public Integer a; public Integer b; } public static void main(String... args){ T t = new T(); t.a=4;t.b=5; method(t); system.out.println(t.a + " ; " + t.b); } public static void method(T t){ t.a=500; t.b= 400; } }
鱿鱼ing 2017-07-13
  • 打赏
  • 举报
回复
网上很多 private static void method(Object a, Object b) { a = 400; b = 500; System.out.println(a); System.out.println(b); System.exit(0); }
丄whistle 2017-07-13
  • 打赏
  • 举报
回复
把你自己写的东西去掉,把完整原题给上来。 还有就是java使用值传递是无法改变原有变量的值的。
加载更多回复(2)
昨日,11.19,最新整理了,第61-80题,现在公布上传。 另加上之前公布的第1-60 题,在此做一次汇总上传,以飨各位。 可以这么说,绝大部分的面试题,都是这100 道题系列的翻版, 此微软等公司数据结构+算法面试100 题系列,是极具代表性的经典面试题。 而,对你更重要的是,我自个还提供了答案下载,提供思路,呵。 所以,这份资料+答案,在网上是独一无二的。 ------------------------------------ 整理资源,下载地址: 答案系列: 1.[最新答案V0.3 版]微软等数据结构+算法面试100 题[第21-40 题答案] http://download.csdn.net/source/2832862 2.[答案V0.2 版]精选微软数据结构+算法面试100 题[前20 题]--修正 http://download.csdn.net/source/2813890 //此份答案是针对最初的V0.1 版本,进行的校正与修正。 3.[答案V0.1 版]精选微软数据结构+算法面试100 题[前25 题] http://download.csdn.net/source/2796735 题目系列: 4.[第一部分]精选微软等公司数据结构+算法经典面试100 题[1-40 题] http://download.csdn.net/source/2778852 5.[第1 题-60 题汇总]微软等数据结构+算法面试100 题 http://download.csdn.net/source/2826690 更多资源,下载地址: http://v_july_v.download.csdn.net/ 若你对以上任何题目或任何答案,有任何问题,欢迎联系我: My E-mail: zhoulei0907@yahoo.cn ------------- 作者声明: 本人July 对以上公布的所有任何题目或资源享有版权。转载以上公布的任何一题, 或上传百度文库资源,请注明出处,及作者我本人。 向你的厚道致敬。谢谢。 ---July、2010 年11 月20 日。 ------------------------------------------------------ 各位,若对以上100题任何一道,或对已上传的任何一题的答案, 有任何问题,请把你的思路、想法,回复到此帖子上, 微软等100题系列,永久维护地址(2010年11.26日): http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html

62,626

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧