java中 String和StringBuffer的区别实例详解
Java中String和StringBuffer的区别实例详解 Java中String和StringBuffer都是用来存储字符串的对象,但是它们之间有着很大的区别。下面我们来详细介绍Java中String和StringBuffer的区别实例详解。 String是不可变对象,一旦被创建,就不能修改它的值。对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。String是final类,即不能被继承。String的不可变性是通过final修饰符来实现的,使得String对象一旦创建就不能被修改。 而StringBuffer是可变对象,当对它进行修改的时候不会像String那样重新建立对象。StringBuffer对象实例化后,只对这一个对象操作。StringBuffer可以通过构造函数来建立,例如StringBuffer sb = new StringBuffer();对象被建立以后,在内存中就会分配内存空间,并初始保存一个null。通过它的append方法向其赋值,例如sb.append("hello"); 在字符串连接操作中StringBuffer的效率要明显比String高。String对象是不可变对象,每次操作String都会重新建立新的对象来保存新的值。StringBuffer对象实例化后,只对这一个对象操作。因此,在大量字符串连接操作中,使用StringBuffer可以提高效率和减少内存占用。 我们可以通过一个小的例子来测试String和StringBuffer在时间和空间使用上的差别。例如,我们可以使用String和StringBuffer来实现一个字符串连接操作,例如: public class Test { public static void main(String args[]) { String str = "abc"; StringBuffer sb = new StringBuffer("abc"); Runtime runtime = Runtime.getRuntime(); long start = System.currentTimeMillis(); long startFreememory = runtime.freeMemory(); for (int i = 0; i < 10000; i++) { str += i; //测试StringBuffer时候把注释打开 //sb.append(i); } long endFreememory = runtime.freeMemory(); long end = System.currentTimeMillis(); System.out.println("操作耗时:" + (end - start) + "ms," + "内存消耗:" + (startFreememory - endFreememory)/1024 + "KB"); } } 测试结果显示,使用String做10000次向一字符串后添加字符串操作耗时:1872ms,内存消耗:1301KB;使用StringBuffer做10000次向一字符串后添加字符串操作耗时:15ms,内存消耗:162KB。从结果可以看出,使用StringBuffer可以明显提高效率和减少内存占用。 Java中String和StringBuffer的区别实例详解主要体现在String的不可变性和StringBuffer的可变性上。StringBuffer的使用可以提高效率和减少内存占用,但是需要根据实际情况选择合适的对象。
- 粉丝: 7
- 资源: 986
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助