关于append()问题

public class Test {

public static void main(String args[]){

StringBuffer a=new StringBuffer("A");

StringBuffer b=new StringBuffer("B");

operator(a,b);

System.out.println(a);//输出是AB 这里为什么能输出AB呢 方法不是传过去的只是值吗 如果传的不是值那为什么下面的确输出的是B呢

System.out.println(b);//输出是B

}

public static void operator(StringBuffer x,StringBuffer y){

x.append(y);

System.out.println(x);//输出是AB

y=x;

System.out.println(y);//输出是AB

}

}----------------解决方案--------------------------------------------------------

这个问题已经是老声长谈了 呵呵

new StringBuffer("A");这个对象你操作了append所以打印ab

new StringBuffer("B");这个对象你没对他做任何操作,所以他还是b

感觉说的像废话

----------------解决方案--------------------------------------------------------

只要真正明白JAVA里面的方法中的参数是如何传递的,楼主的疑问就解决了.

operator(a,b);就相当于:

程序代码:

{

StringBuilder x =a;

StringBuilder y =b;

x.append(y);

System.out.println(x);//输出是AB

y=x;

System.out.println(y);//输出是AB

}

显然,执行之后:

a里面保存了"AB";

b里面保存的还是"B";

代码中的y=x根本对a,b(指这两个引用)没有影响,so...

----------------解决方案--------------------------------------------------------

但是操作append的是x不是a啊

x和a有不可能指向一个对象如果指向一个对象那下面的y和b也应该是指向同一个对象为什么System.out.println(b);打印的不是AB而是B呢

----------------解决方案--------------------------------------------------------

以下是引用Eastsun在2007-2-15 21:46:04的发言:

只要真正明白JAVA里面的方法中的参数是如何传递的,楼主的疑问就解决了.

operator(a,b);就相当于:

程序代码:

{

StringBuilder x =a;

StringBuilder y =b;

x.append(y);

System.out.println(x);//输出是AB

y=x;

System.out.println(y);//输出是AB

}

显然,执行之后:

a里面保存了"AB";

b里面保存的还是"B";

代码中的y=x根本对a,b(指这两个引用)没有影响,so...

x.append(y);

这个为什么会有影响呢

----------------解决方案--------------------------------------------------------

唔,楼主还是好好想想吧.

或者自己写一些简单的代码验证一下自己的想法.

自己想清楚了,就再也不会有疑问了.

偶该说的已经说了,就不多说了.

----------------解决方案--------------------------------------------------------

其实在JAVA里面到处都是传值,只不过传引用的时候传的是引用的复制值而已,所以你改变引用的指向并不会改变实据数据,但是你用引用去改变东西却能反应出来

这点你要自己好好体会一下

----------------解决方案--------------------------------------------------------

LZ还是把值的传递和对对象的克隆看一下吧!

----------------解决方案--------------------------------------------------------

在JAVA里面是没有对象克隆的,传的都是引用的拷贝

明白了这点以后,就可以知道为什么了

----------------解决方案--------------------------------------------------------

遇到这种题目 我就头大

慢慢体会了

----------------解决方案--------------------------------------------------------

append是什么意思java_关于append()问题相关推荐

  1. 在java中append是什么_Java中的append方法是什么?

    java.lang.StringBuffer的append(char c)方法将char参数的字符串表示形式附加到此序列.参数将附加到此序列的内容中.该序列的长度增加1. 示例import java. ...

  2. append是什么意思java_为什么StringBuilder#append(int)在Java 7中比在Java 8中更快?

    在调查 little debate w.r.t.使用""和 Integer.toString(int)将整数原语转换为字符串我写了这个 JMH microbenchmark: @F ...

  3. python中append函数什么意思_python中append函数用法讲解

    python中append函数用法讲解 如果在做一个地区的统计工作,可以使用列表来帮助我们.输入汉字或者其他字符,比如"01代表汉族",那么在写民族的时候有下拉列表,就可以打01, ...

  4. python中append是什么意思_python里append是什么

    python中的append()函数是在列表末尾添加新的对象,且将添加的对象最为一个整体.与append相对应的是extend函数. 网上有很多对这两个函数的区别讲解,但我觉得都讲的不是很清楚,记忆不 ...

  5. Go 学习笔记(11)— 切片定义、切片初始化、数组和切片差异、字符串和切片转换、len()、cap()、空 nil 切片、append()、copy() 函数、删除切片元素

    1. 切片定义 Go 语言切片是对数组的抽象. Go 中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容 ...

  6. 浅议Python append()与NumPy append()

    最近一直在折腾Numpy的路上越走越远,发现有很多东西可以深入研究.今天就来简单介绍一下NumPy 和 Python中append()函数的特点,以及append()的特性是否适合用于大数据的处理. ...

  7. JQuery获取append后的动态元素:live()和on()

    2019独角兽企业重金招聘Python工程师标准>>> jquery通过 live() 方法附加的事件处理程序适用于匹配选择器的当前及未来的元素(比如由脚本创建的新元素) $(&qu ...

  8. go语言笔记——append底层实现和Cpp vector无异,只是有返回值,double后返回了新的vector地址而已...

    切片的复制与追加 如果想增加切片的容量,我们必须创建一个新的更大的切片并把原分片的内容都拷贝过来.下面的代码描述了从拷贝切片的 copy 函数和向切片追加新元素的 append 函数. 示例 7.12 ...

  9. jquery after append appendTo三个函数的区别

    jq文档的说明是 1.after函数 定义和用法: after() 方法在被选元素后插入指定的内容. 语法: $(selector).after(content) 实例: <html> & ...

最新文章

  1. 13分页和shell命令行模式
  2. Windows NT体系结构
  3. VTK:可视化之ShadowsLightsDemo
  4. YUV格式学习:YUV420P、YV12、NV12、NV21格式转换成RGB24
  5. 关于国土空间规划的价值的一些思考
  6. c# redis 如何设置过期时间_Spring cache整合Redis,并给它一个过期时间!
  7. (33)FPGA面试技能提升篇(MIPI接口)
  8. 面向对象(基础oop)之继承总结
  9. C#语法糖yield
  10. 使用Visual Studio OnlineSQL Server数据库源控制:Git
  11. 小强的HTML5移动开发之路(20)——HTML5 Web SQL Database
  12. VMware系统运维(十一)部署虚拟化桌面 Horizon View 5.2 HTML ACCESS安装
  13. 普林斯顿陈丹琦:如何让「大模型」变小
  14. 力特usb转串口线驱动 linux,力特usb转串口驱动下载
  15. 为什么常用二倍图,流式布局中一倍图是否靠得住
  16. 用中信证券示范大作手回忆录
  17. 干货丨电源架构解析之A40i系列OKA40i-C开发板
  18. cxy安装rasa心得
  19. 清华大学操作系统课程实验
  20. 最大公约数和最小公倍数实现

热门文章

  1. 从学校到职场的路有多远
  2. 汇编中求补指令NEG的小问题..
  3. 技术改变生活,统一通信走向深度融合
  4. 图片不存在显示默认图片
  5. 结构型模式-装饰模式(扩展系统功能)
  6. 表记录的检索(数据查询)
  7. java编程思想读书笔记二(对象的创建)
  8. 如何在VS2013中显示代码行号
  9. as3数据类型检查写法(is/as/typeof/in/instanceof)用法介绍
  10. VS2008下用MFC 的MSComm控件编写串口程序