一、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. iOS Storyboard 的基本用法

    (Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果,我贴上本教程所完成的Storyboard的截图:  现 在,你就可以清楚的看 ...

  2. Topcoder SRM 584 DIV1 600

    思路太繁琐了 ,实在不想解释了 代码: #include<iostream> #include<cstdio> #include<string> #include& ...

  3. mongoose

    var mongoose = require('mongoose');mongoose.connect('mongodb://localhost/test'); var Cat = mongoose. ...

  4. Java对象的序列化和反序列化实践

    2013-12-20 14:58 对象序列化的目标是将对象保存在磁盘中,或者允许在网络中直接传输对象.对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存 ...

  5. AIX查看内存卡槽

    1.lscfg -vp|grep Processor 2.lscfg -vp|grep -p Memory

  6. AbstractMap学习记录

    package java.util;import java.util.Map.Entry; /** * This class provides a skeletal implementation of ...

  7. 应用程序池“Classic .NET AppPool”将被自动禁用

    原文:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28972779&id=3868008 服务器 Server 20 ...

  8. Linux Lab

    ssh vi /etc/apt/sources.list su ssh username@ipaddress eg : ssh root@172.16.247.143 实验一 fdisk /dev/s ...

  9. 网易云课堂 OCP

    数据库DBA任务: 管理数据库可用性 设计并创建数据库 管理物理结构 管理基于设计的存储 管理安全性 网络管理 备份与恢复 数据库调整与优化 关系型数据库(RDBMS) 多个表数据之间存在着关系 关系 ...

  10. vector用法总结(转载)

    一.vector的基本概念 vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库负责管理存储元素的相关内存.我们把vector称为容器,是因为它可以包 ...