java学习笔记---String类

来源:互联网 发布:博创软件 编辑:程序博客网 时间:2024/04/28 23:51
  Sting类:final class
一、Sring常量与String对象:
String s1 = “hello”;-------------------创建String常量;值保存在常量池中
String s2 = new String(“hello”)-------创建String对象,s2保存的是内存空间地址;
例:
String s1 = "hello";
 String s2 = "hello";
 String s3 = new String("hello");
s1 == s2;           // true        地址相同
s1 == s3;          // false      
地址不同
s1.equals(s2);     // true       
内容相同
s1.equals(s3);     // true       
内容相同
二、            StringStringBuffer区别联系:(重点)
1、联系:String中的所有方法几乎与StringBuffer一样,StringBuffer只多一个方法即:
             StringBuffer.append();
2、String的劣势:
 String对象是常量字符串。一旦被初始化和赋值,它的值和所分配的内存就被固定了。如果硬要改变它的值,将会产生一个包含新值的新String对象。这就是String对象会消耗掉很多资源的原因。下面的代码创建了一个String对象并使用串联(+)符号来为它添加更多字符:
String sample1=new String(“Builder.com”);
sample1+=”is”;
sample1+=”the place”;
sample1+=”to be.”;
系统最终会创建四个String对象来完成上面的替换。其中第一个的文本是Builder.com。然后每次添加文本时都会创建一个新的对象。这就导致频繁使用String消耗太多的资源。StringBuffer类所要解决的正是这个问题。StringBuffer类被设计用与创建和操作动态字符串信息。为该对象分配的内存会自动扩展以容纳新增的文本
3、StringBuffer用法:
   有三种方法来创建一个新的StringBuffer对象:使用初始化字符串、设定大小以及使用默认构造函数:
StringBuffer sb  =  new StringBuffer();
StringBuffer  sb  =  new StringBuffer(30);
StringBuffer  sb  =  new StringBuffer(“Builder.com”);
第一行创建了不包含任何文本的对象,默认的容量是16个字符。类的第二个实例也不包含文本,容量是30个字符,最后一行创建了一个拥有初始化值的对象。StringBuffer类位于java.lang基础包中,因此要使用它的话不需要特殊的引入语句。一旦创建了StringBuffer类的对象,就可以使用StringBuffer类的大量方法和属性。
一旦创建了StringBuffer类的对象,就可以使用StringBuffer类的大量方法和属性(String中方法和属性一样)。最显著的方法是append,它可以将任何类型添加到当前StringBuffer对象内容的结尾。下面的代码示例了append方法的语法:
StringBuffer sb=new StringBuffer();
sb.append(“B”);
sb.append(“u”);
sb.append(“i”);
sb.append(“l”);
sb.append(“d”);
sb.append(“e”);
sb.append(“r”);
这些代码创建了”Builder”字符串并将它送往标准输出,但是只创建了一个对象。如果使用String对象就需要八个以上的对象。注意代码利用了StringBuffer类的toString方法。这个方法将其内容转换成一个可以被用于输出的字符串对象。它允许操作对应的文本用于输出或数据存储。
append方法有十种重载形式,允许将各种类型的数据添加到对象的末尾。StringBuffer类还提供了处理对象内部数据的方法。
三、            String类的常用方法:
1、   String.charAt(int a):
作用:返回指定位置的字符;
参数: a---指定的位置;
返回:字符,
例: String s = “abcdef”;
s.charAt(3)
返回: d;
2String.compareTo(String str)
      作用:比较两字符串     
参数: str----- - 要比较的 String
返回:如果参数字符串等于此字符串,则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。
例:   String str = new String("abd");
       System.out.println(str.compareTo("abc"));
       返回:1;
3String.substring(int a,int b);
       a位置到b位置(不包括b)截取字符串组成新的字符串,
例:String str = “abcde”; str.substring(0,3)      输出:abc
4、String.split(String regex);
虽然使用正则表达式能很好的进行字符串的解析、提取、替换,但是对于一些简单的应用,使用String类提供的一些方法就可以很好的完成,最突出的就是split方法。split方法能够很方便的将字符串按照一定的规则拆分开。
例:
String value = "Tom,Jane,Tony,Elva,Gigi";
String[] names = value.split(",");
for(int i=0; i< names.length;i++)
{
System.out.println(names[i]);
            }
运行结果:
Tom
Jane
Tony
Elva
Gigi
看到这个运行结果,很多人都认为split方法就是按照给定的字符串对字符串进行拆分,知道碰到了下面的问题。
有一个字符串:“中国.北京.海淀.学院路”。请解析此字符串,并打印输出“中国北京海淀学院路”。
于是写代码如下:
String value = " 中国 . 北京 . 海淀 . 学院路 ";
String[] names = value.split(".");
for(int i=0; i< names.length;i++)
{  
System.out.print(names[i]+" ");
}
运行结果:
 
对,没看错!没有任何输出!让我们来看看API中split方法的参数吧:    Public String[] split(String regex这里的参数的名称是regex,也就是Regular Expression(正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式,split的实现直接调用的Matcher类的split的方法。读者已经知道,“.”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。
修改代码如下:
Private static void split2()
{
String value = "中国.北京.海淀.学院路";
String[] names = value.split("//.");
     for(int i=0,n=names.length;i<n;i++)
     {
         System.out.print(names[i]+" ");
     }
}
运行结果 :
中国 北京 海淀 学院路
 
原创粉丝点击