Java基础之字符串类

来源:互联网 发布:2016最新淘宝刷单技巧 编辑:程序博客网 时间:2024/06/05 07:33

    下面来谈谈Java中对字符串的处理问题:
    Java中有关字符串处理的类有3个,分别是String,StringBuffer和StringBuilder。

    其中String类是不可变长字符串,所以字符串的改变都会产生新的对象。而StringBuffer是可变长字符串。简单来讲,StringBuilder是未实现同步的StringBuffer。

    这三个类在Java的lang包中,定义为final类,说明不能向下继承。它们都实现了Serializable可序列化接口和CharSequence字符队列接口,而String还实现了Comparable<string>接口。

    我们都知道内存划分为栈区、堆区。栈区存放基本类型的变量和对象引用的变量,而堆区则存放new创建的对象和数组。

    而在一些描述String处理的特殊情况时,总会提到String pool,或者Constant Poll。

 

让我们来看看下面两条语句:
String s1="abc";
String s2=new String("abc");
String类有一个特殊的创建方法,就是使用""双引号来创建,第一条语句创建了2个String对象,1个是"abc"对象,一个是指向它的引用变量s1。
第二条语句创建了3个String对象,"abc"是在编译器创建的字符串对象,而在运行期又new了一个"abc"的对象和一个指向新字符串的变量s2。

String s3="abc";
当创建s3时,它会在String pool里面去寻找有没有"abc"对象,如果有就将s3指向这个对象,如果没有就会新建一个对象。

s2=s2.intern();
intern()方法的作用是将返回字符串对象的规范化表示,如果String pool中有"abc"存在,则返回池里的对象,如果没有则在池中创建"abc"对象。

下面再看看几个例子:
String s1 = new String("abc");
String s2 = "abc123";
String s3 = "abc" + "123";
String s4 = "abc" + 123;
System.out.println(s2 == s3); //true
System.out.println(s2 == s4); //false
System.out.println(s2 == s4.intern()); //true
从以上基本可以看出字符串比较的原理。

再来看看字符串一些比较常用的方法:
截取:
String s ="ABCDEFGH";
s.substring(3,6)取出DEF
替换:
String s = "$HelloWorld$HelloBeijing!";
s.replace("$Hello","nihao");
分割:
String s="1,2,3,4,5,6";
String t[]=s.split(",");

原创粉丝点击