一、String类

 String使用非常频繁,用来描述一个字符串.String中实现了很多

 对字符串方便的操作方法.

 String内部使用char[]实现字符串的数据保存

 

 字符串的"字面量(直接量)"也是String类型的实例

  

 String对象是不变对象.对象创建后内容不可更改,这样的规则使

 得String看起来更像简单类型.

 

 String中的每个字符都是有索引值的,第一个字符的索引值为0,

 依次类推

 

 String API

  charAt()   :返回指定索引处的char值

  length()  :返回字符串长度

  trim()    :返回去掉字符串两边的空白(不是空格)

                                的字符串

  toLowerCase() :将字符串中的英文全小写

  toUpperCase() :将字符串中的英文全大写

  indexOf()  :返回给定字符在当前字符串中第一次出

              现的索引值

  lastIndexOf() :返回给定字符在当前字符串中最后一次

        出现的索引值

  endsWith()  :判断当前字符串是否以给定字符串结尾

  startsWith() :判断当前字符串是否以给定字符串开始

  substring()  :截取字符串

  toCharArray() :将字符串转换为字符数组

  

静态字符串

 java在编译期间(javac)凡是遇到"字面量"与常量间的运算,都会

 先运算出结果,在进行编译工作

 例如:

  源代码中:

   String name = "abc" + "def";

  编译期间:

   String name = "abcdef";

 

 

 运行期间当字符串池中有String"字面量"时,java会直接引用,若

 没有才会创建对象

  

  String a = "abc";

  此时,字面量"abc"在String池中不存在,那么java创建一个

  String对象保存"abc",并放入String池中.

  

  String b = "abc";

  当执行到这句话时,"abc"在String池中已经存在,那么java

  会让b直接引用之前创建的字符串对象"abc",而不重复创建

  对象.尽可能优化字符串对象的重用(因为字符串是不变对象

  所以重用不会带来问题)

  

  因为这个特性,所以a==b为true是存在的.

 

二、正则表达式:

 正则表达式的作用:约束字符串的格式

 

字符集:

 []   :方括号表示其中的内容任选其一,代表一个字符

        [1234] 1,2,3,4任选其一

 ()   :表示一组内容,圆括号中可以使用"|"符号

 

 |   :逻辑或关系

        

 ^   :非,除了

     [^12] 除了1或2的其他字符

     

 -   :范围,范围应从小到大  

     [0-9]表示此字符只能是数字

     [a-f]表示此字符只能是a,b,c,d,e,f之一

     [0-6a-fA-F] 0123456abcdefABCDEF

 

 {n,m}  :修饰前一个字符,表示其出现n-m次.n应小于m

 {n}   :修饰前一个字符,表示其出现n次

 {n,}  :修饰前一个字符,表示其出现n次以上   

     0[xX][0-9a-fA-F]{1,8}

     0x7fffffff  int最大值

 

 预定义字符集:

 \d   :表示一个数字.与[0-9]意思一致

 .   :表示任意字符

 \w   :表示单词字符.[0-9a-zA-Z_] 包含个下划线

 \s   :表示空白: \t \n \r \b \p

 

 \D   :表示非数字

 \W   :非单词字符

 \S   :非空白

 

 ?   :修饰前一个字符出现0-1次.  {0,1}

 +   :修饰前一个字符出现1次以上.{1,}

 *   :修饰前一个字符出现任意次. {0,}





 

 注意:"."在正则表达式中代表任意字符,若想表示"."的原意,我们

   需要使用"\."表示

   网页url格式:

 [w]{3}\.[0-9a-zA-Z]+\.com

 

 通过上面的正则表达式,是否能描述

 wwww.sohu.com

 

 可以的.原因在于,正则表示式搜索整个字符串,判断部分内容满足

 格式就可以.





 为了解决让正则表达式全字符匹配.我们需要告诉正则表达式需要

 从字符串的开始到结尾^ $

 ^[w]{3}\.[0-9a-zA-Z]+\.com$

 

 常用的正则表达式: 

  

  邮编 :   ^[0-9][0-9][0-9][0-9][0-9][0-9]$    

      邮编只有6位数字

      ^[0-9]{6}$

      ^\d{6}$

  

  用户名:   单词字符出现8-10次

      ^\w{8,10}$

      ^[0-9a-zA-Z_]{8,10}$

  

     手机号码:   +86 15811111111   

        0086 15811111111

       15811111111

        

        ^(\+86|0086)?\s?\d{11}$

    

     身份证号:     15位或18位

                    18位最后一位有可能是x(大小写均可)

                    ^\d{15}(\d{2}[0-9xX])?$ 

    

     一个坐标:     18  ,  789

           18 789

          ^\d+(\s*,\s*|\s+)\d+$

     

     正确答案:     ABCD  A,B  A B C  A , B

 ^A?(\s*|\s*,\s*)?B?(\s*|\s*,\s*)?C?(\s*|\s*,\s*)?D?$

 

 

     日期格式:     2012-08-17

        ^\d{4}-\d{2}-\d{2}$

        ^\d{4}(-\d{2}){2}$

      

        2012-99-99

        

        

   email   :     ^\w+@\w+(\.(com|cn|net))+$ 

 

=======================================================

String中对正则表达式的支持

 String的API中有几个方法支持正则表达式

 matches()  匹配正则表达式

 slipt()         根据正则表达式拆分字符串

 replaceAll() 将满足正则表达式的部分已给定字符串替换









缓冲字符串StringBuffer和StringBuilder

 String:char[] + 操作  char[]为不变对象

     优点:使用起来更自然,贴近基本类型

     缺点:字符串拼接时资源消耗大!处理速度慢(要创建很多对象)

  

 在进行大规模频繁修改字符串时,String的缺点明显!

 这时应使用缓冲字符串

 

 StringBuffer:char[] + 操作 char[]可变

 

 缓冲字符串中的char[]数组使用一种变长算法自动扩容当前

 char[]长度.以满足其中字符串数据的拼接与修改.

 

 StringBuffer的API:

  insert() :向当前字符串中指定索引处插入字符串

  append() :在当前字符串末尾追加字符串

  delete() :删除字符串中的部分内容

  toString()  :将当前缓冲字符串转换为String









 StringBuilder:和StringBuffer几乎一样,区别在于

      StringBuilder:线程非安全

      StringBuffer :线程安全





 String的拼接优化:

  String s = s1 + s2;

  java实际运行时优化为

String s = new StringBuilder(s1).append(s2).toString();

此处为转载的网址:

转载的出处

String类、正则表达式的更多相关文章

  1. Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式

    一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...

  2. Java学习笔记21(String类补充:正则表达式)

    正如python的re模块,不过Java和Python的正则表达式有一些区别,这里做简单介绍,具体的细节可以参考网上其他的文章: 功能:可以用于检验一个字符串,比如验证用户名,验证密码格式,验证是否是 ...

  3. java常用类与包装类--常用类正则表达式 String正则方法+Matcher+Pattern

    0.java中的正则 java 中的正则总共涉及三个类(或者说1个String类和一个regex包) java.lang.String java.util. Matcher java.util.Pat ...

  4. Java—API/Obiect类的equals toString方法/String类/StringBuffer类/正则表达式

    API  Java 的API(API: Application(应用) Programming(程序) Interface(接口)) 就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来 ...

  5. C#笔记2__Char类、String类、StringBuilder类 / 正则表达式 /

    Char类 String类 字符串的格式化:String类的Format方法 StringBuilder类 以上:百度 or 查手册.....

  6. String类常用方法

    1.String类的特点,字符串一旦被初始化就不会被改变. 2.String对象定义的两种方式 ①String s = "affdf";这种定义方式是在字符串常量池中创建一个Str ...

  7. String类replaceAll方法正则替换深入分析

    作者网址: https://my.oschina.net/shipley/blog/98973 背景:      前几天有人发了一个关于下面问题的贴,对这个有点好奇,故花时间做了点研究.       ...

  8. String类和StringBuffer类的方法

    一.String类的方法 public char charAt(int index)          返回字符串index个字符 public int length()         返回字符串长 ...

  9. java.lang.String 类的所有方法

    java.lang.String 类的所有方法 方法摘要 char charAt(int index) 返回指定索引处的 char 值. int codePointAt(int index) 返回指定 ...

随机推荐

  1. ROS创建工作空间(三)

    查看正在使用的ROS工作空间,使用命令 echo $ROS_PACKAGE_PATH 我新建了两个

  2. LCD驱动 15-1

    app: read() ---------------------------------------------------------------------------------------- ...

  3. convert2Mp4 code snippet

    #pragma mark - helper - (NSURL *)convert2Mp4:(NSURL *)movUrl { NSURL *mp4Url = nil; AVURLAsset *avAs ...

  4. Android事件处理--读书笔记

    2013-12-28 17:57:17 1. Android提供了两种方式的事件处理:基于回调和基于监听的事件处理: 1.1 对基于监听的事件处理而言,主要做法是为Android界面组件绑定特定的事件 ...

  5. jQuery 其他操作

    1. 样式操作 1.1 获取 class 和设置 class : class 是元素的一个属性, 所以获取 class 和设置 class 都可以使用 attr() 方法来完成. 1.2 追加样式: ...

  6. JSP中的EL

    1.为什么要使用EL 使用<jsp:getProperty>,只能访问bean属性的性质,不能访问嵌套性质.例如一个含有Dog对象的Person对象. 当然使用脚本可以工作,但是如果不想使 ...

  7. 使用AWT组件实现验证码功能

    import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D ...

  8. flask剖析

    1.为何只要通过import request,就能拿到对应的request呢?怎么解决区分请求,区分线程的问题? 简而言之,就是通过拿栈顶对象就表示是当前活动的对象 但对于多线程,由于栈的数据结构是 ...

  9. 自定义的dialog

    自定义的dialog  其中包含置顶 删除 和取消 下面的是BaseDialog package com.free.csdn.view.dialog; import android.app.Dialo ...

  10. mybatis写mapper文件注意事项(转)

    原文链接:http://wksandy.iteye.com/blog/1443133 xml中某些特殊符号作为内容信息时需要做转义,否则会对文件的合法性和使用造成影响 < < > & ...