zoukankan      html  css  js  c++  java
  • 【原】Java学习笔记023

      1 package cn.temptation;
      2 
      3 import java.util.Arrays;
      4 
      5 public class Sample01 {
      6     public static void main(String[] args) {
      7         // 因为字符串创建后就不能修改,导致在进行字符串拼接时,会产生大量的中间字符串,创建对象都是需要消耗资源
      8         // 所以,能不用字符串的直接拼接尽量不使用
      9         
     10         // 字符串缓冲区:StringBuffer类/StringBuilder类
     11         // 1、类 StringBuffer:线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。            (线程安全)
     12         // 2、类 StringBuilder:一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。    (线程不安全)
     13         
     14         // 感性认识:安全的东西常常意味着效率会较低;不安全的东西常常意味着效率会较高
     15         
     16         // String 和 StringBuffer的区别:
     17         // 1、String:值在创建之后不能更改,在字符串常量池中产生大量的对象,会消耗大量的资源,影响程序的效率
     18         // 2、StringBuffer:长度和内容均可以改变,可以节省资源,提高效率
     19         
     20         // StringBuffer:字符串缓冲区,有容量,自然理解为容器
     21         
     22         // StringBuffer类的构造函数:
     23         // 1、StringBuffer() :构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
     24         // 2、StringBuffer(int capacity) :构造一个不带字符,但具有指定初始容量的字符串缓冲区。
     25         // 3、StringBuffer(String str) :构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
     26         
     27         // StringBuffer类的常用成员方法:
     28         // 1、int capacity() :返回当前容量。
     29         // 2、int length() :返回长度(字符数)。 
     30         
     31         StringBuffer sb1 = new StringBuffer();
     32         System.out.println("sb1:" + sb1);            // 无内容
     33         System.out.println("sb1`s capacity:" + sb1.capacity());        // 16
     34         System.out.println("sb1`s length:" + sb1.length());            // 0
     35         System.out.println("------------------------------------------");
     36         
     37         StringBuffer sb2 = new StringBuffer(10);
     38         System.out.println("sb2:" + sb2);            // 无内容
     39         System.out.println("sb2`s capacity:" + sb2.capacity());        // 10
     40         System.out.println("sb2`s length:" + sb2.length());            // 0
     41         System.out.println("------------------------------------------");
     42         
     43         StringBuffer sb3 = new StringBuffer("java");
     44         System.out.println("sb3:" + sb3);            // java
     45         System.out.println("sb3`s capacity:" + sb3.capacity());        // 20
     46         System.out.println("sb3`s length:" + sb3.length());            // 4
     47     }
     48 }
     49 
     50 // 查看StringBuffer类的源码
     51 //@Override
     52 //public synchronized String toString() {
     53 //    if (toStringCache == null) {
     54 //        toStringCache = Arrays.copyOfRange(value, 0, count);
     55 //    }
     56 //    return new String(toStringCache, true);
     57 //}
     58 //
     59 //public StringBuffer() {
     60 //    super(16);
     61 //}
     62 //
     63 //public StringBuffer(int capacity) {
     64 //    super(capacity);
     65 //}
     66 //
     67 //public StringBuffer(String str) {
     68 //    super(str.length() + 16);
     69 //    append(str);
     70 //}
     71 //@Override
     72 //public synchronized int capacity() {
     73 //  return value.length;
     74 //}
     75 //
     76 //@Override
     77 //public synchronized int length() {
     78 //    return count;
     79 //}
     80 //@Override
     81 //public synchronized StringBuffer append(String str) {
     82 //    toStringCache = null;
     83 //    super.append(str);
     84 //    return this;
     85 //}
     86 // 查看StringBuffer类的父类AbstractStringBuilder的源码
     87 //char[] value;
     88 //
     89 //int count;
     90 //
     91 //AbstractStringBuilder(int capacity) {
     92 //    value = new char[capacity];
     93 //}
     94 
     95 //public int capacity() {
     96 //    return value.length;
     97 //}
     98 
     99 //@Override
    100 //public int length() {
    101 //    return count;
    102 //}
      1 package cn.temptation;
      2 
      3 public class Sample02 {
      4     public static void main(String[] args) {
      5         /*
      6          * StringBuffer类的常用成员方法:(具有增加功能)
      7          * 1、StringBuffer append(String str) :将指定的字符串追加到此字符序列。
      8          * 2、StringBuffer insert(int offset, String str) :将字符串插入此字符序列中。  
      9          */
     10         StringBuffer sb = new StringBuffer();
     11         
     12         System.out.println("sb:" + sb);        // 无内容
     13         System.out.println("sb.length():" + sb.length());        // 0
     14         
     15         // 将指定的字符串追加到此字符序列
     16         sb.append("java");
     17         
     18         System.out.println("sb:" + sb);        // java
     19         System.out.println("sb.length():" + sb.length());        // 4
     20         
     21         // 继续append
     22         sb.append("temptation");
     23         
     24         System.out.println("sb:" + sb);        // javatemptation
     25         System.out.println("sb.length():" + sb.length());        // 14
     26         
     27         // 链式编程
     28         sb.append("is").append("good");
     29         
     30         System.out.println("sb:" + sb);        // javatemptationisgood
     31         System.out.println("sb.length():" + sb.length());        // 20
     32         
     33         System.out.println("-----------------------------------------------");
     34         
     35         StringBuffer sbTemp = new StringBuffer();
     36         // 语法错误:The method append(Object) is ambiguous for the type StringBuffer
     37 //        sbTemp.append(null);
     38         
     39         String strTemp = null;
     40         sbTemp.append(strTemp);
     41         System.out.println("sbTemp:" + sbTemp);                                // null
     42         System.out.println("sbTemp.capacity():" + sbTemp.capacity());        // 16
     43         System.out.println("sbTemp.length():" + sbTemp.length());            // 4
     44         
     45         // 注意:直接把null值append给一个字符串缓冲区对象,会产生语法错误;
     46         //        null值赋值给字符串,字符串再append给一个字符串缓冲区对象,语法OK,会显示"null"字符串
     47         
     48         System.out.println("-----------------------------------------------");
     49         
     50         StringBuffer sb1 = new StringBuffer();
     51         System.out.println("sb1`s capacity:" + sb1.capacity());        // 16
     52         System.out.println("sb1`s length:" + sb1.length());            // 0
     53         
     54         // 放入长度为30的字符串
     55 //        sb1.append("123456789012345678901234567890");
     56 //        System.out.println("sb1`s capacity:" + sb1.capacity());        // 34
     57 //        System.out.println("sb1`s length:" + sb1.length());            // 30
     58         
     59         // 放入长度为40的字符串
     60         sb1.append("1234567890123456789012345678901234567890");
     61         System.out.println("sb1`s capacity:" + sb1.capacity());        // 40
     62         System.out.println("sb1`s length:" + sb1.length());            // 40
     63         
     64         System.out.println("-----------------------------------------------");
     65         
     66         StringBuffer sb2 = new StringBuffer();
     67         sb2.append("tom");
     68         System.out.println("sb2:" + sb2);            // sb2:tom
     69         System.out.println("sb2`s capacity:" + sb2.capacity());        // 16
     70         System.out.println("sb2`s length:" + sb2.length());            // 3
     71         
     72         sb2.insert(1, "jerry");
     73         
     74         System.out.println("sb2:" + sb2);            // sb2:tjerryom
     75         System.out.println("sb2`s capacity:" + sb2.capacity());        // 16
     76         System.out.println("sb2`s length:" + sb2.length());            // 8
     77         
     78         // 注意:理解append方法 和 insert方法,类似在食堂打菜,append方法是遵守秩序排队的,insert方法是插队的
     79     }
     80 }
     81 
     82 // 查看StringBuffer类的源码
     83 //@Override
     84 //public synchronized StringBuffer append(String str) {
     85 //    toStringCache = null;
     86 //    super.append(str);
     87 //    return this;
     88 //}
     89 //
     90 // 查看StringBuffer类的父类AbstractStringBuilder类的源码
     91 //public AbstractStringBuilder append(String str) {
     92 //    if (str == null)
     93 //        return appendNull();
     94 //    int len = str.length();                    // len:30                40
     95 //    ensureCapacityInternal(count + len);        // count:0                0
     96 //    str.getChars(0, len, value, count);
     97 //    count += len;
     98 //    return this;
     99 //}
    100 //
    101 //private void ensureCapacityInternal(int minimumCapacity) {
    102 //    // overflow-conscious code
    103 //    if (minimumCapacity - value.length > 0) {            // minimumCapacity:30    value.length:16            minimumCapacity:40    value.length:16
    104 //        value = Arrays.copyOf(value,
    105 //                newCapacity(minimumCapacity));
    106 //    }
    107 //}
    108 //
    109 // 创建StringBuffer对象的新容量方法
    110 //private int newCapacity(int minCapacity) {
    111 //    // overflow-conscious code                        // minCapacity:30                            minCapacity:40
    112 //    int newCapacity = (value.length << 1) + 2;        // value.length << 1 相当于 value.length * 2    , newCapacity:34
    113 //    if (newCapacity - minCapacity < 0) {                // 34 - 30                                    34 - 40
    114 //        newCapacity = minCapacity;                    // 30时不会走入选择结构                        newCapacity:40
    115 //    }
    116 //    return (newCapacity <= 0 || MAX_ARRAY_SIZE - newCapacity < 0)
    117 //        ? hugeCapacity(minCapacity)
    118 //        : newCapacity;                                // 返回newCapacity:34                        返回newCapacity:40
    119 //}
     1 package cn.temptation;
     2 
     3 public class Sample03 {
     4     public static void main(String[] args) {
     5         /*
     6          * StringBuffer类的常用成员方法:(具有删除功能)
     7          * 1、StringBuffer deleteCharAt(int index) :移除此序列指定位置的 char。
     8          * 2、StringBuffer delete(int start, int end) :移除此序列的子字符串中的字符。  
     9          */
    10         StringBuffer sb = new StringBuffer();
    11         sb.append("java");
    12         
    13         System.out.println("sb:" + sb);                            // sb:java
    14         System.out.println("sb.length():" + sb.length());        // 4
    15         
    16         sb.deleteCharAt(2);
    17         
    18         System.out.println("sb:" + sb);                            // sb:jaa
    19         System.out.println("sb.length():" + sb.length());        // 3
    20         
    21         System.out.println("----------------------------------------------------------");
    22         
    23         sb.append("dota").append("lol");
    24         
    25         System.out.println("sb:" + sb);                            // sb:jaadotalol
    26         System.out.println("sb.length():" + sb.length());        // 10
    27         
    28         sb.delete(1, 4);
    29         
    30         System.out.println("sb:" + sb);                            // sb:jotalol
    31         System.out.println("sb.length():" + sb.length());        // 7
    32         
    33         // 移除StringBuffer对象的全部字符
    34 //        sb.delete(0, sb.length());
    35 //        
    36 //        System.out.println("sb:" + sb);                            // sb:
    37 //        System.out.println("sb.length():" + sb.length());        // 0
    38         
    39         // 执行异常:String index out of range: -1
    40 //        sb.delete(-1, 2);
    41         
    42         // 执行异常:java.lang.StringIndexOutOfBoundsException
    43 //        sb.delete(8, 10);
    44         
    45         // 执行异常:java.lang.StringIndexOutOfBoundsException
    46 //        sb.delete(3, 2);
    47     }
    48 }
     1 package cn.temptation;
     2 
     3 public class Sample04 {
     4     public static void main(String[] args) {
     5         /*
     6          * StringBuffer类的常用成员方法:(具有替换功能)
     7          * 1、StringBuffer replace(int start, int end, String str) :使用给定 String 中的字符替换此序列的子字符串中的字符。 
     8          */
     9         StringBuffer sb = new StringBuffer();
    10         sb.append("javatemptation");
    11         System.out.println("sb:" + sb);            // sb:javatemptation
    12         
    13 //        sb.replace(3, 7, "xyza");
    14 //        System.out.println("sb:" + sb);            // sb:javxyzaptation
    15         
    16         System.out.println("---------------------------------------------");
    17         
    18         // 使用给定 String 中的字符替换此序列的子字符串中的字符。该子字符串从指定的 start 处开始,一直到索引 end - 1 处的字符,
    19         // 如果不存在这种字符,则一直到序列尾部。
    20         // 先将子字符串中的字符移除,然后将指定的 String 插入 start。(如果需要,序列将延长以适应指定的字符串。)
    21         
    22         // start~end的范围小于str替换字符串的长度,在原字符串中,按start~end的范围把字符移除,再把替换字符串插入禁区,原字符串长度发生改变
    23         sb.replace(3, 5, "xyza");
    24         System.out.println("sb:" + sb);            // sb:javxyzaemptation
    25         
    26         System.out.println("---------------------------------------------");
    27         
    28         // 使用给定 String 中的字符替换此序列的子字符串中的字符。该子字符串从指定的 start 处开始,一直到索引 end - 1 处的字符,
    29         // 如果不存在这种字符,则一直到序列尾部。
    30         // 先将子字符串中的字符移除,然后将指定的 String 插入 start。(如果需要,序列将延长以适应指定的字符串。)
    31         
    32         // start~end的范围大于str替换字符的长度,在原字符串中,按start~end的范围把字符移除,再把替换字符串插入禁区,原字符串长度发生改变
    33         
    34         sb.replace(3, 10, "xyza");
    35         System.out.println("sb:" + sb);            // sb:javxyzatation
    36     }
    37 }
     1 package cn.temptation;
     2 
     3 public class Sample05 {
     4     public static void main(String[] args) {
     5         /*
     6          * StringBuffer类的常用成员方法:(具有反转功能)
     7          * 1、StringBuffer reverse() :将此字符序列用其反转形式取代。 
     8          */
     9         String str = "abcd";
    10         System.out.println(str);
    11         
    12         char[] arrChar = str.toCharArray();
    13         String result = "";
    14         for (int i = arrChar.length - 1; i >= 0; i--) {
    15             result += arrChar[i];
    16         }
    17         System.out.println(result);
    18         
    19         System.out.println("-------------------------------------------");
    20         
    21         StringBuffer sb = new StringBuffer();
    22         sb.append("abcd");
    23         System.out.println(sb);
    24         
    25         sb.reverse();
    26         
    27         System.out.println(sb);
    28     }
    29 }
     1 package cn.temptation;
     2 
     3 public class Sample06 {
     4     public static void main(String[] args) {
     5         /*
     6          * StringBuffer类的成员方法:(具有截取功能)
     7          * 1、String substring(int start) :返回一个新的 String,它包含此字符序列当前所包含的字符子序列。 
     8          * 2、String substring(int start, int end) :返回一个新的 String,它包含此序列当前所包含的字符子序列。 
     9          */
    10         StringBuffer sb = new StringBuffer();
    11         
    12         sb.append("javatemptation");
    13         System.out.println("sb:" + sb);            // sb:javatemptation
    14         
    15         String str1 = sb.substring(3);
    16         System.out.println("sb:" + sb);            // sb:javatemptation
    17         System.out.println("str1:" + str1);        // str1:atemptation
    18         
    19         System.out.println("-----------------------------------------");
    20         
    21         // 没有截取
    22 //        String str2 = sb.substring(4, 4);
    23         
    24         // 包左不包右
    25         String str2 = sb.substring(4, 8);        // temp
    26         
    27         // 执行异常:String index out of range: -1
    28 //        String str2 = sb.substring(4, 3);
    29         
    30         // 执行异常:String index out of range: -4
    31 //        String str2 = sb.substring(-4, 3);
    32         
    33         // 执行异常:java.lang.StringIndexOutOfBoundsException: String index out of range: -7
    34 //        String str2 = sb.substring(4, -3);
    35         
    36         // 执行异常:java.lang.StringIndexOutOfBoundsException: String index out of range: -12
    37 //        String str2 = sb.substring(15, 3);
    38         
    39         // 执行异常:java.lang.StringIndexOutOfBoundsException: String index out of range: 15
    40 //        String str2 = sb.substring(5, 15);
    41         
    42         System.out.println("sb:" + sb);            // sb:javatemptation
    43         System.out.println("str2:" + str2);        
    44     }
    45 }
     1 package cn.temptation;
     2 
     3 public class Sample07 {
     4     public static void main(String[] args) {
     5         // String对象  和  StringBuffer对象的互相转换
     6         
     7         // String对象  -----> StringBuffer对象
     8         
     9         // 方法1:使用StringBuffer类的构造函数
    10         StringBuffer sb1 = new StringBuffer("abcd");
    11         // 方法2:使用StringBuffer类的构造函数和append()方法
    12         StringBuffer sb2 = new StringBuffer();
    13         sb2.append("abcd");
    14         
    15         System.out.println(sb1 == sb2);            // false    比较的是这两个StringBuffer对象引用的地址
    16         System.out.println(sb1.equals(sb2));    // false    追踪StringBuffer类的equals方法源码,发现其没有重写继承自Object类的equals方法
    17         
    18         System.out.println("--------------------------------------------");
    19         
    20         // StringBuffer对象  -----> String对象
    21         
    22         // 方法1:使用String类的构造函数
    23         String str1 = new String(sb1);
    24         // 方法2:使用StringBuffer类的toString()方法
    25         String str2 = sb1.toString();
    26         
    27         System.out.println(str1 == str2);        // false    比较的是这两个地址
    28         System.out.println(str1.equals(str2));    // true        String类重写了继承自Object类的equals方法
    29     }
    30 }
     1 package cn.temptation;
     2 
     3 import java.util.Scanner;
     4 
     5 public class Sample08 {
     6     public static void main(String[] args) {
     7         // 需求:分别使用String和StringBuffer实现如下功能
     8         //        判断字符串是否为回文字符串(对称字符串)
     9         //        例如:回文字符串:"lol"、"BKB"、"ABBA"
    10         String str = "";
    11         
    12         System.out.println("输入一个字符串:");
    13         Scanner input = new Scanner(System.in);
    14         if (input.hasNextLine()) {
    15             str = input.nextLine();
    16         } else {
    17             System.out.println("输入不正确!");
    18         }
    19         input.close();
    20         
    21         // 思路1:(使用String)
    22         // 循环比较第1个字符和最后1个字符是否相同,再比较第2个字符和倒数第2个字符是否相同...
    23         
    24         char[] arrChar = str.toCharArray();
    25         boolean flag = true;
    26         
    27         // 写法1-1
    28 //        for (int i = 0, j = arrChar.length - 1; i <= j ; i++, j--) {
    29 //            // 判断相同
    30 //            if (arrChar[i] != arrChar[j]) {
    31 //                flag = false;
    32 //                break;
    33 //            }
    34 //        }
    35         
    36         // 写法1-2
    37         for (int i = 0; i < arrChar.length / 2; i++) {
    38             // 判断相同
    39             if (arrChar[i] != arrChar[arrChar.length - i - 1]) {
    40                 flag = false;
    41                 break;
    42             }
    43         }
    44         
    45         System.out.println(flag ? "字符串" + str + "是回文字符串" : "字符串" + str + "不是回文字符串");
    46         
    47         // 思路2:(使用StringBuffer)
    48         // 将字符串进行反转,把得到的字符串和原字符串进行比较,如果相同就是回文字符串
    49         
    50         // 写法2-1
    51 //        StringBuffer sb = new StringBuffer(str);
    52 //        
    53 //        String result = sb.reverse().toString();
    54 //        System.out.println(result.equals(str) ? "字符串" + str + "是回文字符串" : "字符串" + str + "不是回文字符串");
    55         
    56         // 写法2-2(链式编程)
    57         System.out.println((new StringBuffer(str)).reverse().toString().equals(str) 
    58                 ? "字符串" + str + "是回文字符串" 
    59                 : "字符串" + str + "不是回文字符串");
    60         
    61         // 注意:StringBuffer对象使用reverse()方法反转后,其自身内容发生了反转
    62     }
    63 }
     1 package cn.temptation;
     2 
     3 import java.util.Scanner;
     4 
     5 public class Sample09 {
     6     public static void main(String[] args) {
     7         // 需求:制作一个方法对QQ号码进行验证(验证规则:QQ长度从5位~11位,只能是数字,且首位不能是0)
     8         
     9         // 思路:
    10         // 1、接收键盘录入的字符串
    11         // 2、字符串的规则的校验
    12         
    13         String str = "";
    14         
    15         System.out.println("输入一个QQ号码:");
    16         Scanner input = new Scanner(System.in);
    17         if (input.hasNextLine()) {
    18             str = input.nextLine();
    19         } else {
    20             System.out.println("输入不正确!");
    21         }
    22         input.close();
    23         
    24         String result = validateQQ(str) ? "是QQ号码" : "不是QQ号码";
    25         System.out.println(result);
    26         
    27     }
    28     
    29     /**
    30      * 验证QQ号码
    31      * @param qq
    32      * @return        验证结果
    33      */
    34     public static boolean validateQQ(String qq) {
    35         boolean flag = true;
    36         
    37         if (qq.length() >= 5 && qq.length() <= 11) {
    38             if (qq.charAt(0) == '0') {
    39                 // 首位字符为'0'
    40                 flag = false;
    41             } else {
    42                 // 各个位置上都是数字的判断
    43                 for (int i = 0; i < qq.length(); i++) {
    44                     if (!(qq.charAt(i) >= '0' && qq.charAt(i) <= '9')) {
    45                         flag = false;
    46                         break;
    47                     }
    48                 }
    49             }
    50         } else {
    51             // 长度不在5位~11位这个范围
    52             flag = false;
    53         }
    54         
    55         return flag;
    56     }
    57 }
     1 package cn.temptation;
     2 
     3 import java.util.Scanner;
     4 
     5 public class Sample10 {
     6     public static void main(String[] args) {
     7         // 因为字符串的相关操作在工作中特别普遍,所以出现一种高效但是抽象的字符串操作技巧(方法)----- 正则表达式
     8         
     9         // 需求:制作一个方法对QQ号码进行验证(验证规则:QQ长度从5位~11位,只能是数字,且首位不能是0)
    10         
    11         String str = "";
    12         
    13         System.out.println("输入一个QQ号码:");
    14         Scanner input = new Scanner(System.in);
    15         if (input.hasNextLine()) {
    16             str = input.nextLine();
    17         } else {
    18             System.out.println("输入不正确!");
    19         }
    20         input.close();
    21         
    22         // 使用正则表达式
    23         String regex = "[1-9][0-9]{4,10}";
    24         boolean flag = str.matches(regex);
    25         
    26         String result = flag ? "是QQ号码" : "不是QQ号码";
    27         System.out.println(result);
    28     }
    29 }
     1 package cn.temptation;
     2 
     3 public class Sample11 {
     4     public static void main(String[] args) {
     5         String str1 = "door";
     6         String regex1 = "do*r";        // * 匹配前面的子表达式零次或多次
     7         System.out.println(str1 + ":" + str1.matches(regex1));            // true
     8         
     9 //        String str1Ex = "oper";        // 匹配为false
    10 //        String str1Ex = "dr";        // 匹配为true
    11         String str1Ex = "dooooor";    // 匹配为true
    12         System.out.println(str1Ex + ":" + str1Ex.matches(regex1));
    13         
    14         System.out.println("------------------------------------------------");
    15         
    16         String str2 = "door";
    17         String regex2 = "do+r";        // + 匹配前面的子表达式一次或多次
    18         System.out.println(str2 + ":" + str2.matches(regex2));            // true
    19         
    20 //        String str2Ex = "dr";        // 匹配为false
    21         String str2Ex = "dooooor";    // 匹配为true
    22         System.out.println(str2Ex + ":" + str2Ex.matches(regex2));
    23         System.out.println("------------------------------------------------");
    24         
    25         String str3 = "door";
    26         String regex3 = "do?r";        // ? 匹配前面的子表达式零次或一次
    27         System.out.println(str3 + ":" + str3.matches(regex3));            // false
    28         
    29 //        String str3Ex = "dr";        // 匹配为true
    30         String str3Ex = "dor";        // 匹配为true
    31         System.out.println(str3Ex + ":" + str3Ex.matches(regex3));
    32         System.out.println("------------------------------------------------");
    33         
    34         String str4 = "banana";
    35         String regex4 = "b[an]*a";    // [] 框起来的部分作为一个整体
    36         System.out.println(str4 + ":" + str4.matches(regex4));            // true
    37         System.out.println("------------------------------------------------");
    38         
    39         String str5 = "door";
    40         String regex5 = "do{2}r";    // {n}  n 是一个非负整数,匹配确定的n次
    41         System.out.println(str5 + ":" + str5.matches(regex5));            // true
    42         System.out.println("------------------------------------------------");
    43         
    44         String str6 = "doooooooor";
    45         String regex6 = "do{2,}r";    // {n,}    n 是一个非负整数,至少匹配n次
    46         System.out.println(str6 + ":" + str6.matches(regex6));            // true
    47         System.out.println("------------------------------------------------");
    48         
    49         String str7 = "doooooooor";
    50         String regex7 = "do{2,9}r";    // {n,m}    n 和 m 均是一个非负整数,且n <= m,最少匹配n次且最多匹配m次
    51         System.out.println(str7 + ":" + str7.matches(regex7));            // true
    52     }
    53 }
  • 相关阅读:
    FCC---Learn How Bezier Curves Work---定义坐标轴点的值,影响斜率,改变速度。具体调试换值既可以体会
    FCC---Change Animation Timing with Keywords--两个小球从A都B,相同循环时间 duration, 不同的速度 speed
    FCC---Animate Multiple Elements at Variable Rates---还可以改循环时间,达到不同律动频率的效果
    FCC---Animate Elements at Variable Rates----一闪一闪亮晶晶,不同的闪动节奏
    FCC---Make a CSS Heartbeat using an Infinite Animation Count----超级好看的心跳,粉色的
    FCC---Animate Elements Continually Using an Infinite Animation Count---设置animation-iteration-count的次数为无限,让小球一直跳动
    FCC---Create Visual Direction by Fading an Element from Left to Right---一个带好看背景色的圆形图案,从左到右移动,透明度opacity渐变为0.1,背景色渐渐消失的效果
    FCC---Create Movement Using CSS Animation---设计一个盒子上下左右移动,结合animation, @keyframe, position (上下左右的offset)
    FCC---Use CSS Animation to Change the Hover State of a Button---鼠标移过,背景色变色,用0.5s的动画制作
    Python入门必学知识,30万年薪Python工程师带你学
  • 原文地址:https://www.cnblogs.com/iflytek/p/6562050.html
Copyright © 2011-2022 走看看