当前位置:  技术问答>java相关

104题中18题(类似)

    来源: 互联网  发布时间:2015-06-20

    本文导语:  public class Test{   public static void change(String s){   s+="new add";   }      public static void main(String arg[]){   String str = "old string";   System.out.prinln(str);   change(str);   System.out.prinln(str);   } } --------------------------...

public class Test{
  public static void change(String s){
  s+="new add";
  }
  
  public static void main(String arg[]){
  String str = "old string";
  System.out.prinln(str);
  change(str);
  System.out.prinln(str);
  }
}
---------------------------------------------
Java中的所有自变量或参数传递都是通过传递句柄进行的(reference from Think in java)当然除了基本类型
应该输出
  old string 
  old string new add
可去依然是
  old string
  old string
------------------------why
如果换成类中成员变量,以class.string的方式要运行上面的change
  可以输出想要的
  old string 
  old string new add
------------------------why
  method里的local variables和class field(成员变量),传递变量方式不一样???

|
String 对象传引用,
但String 对象很特殊!很容易让人感觉他是传值方式!
这要从String对象的结构来分析!

String对象是一种不可改变的对象!当改变String内容时,将导致
String 重新分配内存空间,所以如果你在过程中改变了传入的String
的内容的话,将生成一个新的String对象,传入的引用也就不指向过程
外的String对象了!
如果要巴String传回去,就用return或StringBuffer吧!

这就是为什么在经常改变字窜内容时 推荐用StringBuffer的原因!


|
你的程序里传递的只是str的一个拷贝,因为str是在主函数里声明的,它的作用范围仅限于主函数,但是这个变量要是声明成类成员变量就不同了,他的作用范围是整个类。

|
没有问题啊。
change(str); 是传的值呀。str 当然不会变。
如果你是这样,
change( Object o ) . 那 o 本身也不会变但是 o 中的变量可以变。

Class Object {
  int i=0;
}

change( Object o){
  o.i=99;
  o=new Object();
}

然后你能看到什么呢?

o.i=99 ;
o 没有变。





|
i agree with sinboy

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python中类似printf的字符串格式化详解
  • 如何在UNIX的C编程中使用类似VC里面的TRACE宏?或者有没有类似功能?
  • 请问Linux字下有没有类似于Dos下Turbo C的集成环境编辑器?如果没有,有一个类似Dos的Edit编辑器都不错,至少有下拉菜单.
  • 诸位写驱动是先找一个类似的程序更改还是从头些?
  • shell如何做成类似java的List
  • 急:哪位用过partition magic,或类似工具,先谢了?100分
  • Android 上类似IOS 的开关控件。 Android ToggleButton
  • 类似Digg的CMS系统 Pligg
  • 类似Twitter的登录框
  • 类似telnet 的BBS的服务器端如何编?
  • 类似于top
  • 请问在redhat9下有类似于vc的开发环境吗
  • aix 和什么系统比较类似?
  • 红旗LINUX 如何进入类似于DOS的命令界面啊
  • 类似于 windows7 下 Purble Pairs 的小游戏 翻一下小游戏
  • 类似于Shell界面下setup命令的文本模式菜单用C语言如何实现
  • 请教java中如何实现vb中chr() ,asc() 类似的功能?
  • JAVA里有没有类似SLEEP的函数?
  • Java有类似的“MSDN”吗?
  • 如何用JAVA做类似服务的一类程序?
  • 如何实现类似PHP.PB等语言中eval的函数功能?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3