下面代码的输出是?

  1. public class TestExchange {
  2. String str = new String("1");
  3. char[] arr = { 'a', 'b', 'c' };
  4. public static void main(String[] args) {
  5. TestExchange te = new TestExchange();
  6. te.exchange(te.str, te.arr);
  7. System.out.print(te.str + " ");
  8. System.out.print(te.arr);
  9. }
  10. public void exchange(String str, char arr[]) {
  11. str = "2";
  12. arr[0] = 'd';
  13. }
  14. }

 


参考答案

输出

  1. 1 dbc

 

分析:

  • te 对象的 str 属性被 exchange 方法处理过之后,仍然指向字符串常量缓冲区 “1”
  • arr 属性是个数组,在 exchange 方法中,数组的内部第一个位置的值被修改,是生效的。如果加上 arr = new char[0]; 这段,输出值不会改变,原理同上。

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    Java

    反射的使用场景、作用及优缺点?

    2020-7-23 20:57:25

    Java

    关于String[] strArr=new String[10];正确的是()

    2020-7-23 20:57:53

    本站所发布的一切源码、模板、应用等文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权。本站内容适用于DMCA政策。若您的权利被侵害,请与我们联系处理,站长 QQ: 84087680 或 点击右侧 私信:盾给网 反馈,我们将尽快处理。
    ⚠️
    本站所发布的一切源码、模板、应用等文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权。本站内容适用于DMCA政策
    若您的权利被侵害,请与我们联系处理,站长 QQ: 84087680 或 点击右侧 私信:盾给网 反馈,我们将尽快处理。
    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索