java学习笔记---String类

  Sting 类: final class
一、S ring 常量与 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       
内容相同
二、            String StringBuffer 区别联系:(重点)
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;
2 String.compareTo(String str)
      作用: 比较两字符串      
参数: str----- - 要比较的 String
返回: 如果参数字符串等于此字符串,则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。
例:    String str = new String("abd");
       System.out.println(str.compareTo("abc"));
       返回: 1;
3 String.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]+" ");
     }
}
运行结果 :
中国 北京 海淀 学院路
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值