String对象的几个理解
来源:互联网 发布:老干部网络意思是贬义 编辑:程序博客网 时间:2024/06/06 05:18
转载地址:http://my-mis.blog.sohu.com/14592137.html
一、关于String对象
关于String对象,bbs上争论不休。
现在倾向的解释是:String s = “abc”;这个语句中s是一个引用,它指向对象”abc”。这样一来,下面的语句:
String s1 = “abc”;
String s2 = “abc”;只产生了一个对象,即:”abc”。
而String s = new String(“abc”);这个语句中s是一个对象。下面的语句:
String s1 = new String(“abc”);
String s2 = new String(“abc”);就产生了两个对象,它们是s1和s2。
有了上面的解释,我们就不难理解,为什么我们优先在代码中使用前一种表达方式,因为前一种方式是引用,不论你在代码中要使用多少个相同的引用,只产生一个对象。而后一种方式则即使多个对象的内容一样,它们也是不同的对象,有各自的内存开销;这就大大的增加了我们内存的开销。
同样,下面的代码以及它们的运行结果也就能解释了。
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
代码:System.out.println(s1==s2);
运行结果:true
代码:System.out.println(s1=="abc");
运行结果:true
代码:System.out.println(s1.equals(s2));
运行结果:true
代码:System.out.println(s1==s3);
运行结果:false
代码:System.out.println(s3.equals("abc"));
运行结果:true
二、String与StringBuffer的区别
既然语句:String s = “abc”;中的s是一个引用。那么,在下面的语句:
String s = “abc”;
s = s+”d”;中,就应该有三个对象:”abc”、”d”和”abcd”。引用s先是指向对象”abc”,后指向对象”abacd”。
这样,我们就能看出String和StringBuffer的区别来。对于下面的代码:
String s = “”;
for(int i=0;i<10;i++){
s = s+i;
}
我们将产生10多个对象。而下面的代码:
StringBuffer sb = new StringBuffer();
for(int i=0;i<10;i++){
sb.append(i);
}
只产生一个对象。
所以,在String对象需要进行相加的时候,使用StringBuffer要明显比使用String优越,特别是在循环相加的时候。
三、其他基本类型与String的转化
在实际的编码过程中,经常要将其他的基本类型转化为String类型,如上面的我们所常用到的例子:
String s = “”;
for(int i=0;i<10;i++){
s = s+i;
}
中,s = s+i;语句中就需要将整型数据i转化为字符串,然后再与s相加。
其实,除了s = s+1;的这种转化方式,还有一种我们大家所不常用到的转化方式,如下:
s = s+Integer.toString(1);
经过大家对对上面两种转化方法所耗时间的测试,结果发现后面一种转化方式所耗的时间大大低于前面一种转化方式所耗的时间。
所以大家在编码的过程中,不妨使用后面的一种转化方式。
- String对象的几个理解
- String对象的几个理解
- String对象的几个理解
- 关于 new String("xyz")创建几个对象的理解
- 关于 new String("xyz")创建几个对象的理解
- 关于 new String("xyz")创建几个对象的理解
- 关于string创建几个对象的问题
- String创建几个对象的问题
- String创建几个对象的问题
- String创建几个对象的问题
- 关于String创建几个对象的问题
- 几个String对象?
- 对面向对象几个基本概念的理解
- 面向对象几个主要特征的理解
- 分步理解String对象的数据类型
- 对象引用与对象的区别 ,String s = new String("abc");创建了几个对象?
- JAVA String对象理解
- String创建对象理解
- java.lang.NoSuchMethodError
- ffmpeg 15条使用命令
- js判断浏览器
- 第三章:栈与队列(思维导图)
- 发行的内部消费那些烦恼发行年份下半年消费
- String对象的几个理解
- CentOS6.5升级git
- Git+TortoiseGit+COPSSH
- 数模成绩出来了QAQ
- COM编程小结
- QT MVC模式
- 2D平面中关于矩阵(Matrix)跟图形变换的讲解
- hash_map的使用技巧(转载)
- js 一些错误汇总----点滴