一个关于string的区别

 1 public class Test01 {
 2         public static void main(String[] args) {
 3             //demo1();
 4             //demo2();
 5             //demo3();
 6             //demo4();
 7             demo5();
 8         }
 9         private static void demo5() {
10             String s1 = "ab";
11             String s2 = "abc";
12             String s3 = s1 + "c";
13             System.out.println(s3 == s2);
14             System.out.println(s3.equals(s2));         //true
15         }
16         private static void demo4() {
17             //byte b = 3 + 4;                        //在编译时就变成7,把7赋值给b,常量优化机制
18             String s1 = "a" + "b" + "c";//java中有常量优化机制,在编译时期就能确定s2的值为"abc",所以编译时期,在常量池中创建"abc"
19             String s2 = "abc";//执行到这里时常量池中已经有了"abc",所以就不再创建,所以s1和s2指向的是常量池中同一个字符串常量"abc"
20             System.out.println(s1 == s2);             //true,java中有常量优化机制
21             System.out.println(s1.equals(s2));         //true
22         }
23         private static void demo3() {//==比较的是地址值
24             String s1 = new String("abc");            //录的是堆内存对象的地址值
25             String s2 = "abc";                        //记录的是常量池中的地址值
26             System.out.println(s1 == s2);             //false
27             System.out.println(s1.equals(s2));         //true
28         }
29         private static void demo2() {
30             //创建几个对象
31             //创建两个对象,一个在常量池中,一个在堆内存中
32             String s1 = new String("abc");
33             System.out.println(s1);
34         }
35         private static void demo1() {                //常量池中没有这个字符串对象,就创建一个,如果有直接用即可
36             String s1 = "abc";
37             String s2 = "abc";
38             System.out.println(s1 == s2);             //==号比较的是地址值,true
39             System.out.println(s1.equals(s2));         //比较的是字符串的内容:true
40         }
41     }
42     
时间: 2024-10-09 08:14:47

一个关于string的区别的相关文章

JAVA的StringBuffer类(转载整理)____非常重要的一个类,线程安全,不用每次创建一个对象,以及和String的区别

核心部分转载自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类. 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入.删除等操作,使用StringBuffer要更加适合一些. 在S

const char*、char*、char* const、char[]、string的区别

1.const char* p: p is a pointer to const char(char const* p 一样)   意思就是不能通过p指针来修改p指向的内容(但是内容可以修改).2.char* p      : p is a pointer to char   意思就是可通过p指针来修改p指向的内容3.char* const p: p is a const pointer to char   意思就是p指针是一个常指针,他指向的内存地址不能变,定义的时候就得初始化   一旦给指针

ArrayList和Vector的区别?HashMap和HashTable的区别?StringBuilder、StringBuffer和String的区别?

ArrayList和Vector的区别?从两个方面 1.同步性:ArrayList是线程不安全的,是非同步的:Vector是线程安全的,是同步的.(Java中线程的同步也就满足了安全性) 2.数值增长:ArrayList每次增长为原来的50%;Vector每次增长为原来的100%; (从内部实现机制来讲,ArrayList和Vector都是使用数组(Array)来控制集合中的对象,当向集合中添加对象时,如果内部数组长度不够用时,长度会自动增长.ArrayList会增长为原来的1.5倍,Vecto

StringBuilder和String的区别

转:http://blog.163.com/zhaoyanping_1125/blog/static/201329153201204111726152/ 自己总结,简而言之,stringbuilder和string的区别在于: stringbuilder是变长的. string是定长的. 以下详细介绍String和StringBuilder的使用: --------------------------------------------------------------------------

String和string的区别

C#: string 是C#的语法支持的,而String 则是string 对应的真实CLR中的类型,也就是说string 应该只是String的一个别名. string 可以在不引用 任何命令空间的情况下使用.String 必须先引用 System命名空间. 当我们要用到类的方法时,就用String,如string str = String.Format("{0}",value);. string是C#的保留字,而String不是. JAVA: java只有大写的String和Str

【转】StringBuffer的用法与string的区别

StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类. 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入.删除等操作,使用StringBuffer要更加适合一些. 在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的. 但是有一个最显著的区别在于,

string 和 String的区别

1 string类型是密封(sealed)类型,即从object对象中继承而来. 2 string实例实际就是一个Unicode字符串 3 string类型的值可以是字符串文字 4 string关键字是预定义类System.String的别名,所以我们可以这样写: string name = "Fred"; or String name = "Fred" 5 同样的你可以使用string.Concat() 或者 String.Concat() 6 string 通常

Java中String直接赋字符串和new String的区别

解析Java中的String对象的数据类型 1. String是一个对象.  因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null: 3. String str=”kvill”:   String str=new String (“kvill”);的区别:  在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念.  常

简单的理解 StringBuffer/StringBuilder/String 的区别

StringBuffer/StringBuilder/String 的区别 这个三类之间主要的区别:运行速度,线程安全两个方面. 速度方面(快到慢): StringBuilder > StringBuffer > String String 慢的原因: String为字符串常量,不可被改变,StringBuilder和StringBuffer为字符串变量,可以被改变. 代码实例: 1 String demo="测试内容"; 2 System.out.println(demo