a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 79|回复: 0

[考试试题] JAVA编程模拟题之传递引用

[复制链接]
发表于 2012-8-4 12:33:16 | 显示全部楼层 |阅读模式
下列轨范在1处是否会有异常,如不美观没有,输出是什么?是否会运行到2处,如不美观会,输出是什么?为什么会有这样的结不美观? * h7 b# i, K/ P: n5 i7 M7 L2 @
  import java.util.ArrayList;
& h3 M, \  F# f" F5 s2 S   import java.util.List;
& s9 C) l5 u$ j: L1 N( U% D$ R! ]! A  
. h2 k: d% V3 P0 @$ I. J0 e   public class TestClass {
5 q- p- H8 O0 t
* {" H/ y  Q- [( x6 M: a0 d  K   public static void main(String args[]) {
: {& c5 f$ F7 w' r; M     List list = new ArrayList();0 `* ]/ o9 z  o" g
     test2(list);
  l. r1 D( J* b: q0 w     System.out.println(list.size()); // 1处+ c; n# h# u5 m2 \; `: }  y
     test3(list);- C& V: ]+ ?6 v3 a0 f" f- D! C
     System.out.println(list.size()); // 2处
; \9 X1 H+ J+ c# H: E( N/ M   }: h( N+ q9 I  B, N% @
  
8 F; ?0 v# }9 O# j4 }8 s  P   public static void test2(List list) {
8 m) s% [4 ]/ R  x/ I" ~8 K     list = null;
- X! S* g4 _2 h! S" Q4 M- ~: n   }
! N- g! L/ w# r1 }7 S' O   - f; i% J) F, v
   public static void test3(List list) {
) j& }( s  Z( V8 c1 h/ N      list.add(“aaaa“);  W9 y- [  T$ b" s
   }
$ m6 T) S* }; W7 P7 C   }
' F; {0 V" M& G& |plumeChen:0 m; P" a5 }6 J( H. l
不会犯错的。结不美观是0,1。
% v% F6 T3 |# q- |6 H1 i2 C0 X! `因为test2(list)传得是list的引用,我理解成指针置的副本,list=null;只是把阿谁传入的值设置为null,不改变原本list的指针和内容。test3(list)传入的一样,可是执行了list.add()因为传入指针值的副本也指向原本的阿谁list的地址,所以原本的阿谁list的内容就改变了,size酿成了1了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-22 03:39 , Processed in 0.376512 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表