stringbuffer做错的笔试题
2016-10-20 22:51
246 查看
今天笔试出现的一道题,现在把运行结果贴出来:
public static void main(String[] args) {
// TODO 自动生成的方法存根
StringBuffer x=new StringBuffer("A");
StringBuffer y=new StringBuffer("B");
operator(x,y);
System.out.println(x+","+y);
}
private static void operator(StringBuffer x, StringBuffer y) {
// TODO 自动生成的方法存根
x.append(y);
y=x;
}
运行结果是:
AB,B
原因是方法的指针y指向改变了,但是主函数中的y指向依然是没有变的。
后来为了验证我的想法, 在C语言下实现了类型的例子:
void main(){
int a[10]={1,2,3,4,5,6,7,8,9};
int *p=a;
int *q=a;
q++;
q++;
fun(p,q);
printf("%d\n",*p);
printf("%d\n",*q);
}
void fun(int *s,int *t){
*s=*s+100;
t=s;
printf("%d\n",*t);
}
运行结果为:
101
101
3
原理同上,子函数中指针指向改变了,但是主函数中的q仍旧指向数组a[2],所以输出为这个结果。
public static void main(String[] args) {
// TODO 自动生成的方法存根
StringBuffer x=new StringBuffer("A");
StringBuffer y=new StringBuffer("B");
operator(x,y);
System.out.println(x+","+y);
}
private static void operator(StringBuffer x, StringBuffer y) {
// TODO 自动生成的方法存根
x.append(y);
y=x;
}
运行结果是:
AB,B
原因是方法的指针y指向改变了,但是主函数中的y指向依然是没有变的。
后来为了验证我的想法, 在C语言下实现了类型的例子:
void main(){
int a[10]={1,2,3,4,5,6,7,8,9};
int *p=a;
int *q=a;
q++;
q++;
fun(p,q);
printf("%d\n",*p);
printf("%d\n",*q);
}
void fun(int *s,int *t){
*s=*s+100;
t=s;
printf("%d\n",*t);
}
运行结果为:
101
101
3
原理同上,子函数中指针指向改变了,但是主函数中的q仍旧指向数组a[2],所以输出为这个结果。
相关文章推荐
- 今天做错的笔试题:StringBuffer引用传参
- 【java笔试系列二】String、StringBuffer和StringBuilder
- 很简单却很容易做错的一道笔试题
- 做错的笔试题汇总
- 那些年我做错的笔试题一
- 今天做错的笔试题:StringBuffer引用传参
- 企鹅2012笔试中的阿克曼函数(做错了,呜呜。。)
- 笔试题:String、StringBuilder以及StringBuffer的区别
- 【java笔试系列二】String、StringBuffer和StringBuilder
- 百度笔试题——找出程序中的错误(关于中文字符赋值给char时它是一个负数的问题),今天我是做错了!悲剧了!
- 今天做错的笔试题:StringBuffer引用传参
- 昨天的笔试题, StringBuffer
- StringBuffer及String笔试题集锦
- [笔试题目]使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍?
- java面试笔试题:String 和StringBuffer的区别
- 淘宝实习生 笔试算法题 装鸡蛋
- JAVA学习笔记(四)substring、System.exit(1)、java.text.SimpleDateFormat、==、equals、StringBuffer、SQl动态查询
- 2014.03.16 网易游戏TTT计划实习生笔试题
- 笔试题基础(第二篇
- 奇虎360 2017校招笔试题