字符串的应用

 
一、通过==与equals的对比,引出String内存机制的问题。
1.字符串常量池与简单语法。
     Jvm运行的时候,将内存分为两个部分,一部分是堆,另一部分是栈。堆存放的是创建的对象,而栈中存放的  是方法调用过程中的局部变量或引用。而JAVA字符串对象内存  实现的时候,在堆中又开辟了一块很小的内   存,其被称为常量池,专门用来存放特定的字符串对象。
2.字符串常量池与new语法
   
3.String是不能继承的。

二、 正是因为字符串会创建对象或者本身就是对象,所以占用的内存比较大。所以就产生了StringBuffer类(缓冲类)
  StringBuffer sb=new StringBuffer(<参数序列>);查看Api的构造函数。
  1.append();接收各基本类型及对象引用类型的参数。其功能为将参数所指定的内容添加到StringBuffer对象内容末尾。
  
三、方法链
书写格式:引用变量.方法1(<参数序列>).方法2(<参数序列>).方法3(<参数序列>)........;
注意位于中间的方法,即非最后的方法必须要有返回值(不能为void),且返回类型必须为对象引用类型。

步骤执行:1.通过引用变量调用对象中的方法1。

2.方法1将返回一个对象引用,然后通过该引用调用其指向对象中的方法2。

        3.方法2将返回一个对象引用,然后通过该引用调用其指向对象中的方法3。
4.最后一个方法可以没有返回值或者返回类型为基本数据类型。


四、StringBuffer类的主要方法。

1.append(String str);返回的类型为StringBuffer。

还有insert(int offset,String str);delete(int start,int end);

StringBuffer reverse();//反转

2.toString();//返回一个字符串。
 
五、StringBuilder 类
1.StringBuilder类的执行效率比StringBuffer高,但是StringBuilder方法没有进行同步,在多线程同时操作的时候可能会产生问题,应该在单线程使用。

六、正则表达式

1.对字符串的匹配时,一般有三种情况:

1).可以使用普通字符(包括一些不可 见字符)来匹配确定的单个字符。

2).可以使用预定义的字符来表示范围中的某个字符。

3).如果预定义字符不能满足知道范围的要求,也可以使用"[]"给出自定义的范围。

2.量词

在匹配的过程中,有时需要制度某个字符或组出现的次数,这时就需要使用量词。

1).“*”便是指定的字符或组可以出现任意的次数(包括不出现)。

2).“+”表示指定的字符或组至少出现一次。

3)."?"表示指定的字符或组最多出现一次。

3.边界符

4.匹配次数的贪婪与非贪婪。

七、Pattern类与Matcher类

1.pattern类

在包下java.util.regex.Pattern下,特别注意的是Pattern类是private的,因此不能通过调用构造器创建对象,而需要调用pattern类提供的静态工厂方法来获得对象。

方法:public static pattern compile(String regex);

常用方法:int flags();

  Matcher matcher(CharSequence input);//参数input表示将要被匹配的字符序列,该方法返回表示要  被匹配字符序列的匹配器对象。

   String pattern();//该方法将以字符型的形式返回该模式对象表示的正则表达式。

2.Matcher类

该类的对象主要表示将要进行模式匹配的字符串或字符序列。同样不能构造实现,可以通过pattern对象中的matcher方法得到。

常用方法:1.判断

    boolean matcher();//进行匹配检测。

    boolean lookingAt();//是否以指定的模式开始。

    boolean find();//是否查找到。

    2.索引

int start();int end();

    3.替换

String replaceAll(String replace);//全部替换。

String replaceFirst(String replace);//替换第一个。

八、在String类中使用正则表达式

1.匹配检查

该方法签名:public boolean matches(String ergex);注意会抛出异常,如果ergex指定的正则表达式无效。

代码举例:public static void main(String[] args){
//创建用字符串表示的正则表达式
String patternS="\\d{4}-\\d{2}-\\d{2}";
String s1="9999-68-88";
String s2="内容为999-68-99";
//对字符串s1进行匹配检测
if(s1.matches(patternS))

{
System.out.println("匹配成功");
}
if(s2.matches(patternS)){
System.out.println("匹配成功");
}
}

2.查找替换

String replaceAll(String replace);//全部替换。

String replaceFirst(String replace);//替换第一个。

注意:String 类也可以使用正则表达式进行匹配替换,但是只能替换,不能将匹配的内容取出。

3.对字符串进行分析。

public String[] spilt(String regex);

 









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值