西邮ThoughtCoding实验室2016纳新笔试题(Java部分,面向大一大二,带参考答案)

Thought Coding实验室2016年纳新笔试题

     

姓名: _______          班级: ________        联系方式  ________         

 

Java部分

 

一、请看下面这段程序,回答问题

public class Test1 {
public static void main(String[] args){
StringBuffer a = new StringBuffer("Thought"); //语句1
StringBuffer b = new StringBuffer("Coding"); //语句2
operate(a, b);
System.out.println("a = " + a);
System.out.println("b = " + b);
}
static void operate(StringBuffer x, StringBuffer y){
x.append(y); //语句3
y = x;
}
}

1、这段程序的输出结果是什么?为什么?

输出:

a = ThoughtCoding

b = Coding

解释:考察Java参数传递机制与StringBuffer的使用。

operat方法传入两个StringBuffer类型的句柄的副本(也可以说是指向堆内存中StringBuffer对象的指针的副本),一个是x,一个是y,执行”x.append(y);”后,y指向的StringBuffer对象内容”Coding”连接在x指向的StringBuffer对象的字符串内容(底层是一个value[]数组)后,执行”y = x;”后,只是修改了y的指向,并没有修改y指向的StringBuffer对象的字符串内容,在方法执行结束后,xy自然消亡。

2、把上述程序中的语句123分别修改为:

String a = "Thought";
String b = new String("Coding");
x = x + y;

输出结果又是什么?为什么有这样的区别?

输出:

a = Thought

b = Coding

解释:考察String的使用以及与StringBuffer区别。

String使用private final char value[]来实现字符串的存储,也就是说,String对象创建之后,就不能修改对象中存储的字符串内容。另外,JavaString重载了”+”操作符,可以直接使用”+”对两个字符串进行连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值