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

关于String与StringBuffer问题的再次提问----在线等待

    来源: 互联网  发布时间:2015-09-08

    本文导语:  public class test {  public static void stringReplace (String text)  {       text = text.replace ('j' , 'i'); }     public static void bufferReplace (StringBuffer text)  {      text = text.append ("C"); }    public static void main (String...

public class test {
 public static void stringReplace (String text)  {
      text = text.replace ('j' , 'i');
}
  
 public static void bufferReplace (StringBuffer text)  {
     text = text.append ("C");
}
 
 public static void main (String args[])  {
    String textString = new String ("java");
    StringBuffer textBuffer = new StringBuffer ("java");
  
    stringReplace (textString);
    bufferReplace (textBuffer);
  
    System.out.println (textString + textBuffer);
}
}

输出结果javajavaC
请问,为什么String类型的textString不改变哪?

|
这跟两点有关
一个是关于java的函数到底是传值还是传地址
一个是关于对象的
首先肯定的是:java是传值的,但你的这两个函数是传的两个对象,而对象是没有值 的,所以相当于传的是句柄,对于string对象来说,定义了之后,在内存中的值是不可以再改变的,一旦改变,就会新建一个string对象来容纳新的值,也就是产生了一个新的对象,而对于stringbuffer来说,本身是可以改变的,你执行了那步append的操作之后,那个对象本身的句柄并没有发生改变,所以在函数里面的变化就想当于在外面的操作,而string对象的那步操作,传进去的是一个对象,而 改变之后是另一个对象,那么函数体完成之后,能够  显示  出来的当然只是你开始的对象,改变之后的对象出来后是看不到 的
以上的解释应该满意了吧

|
我想你是不是將C++中的指針和這裡的引用搞弧度了,引用傳遞的是一個值,一個實例的地址值,當被調用的方法接收到這個值時,它可以根據這個地址去引
用這個對象,從而修改這個對象的屬性,調用它的方法,當被調用的方法處理完
之後,不管你在調用這個方法的過程中是否給那個引用重新分配了值,他都不會
把你重新分配的這個值傳遞回去(不同與C++中的指針參數);

    
 
 

您可能感兴趣的文章:

  • String和StringBuffer的区别!?!糊了
  • 请问在jbuilder中如何将String类型的字符串赋值给StringBuffer类型的变量?
  • 各位高手:String 和 StringBuffer这两个类有什么区别。
  • 关于string&stringBuffer
  • java_String和StringBuffer区别分析
  • 全面解释java中StringBuilder、StringBuffer、String类之间的关系
  • JAVA中StringBuffer与String的区别解析
  • 关于一个String与StringBuffer的非常奇怪的问题(50分求解):
  • Java之String、StringBuffer、StringBuilder的区别分析
  • 提问一个简单问题,在main()函数中的(String[] args),代表什么?应该怎么用呢??谢谢
  • 与刚才提问的string有一定关系的一个程序。没有看的,看过的都来看呀!!!
  • 初学者提问:main里的的参数String[] args是表示什么?我在运行下列语句时会出错(但编译无错误)。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.lang类string的类成员方法: string定义及介绍
  • 请告知一下String s1 = "mm"; 与String s1 = new String("mm");的区别!
  • C++ Bitsets 成员 to_string():返回bitset的字符串表示
  • String s = new String() 和 String s= null;有什么区别?
  • java命名空间javax.xml.xpath类xpathconstants成员方法: string定义参考
  • 已知a=1,b=2 String string="a+b";如何将string转化为表达式,并计算结果
  • java命名空间javax.management.openmbean类simpletype<t>的类成员方法: string定义及介绍
  • 对String.indexOf(String str,int fromIndex);和lastIndexOf(String str, int fromIndex);的困惑!
  • java命名空间java.io接口objectstreamconstants的类成员方法: tc_string定义及介绍
  • 问个低级的问题:我从库里取汉字时候,代码如下:String ls=ob.test(i);String dbstr1= new String(ls.getBytes("ISO-8859-1"),"GBK");
  • java命名空间javax.xml.ws.handler接口messagecontext成员方法: query_string定义参考
  • c#中 String和string的区别介绍
  • java命名空间java.lang类string的类成员方法: copyvalueof定义及介绍
  • String a="123"与String a=new String("123")出来的两个a,b之间有什么区别???
  • java命名空间javax.imageio.metadata接口iiometadataformat的类成员方法: datatype_string定义及介绍
  • static String和String如何互相赋值?
  • java命名空间javax.print类docflavor.string的类成员方法: text_plain定义及介绍
  • 请问“new String[]{(String ) ob}”怎么理解??
  • java命名空间java.lang类string的类成员方法: valueof定义及介绍
  • 内容是String[]的Object用什么最简单办法转变回String[]
  • java命名空间java.lang类string的类成员方法: tostring定义及介绍
  • 请问String.equals()和String.equalsIgnoreCase()有什么区别啊?


  • 站内导航:


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

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

    浙ICP备11055608号-3