Java之String,StringBuffer,StringBuilder

1.String

     在 Java 中,字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中。默认情况下,该包被自动导入所有的程序。String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。那创建String对象的方法如下:

public class Tesmain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str1 = "Java Study";
		String str2 = "Java Study";
		String str3 = new String();
		str3 = "Java Study";
		String str4 = new String("Java Study");
		String str5 = new String("Java Study");
		
		System.out.println(str1 == str2);
		System.out.println(str1 == str3);
		System.out.println(str1 == str4);
		System.out.println(str4 == str5);
		System.out.println(str4.equals(str5));
	}

}

输出结果如下: 

true
true
false
false
true

那么,“==” 和 equals() 有什么区别呢?

==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象

equals(): 比较存储在两个字符串对象中的内容是否一致

java为String类型提供了缓冲池机制,当使用双引号定义对象时,Java环境首先去字符串缓冲池寻找相同内容的字符串,如果存在就直接拿出来应用,如果不存在则创建一个新的字符串放在缓冲池中。且该位置字符串相加变成了对象所以是false。

String 类提供了许多用来处理字符串的方法,例如,获取字符串长度、对字符串进行截取、将字符串转换为大写或小写、字符串分割等,下面我们就来领略它的强大之处吧。

2.StringBuffer

       在Java中,除了可以使用 String 类来存储字符串,还可以使用 StringBuilder 类或 StringBuffer 类存储字符串,那么它们之间有什么区别呢?

String str = "hello";
System.out.println(str + "world");
System.out.println(str);

这是我们经常输出的形式。第一个输出:hello world,第二个输出hello

      程序运行时会额外创建一个对象,保存 "helloworld"。当频繁操作字符串时,就会额外产生很多临时变量。使用 StringBuilder 或 StringBuffer 就可以避免这个问题。至于 StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。

public class HelloWorld {
    public static void main(String[] args) {   
       // 创建一个StringBuilder对象,用来存储字符串
		StringBuilder hobby=new StringBuilder("hello world");
		System.out.println(hobby);
	}
}

StringBuilder 类提供了很多方法来操作字符串:

这里任意创建一个StringBulider字符串,然后冲后往前每三个字符插入一个|进行分隔

// 创建一个空的StringBuilder对象
StringBuilder str = new StringBuilder("");
        
// 追加字符串
str.append("jaewkjldfxmopzdm");
		
// 从后往前每隔三位插入逗号
for(int i = str.length()-3; i >=0 ; i=i-3){
str.insert(i,",");   
		}

// 将StringBuilder对象转换为String对象并输出
System.out.print(str.toString());

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值