黑马程序员_java基础之正则表达式及API(StringBuffer和其它常用类)

来源:互联网 发布:不油腻的乳液知乎 编辑:程序博客网 时间:2024/06/06 10:39

------- android培训、java培训、期待与您交流! ----------

1.StringBuffer类:

 1.1 StringBuffer类与 String类的区别

          String:它相当于是一个常量,内容不能改变

                      注意: 字符串的内容不能改变,但是,对应地址可以改变

                      长度与内容都是固定的

StringBuffer:相当于是一个容器,里面存储的内容可以发生改变

                      线程安全的类 -- 效率低 -- 安全

                      长度与内容都可以发生改变

StringBuffer类的构造方法:

           publicStringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符

           publicStringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。

           publicStringBuffer(String str)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。该字符串的初始容量为 16 加上字符串参数的长度。

1.2方法

           publicint capacity() 返回当前容量       最大容量

           publicint length()返回长度(字符数)    当前容量的使用情况

添加方法

           publicStringBuffer append(String str)将指定的字符串追加到此字符序列。

public class Demo4 {public static void main(String[] args) {StringBuffer sb = new StringBuffer();sb.append(1234567);String result = sb.substring(1, 3);//sb.substring(2);System.out.println(result);}}

     publicStringBuffer insert(int offset, String str)将字符串插入此字符序列中。                 在字符串缓冲区的指定位置上,插入给定的数据, 返回的当前对象

 StringBuffer类的删除功能:

           publicStringBuffer deleteCharAt(int index) 移除此序列指定位置的 char。此序列将缩短一个 char。

           从当前的字符串缓冲区对象的指定位置上,将该字符删除   public StringBuffer delete(int start, intend)移除此序列的子字符串中的字符

           从当前的字符串缓冲区对象的指定位置开始,到指定位置结束,删除之间的内容

           包含左边位置, 不包含右边位置

public class Demo2 {public static void main(String[] args) {StringBuffer sb = new StringBuffer();sb.append("helloworld");sb.deleteCharAt(1);System.out.println(sb);sb.delete(2, 3);System.out.println(sb);}}

 反转功能:public StringBuffer reverse()

public class Demo3 {public static void main(String[] args) {StringBuffer sb = new StringBuffer();sb.append("HelloWorld");System.out.println(sb);sb.reverse();System.out.println(sb);sb.replace(3, 5, "JAVA");System.out.println(sb);}}

public StringBuffer replace(int start, intend, String str)

           从当前字符串缓冲区对象中,从指定位置开始到指定位置结束之间的内容  用给定的数据替换

1.3String,StringBuffer,StringBuilder的区别?

      String:              字符串类

                            内容与长度固定

      StringBuffer:     字符串缓冲区

                            线程同步--效率低 -- 安全

                            内容与长度可以变化

     StringBuilder:     字符串缓冲区

                            线程不同步--效率高 -- 不安全

                            内容与长度可以变化      

StringBuffer和数组的区别

      StringBuffer:    不固定

数组:             长度固定

public class Demo {public static void main(String[] args) {String s = "HelloWorld";StringBuffer sb = new StringBuffer(s);System.out.println(sb);StringBuffer sb1 = new StringBuffer();sb1.append("Hello");//System.out.println(sb1);//String s1 = sb1.toString();//System.out.println(s1);StringBuffer sb2 = new StringBuffer("JAVA");//String str = new String(sb2);//System.out.println(str);String result = String.valueOf(sb2);System.out.println(result);}}

2.Integer类的构造方法

public Integer(int value)构造一个新分配的 Integer 对象,它表示指定的 int 值。

public Integer(String s) 构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。 

能在 int 类型和 String 类型之间互相转换

String --> int:     public static int parseInt(String s)

int --> String:     public static String valueOf(int i)返回 int 参数的字符串表示形式。

 String --> Xxx类型:      publicstatic int parseXxx(Xxx s)

Xxx --> String:              public static String valueOf(Xxx i)

public class IntegerDemo4 {public static void main(String[] args) {//String --> int//1: String --> Integer --> intInteger in = new Integer("123");int num = in.intValue();System.out.println(num);//public static int parseInt(String s)int num2 = Integer.parseInt("12345");System.out.println(num2);//int --> String//1: public static String valueOf(int i)String s1 = String.valueOf(100);System.out.println(s1);//2:public static String toString(int i)String s2 = Integer.toString(1000);System.out.println(s2);}}

3.Character 字符包装类

           publicstatic boolean isDigit(char ch)确定指定字符是否为数字

           publicstatic boolean isLowerCase(char ch)确定指定字符是否为小写字母。

           publicstatic boolean isUpperCase(char ch)确定指定字符是否为大写字母。

           publicstatic char toLowerCase(char ch)使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为小写

           publicstatic char toUpperCase(char ch)使用取自 UnicodeData 文件的大小写映射信息将字符参数转换为大写。

 键盘输入字符串,判断该字符串中,有多少个大写小写字母,数字的个数

public class CharacterDemo {public static void main(String[] args) {//1: 键盘输入字符串Scanner sc = new Scanner(System.in);String str = sc.nextLine();//2: 定义每种类型的初始值int bigCount = 0;int smallCount =0;int numberCount = 0;//3: 获取字符串中每一个字符for (int i=0; i<str.length(); i++) {char ch = str.charAt(i);//Character ch = str.charAt(i);//4: 判断当前的字符 是否那种?if (Character.isDigit(ch)) {//数字numberCount++;} else if (Character.isLowerCase(ch)) {//小写字母smallCount++;} else if (Character.isUpperCase(ch)) {//大写字母bigCount++;}}//5: 打印出每种类型的个数System.out.println("大写:" + bigCount);System.out.println("小写:" + smallCount);System.out.println("数字:" + numberCount);}}

4.Math类: 数学工具类

方法:

   public static double abs(double a)返回 double 值的绝对值

   public static double ceil(double a) 返回比参数大的最小double整数

   public static double floor(double a) 返回比参数小的最大double整数

   publicstatic double max(double a, double b)返回两个 double 值中较大的一个

   public static double min(double a, double b)返回两个 double 值中较小的一个

   public static double pow(double a, double b)             返回 2的3 次幂的值

   publicstatic double random()      返回0.0 到1.0之间的随机数, 包含0.0, 不包1.0

   public static long round(double a) 四舍五入

public class MathDemo {public static void main(String[] args) {System.out.println("E:" + Math.E);System.out.println("PI:"+ Math.PI);//public static double abs(double a)返回 double 值的绝对值double d1 = 3.1415;double d2 = -3.199999;System.out.println("abs:" + Math.abs(d1));System.out.println("abs:" + Math.abs(d2));//public static double ceil(double a)System.out.println("ceil:" + Math.ceil(d1));//4.0System.out.println("ceil:" + Math.ceil(d2));//-3.0//public static double floor(double a)System.out.println("floor:" + Math.floor(d1));//3.0System.out.println("floor:" + Math.floor(d2));//-4.0//public static double max(double a, double b)System.out.println("max:" + Math.max(d1, d2));//3.1415//public static double pow(double a, double b)System.out.println("pow:" + Math.pow(2.0, 3));//8.0//public static double random()System.out.println("random:" + Math.random());//public static long round(double a) 四舍五入System.out.println("round:" + Math.round(3.6));//4System.out.println("round:" + Math.round(3.3));//3}}

5.Random: 随机数类

    5.1  构造方法:

      publicRandom()创建一个新的随机数生成器对象,默认的种子帮助我们生成随机数,这种种子48位long数据,系统的时间(毫秒值)

      publicRandom(long seed) 创建一个新的随机数生成器对象, 可以指定一个种子

           注意: 如果种子相同,每次得到的随机数也是一样的

  方法:

   publicint nextInt() 获取Int范围内的随机数

     publicint nextInt(int n) 获取 0到n之间的随机数, 注意包含0,不包含n

6.System: 系统类

 System类包含一些有用的类字段和方法。它不能被实例化

 6.1字段:

           publicstatic final InputStream in  “标准”输入流, 键盘输入

           Scannersc = new Scanner(System.in);

           publicstatic final PrintStream out “标准”输出流, 显示器的控制台

                System.out.println("Java");

           public static final PrintStream err  “标准”错误输出流

                System.err.println("Java");

6.2方法:

      publicstatic void gc()运行垃圾回收器。

           调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存

      protectedvoid finalize()

                 throws Throwable当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法

      publicstatic void exit(int status)终止当前正在运行的 Java 虚拟机。

      publicstatic long currentTimeMillis() 返回以毫秒为单位的当前时间

7.BigInteger:

当数据的范围超过了Integer表示的范围的时候,可以使用该类

           publicBigInteger add(BigInteger val)  加法

           publicBigInteger subtract(BigInteger val) 减法

           publicBigInteger multiply(BigInteger val) 乘法

          publicBigInteger divide(BigInteger val) 除法

           publicBigInteger[] divideAndRemainder(BigInteger val) 除法操作,返回的结果是商和余数   

BigDecimal: 解决float和double数据的精度问题

           publicBigDecimal add(BigDecimal augend) 加法

           publicBigDecimal subtract(BigDecimal subtrahend) 减法

           publicBigDecimal multiply(BigDecimal multiplicand) 乘法

           publicBigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode) 除法

                 参数:

                      divisor- 此 BigDecimal 要除以的值。

                      scale- 要返回的 BigDecimal 商的标度。 保留小数点几位

                      roundingMode- 要应用的舍入模式。

8.Date: 日期类

           类 Date 表示特定的瞬间,精确到毫秒。

8.1构造方法:

           publicDate()

                 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

           publicDate(long date)

                 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

8.2方法:

           publiclong getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。  

           将制定的时间毫秒值 赋值给 Date对象

                 long ----> Date  构造方法:  Date(long time)

          publicvoid setTime(long time)设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。

9.DateFormat:

日期格式化类, 作用用来将日期进行指定格式的转换显示,抽象类

10.SimpleDateFormat:

简单的日期格式化类

构造方法:

           publicSimpleDateFormat()用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat

           publicSimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat

方法:  public final String format(Date date)将一个 Date 格式化为日期/时间字符串

            public Date parse(String source)从给定字符串的开始解析文本,以生成一个日期

日期对象 与  String的转换

           Date--> String       

           publicfinal String format(Date date)将一个 Date 格式化为日期/时间字符串

           String--> Date

                 publicDate parse(String source)  从给定字符串的开始解析文本,以生成一个日期   

11.Calendar 日历类, 用来替换Date类

方法:

      publicstatic Calendar getInstance()使用默认时区和语言环境获得一个日历

     publicint get(int field)返回给定日历字段的值

      publicabstract void add(int field, int amount)

            根据日历的规则,为给定的日历字段添加或减去指定的时间量。

                 参数:  field- 日历字段。

                            amount - 为字段添加的日期或时间量。                    

      publicvoid set(int field, int value)

                 将给定的日历字段设置为给定值。

                 参数:  field- 给定的日历字段。

                            value - 给定日历字段所要设置的值。

12.正则表达式

            符合正确规则的表达式:  通常 正则表达式 用来校验数据的正确性的

字符

规则           匹配                      例子

x         字符 x             a,代表就是字符a , b,代表就是字符b

\\        反斜线字符             d:\\123,  \\代表一个 \ 斜线

\t         制表符                   Tab键 

\n        新行(换行)符    

\r         回车符

字符类

[abc]    a、b 或 c(简单类)     代表当前这个位置出现的数据是a,b,c中的某一个

[^abc]  除了 a、b 或 c,任何字符  代表当前这个位置除了a,b,c以外,都可以

[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)

[0-9]  0 到 9, 两头的数字包括在内(范围)

[a-zA-Z_0-9]                 代表当前位置 出现的数据可以使数字或字母或下划线

预定义字符类

.          任何字符

\d        数字:[0-9]

\w       单词字符:[a-zA-Z_0-9]

边界匹配器

^         行的开头                                  ^规则$

$         行的结尾

\b        单词边界                除了单词字符以外的数据就是单词边界,如 , . ! % 空格

Greedy 数量词

X?        X,一次或一次也没有    X代表的是某一个表达式对应的匹配数据出现1次或者1次也没有

X*       X,零次或多次  X代表的是某一个表达式对应的匹配数据出现0次或者多次

X+            X,一次或多次  X代表的是某一个表达式对应的匹配数据出现一次或多次

X{n}     X,恰好 n 次     X代表的是某一个表达式对应的匹配数据出现恰好 n 次

X{n,}    X,至少 n 次     X代表的是某一个表达式对应的匹配数据出现至少 n 次

X{n,m}       X,至少 n 次,但是不超过 m 次           X代表的是某一个表达式对应的匹配数据出现至少 n 次,但是不超过 m 次   

正则表达式中的组: 就是使用小括号把正则表达式括起来

在表达式的里面,通过组号,来获取当前组中所代表的数据  用法\\组号

     例如: \\1

在表达式的外面,想获取组中的数据, 可以使用$组号

      例如    $1

获取功能:    Pattern和Matcher类的使用(模式类和匹配器类)   

      Pattern: 把字符串正则表达式   编译成   正则表达式对象

                      String--> 对象

           方法:

           publicstatic Pattern compile(String regex) 将给定的正则表达式编译到模式中。

           publicMatcher matcher(CharSequence input)创建匹配给定输入与此模式的匹配器。           

      Matcher: 代表的是 正则表达式匹配后的 结果对象

           可以使用它执行三种不同的匹配操作:

           matches方法尝试将整个输入序列与该模式匹配。

           lookingAt尝试将输入序列从头开始与该模式匹配。

           find方法扫描输入序列以查找与该模式匹配的下一个子序列。

           publicboolean find() 尝试查找与该模式匹配的输入序列的下一个子序列。

           publicString group()返回由以前匹配操作所匹配的输入子序列。




 


0 0
原创粉丝点击