集合类参数的传递

集合类参数的传递

ID:11536853

大小:26.50 KB

页数:4页

时间:2018-07-12

集合类参数的传递_第1页
集合类参数的传递_第2页
集合类参数的传递_第3页
集合类参数的传递_第4页
资源描述:

《集合类参数的传递》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、对于传参,从计算机的本质而言是传值.因为从数据模型而言计算机只认识数学值.但是不同的数学值代表的意义不同,有的数学值表示的是另一个数据的地址.所以根据这个数学值能访问到它表示的数据,我们就把这样的操作称为传址.其实就是某个数据所在的地址的数学表示.其本质还是传值.从应用层而言我们所说的地址当然是指虚拟地址.而对于中间语言(java的byteCode/.NET的IL)而言是托管地址.我们不必关心实际的内存地址如何和它们对应,这由作业系统和应用环境来决定,你想关心也关心不了.我们要关心的是理解作业系统和应用环境提供给我们的可访问地址的内存布局.对于集合类参数,如果传入方法后在方法外重新赋值参数本身

2、,这和其它引用参数一样不会影响方法内的参数.但如果对集合中元素重新赋值则改变了方法内的集合中的元素,因为方法外和方法内的集合就是本身是同一对象.classMyRun{publicstaticvoidexec(String[]args){for(inti=0;i

3、icvoidinvoke(Stringstr){System.out.println("执行的语句是"+str);}}这段程序设计是否有错?如果有错,如何修改?这是我在bea论坛上贴出来的一段程序,最初没有一个人能说明有什么错,更别说如何修改.(我知道有很多水平很高的高手根本不去bea论坛所以没有看到这个问题)更可悲的是我把问题展示了很多根本看不懂的人说我在胡说八道,这就是中国程序员的现状,他没有能力理解和不知道的东西都叫胡说八道,当他上小学时他说初中,高中,大学,研究生的知识是胡说八道的.这个问题的展示很简单:当你设计了上面的类以后,那么我作为调用者,我可以任何方式调用你的类,你都应该是安全

4、的.好,我现在这样调用:先设计一个用来改变数据的线程:classModifyThreadextendsThread{privateString[]arr;publicModifyThread(String[]arr){this.arr=arr;}publicvoidrun(){try{Thread.currentThread().sleep(20);}catch(Exceptione){}arr[0]="s2";}}为了说明问题,我在你设计的类中插入一段sleep来模拟线程运行到那里时被切换到其它线程运行,然后又切换回来到本线程运行的情况:classMyRun{publicstaticvoid

5、exec(String[]args){for(inti=0;i

6、invoke(Stringstr){System.out.println("执行的语句是"+str);}}然后调用:publicclassMain{/**CreatesanewinstanceofMain*/publicstaticvoidmain(String[]args){//TODOcodeapplicationlogichereString[]strs={"s1"};newModifyThread(strs).start();MyRun.exec(strs);}}试试看,我利用一个辅助线程就把s2传进去执行了.好,有人说要同步:classMyRun{publicstaticvoidex

7、ec(String[]args){for(inti=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。