标签:
字符串是一个引用数据类型,字符串都是对象。
String特性:1、在程序中出现的字符串字面量(常量),在程序中运行时会以对象的形式保存在JVM内存的字符串池中,并且所有的这些字符串字面量对象都是共享的;
2、(不变特性)字符串一旦定义就永远不会被改变了;
不变模式 - 23种设计模式之一;
StringBuffer - 可变的字符序列,它在日常工作中就是做字符串连接的,线程安全的;
- appand()方法; StringBuilder 与 StringBuffer 方法相同
StringBuilder - jdk1.5以后提供的新的类,但线程不安全,效率更高;
思考:String str = new String("Hello"); //执行完后,会生成几个String类型对象?
答案:两个对象,一个是字面量生成的,在字符串池中,一个是new出来的,在堆里。这样是很低效率的,所以建议大家不要使用这种方式来生成字符串对象;
日常工作当中,我们几乎不用 == 来比较字符串,通常情况下,我们只关注字符串内容是否相等,而不关注是否是同一对象,所有我们更多的使用String类重写的 Object类中的equals方法 来比较字符串;
凡是方法中带有String类型返回值的,在运行时都会生成一个新的字符串返回,原有字符串是不会发生任何改变的;
标签:
原文地址:http://www.cnblogs.com/coffeerun/p/5738417.html