下面代码的输出是?

public class TestExchange {
	String str = new String("1");
	char[] arr = { 'a', 'b', 'c' };

	public static void main(String[] args) {
		TestExchange te = new TestExchange();
		te.exchange(te.str, te.arr);
		System.out.print(te.str + " ");
		System.out.print(te.arr);
	}

	public void exchange(String str, char arr[]) {
		str = "2";
		arr[0] = 'd';
	}
}

 


参考答案

输出

1 dbc

 

分析:

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

给TA打赏
共{{data.count}}人
人已打赏
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管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索