String能变化吗?和StringBuffer的区别是什么?

【新手可忽略不影响继续学习】看过上面例子的童鞋一定会觉得很奇怪,s = s + s1.charAt(i); 马克-to-win, s不是老在变化吗?其实s = "";时,虚拟机会创建一个String对象,s = s + s1.charAt(i); 时,会创建一个新对象,而不是之前的s了,会导致新对象的生成,这样做次数少还没有太大的问题,如果次数多的话,很浪费空间。StringBuffer是在同一个实例上做这些事,不用生成新对象。当做的次数多的话,会节省大量空间。
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。