a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 127|回复: 0

[考试试题] JAVA编程经典模拟题:传递引用

[复制链接]
发表于 2012-8-4 12:33:16 | 显示全部楼层 |阅读模式
下列轨范在1处是否会有异常,如不美观没有,输出是什么?是否会运行到2处,如不美观会,输出是什么?为什么会有这样的结不美观?
0 E# `1 H5 b! F1 ]: f  import java.util.ArrayList;. Q! I2 y1 Q$ Q
   import java.util.List;
/ U1 ~; g. u. p9 c3 R: B3 [* m0 y   8 e: i$ n2 w+ z/ ?9 i4 d3 F# D+ O7 m
   public class TestClass {
" U9 s+ a  Q, H' z, F4 r3 H7 z  ^) i. G: w1 i* }
   public static void main(String args[]) {
+ Q% u4 \! F7 e( w     List list = new ArrayList();- M# _( l1 Z7 p* s0 V
     test2(list);
8 M2 u/ u- [5 s! I- u7 A( }4 l     System.out.println(list.size()); // 1处
7 f, D! i8 ~1 Q$ w9 z     test3(list);
# x# y: V; P1 t3 F8 D) Q     System.out.println(list.size()); // 2处
: ~, E& E% {' s4 E/ n   }
8 d' w% B& R* f   $ K9 A! R# ^/ m. N" l
   public static void test2(List list) {
7 Y) @/ L5 I3 P* r( f+ r     list = null;$ `" a+ M% `# O  c; ^! ?0 l& c
   }
2 [; F# R+ s! W) s, b   ) R5 w* z6 N: I6 h/ z* q
   public static void test3(List list) {) H9 W: }7 x+ o. K& X2 e
      list.add(“aaaa“);
  e' ^- }5 o- w' ^5 q   }$ P2 y7 G6 x1 S# k
   }
5 \# \2 O& Q; cplumeChen:, U& B1 d+ j' A
不会犯错的。结不美观是0,1。
) @) C) y" v  d  ?' B9 v6 B+ U因为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 04:18 , Processed in 0.152931 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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