zoukankan      html  css  js  c++  java
  • 黑马程序员

    正则表达式:

    专门用于操作字符串
    特点:用于一些特定的符号来表示一些代码操作,这样就简化了书写
    好处:可以简化书写
    弊端:阅读性差

    具体功能:
    1.匹配:matches方法
    定义字符个数和规则 reg = [字符范围][字符范围](前一个[]的个数范围)
    例 String reg = [ab][a-z][0-9]{1-3} d 数字
    表示3~5长度的字符串第一个字符(a或b)第二个(a~z)第三~五个字符(0~9)
    boolean b=str.matches(reg) 判断str字符串是否满足规则reg
    2.切割:split 方法
    定义字符个数和规则 reg = ","(表示按照,切割) ; reg = " +"(按照多个空格切割)
    注意:多个时在后面加+; .表示任意字符,不能将其定义为切割标识。 需要用时需对其进行转译 reg="\."; 为转译 .为.在正则中的写法
    \的转译写法为 \\;叠词切割 双叠词reg = "(.)\1" (.)表示任意单字符的组
    每个组产生都有编号 1表示第一个组 1表示与前一个字符相同,定义为字符串时加转译符
    3.替换:replaceAll(String reg , String replacrstr)
    4.取出
    定义规则,封装规则为Pattern对象,关联字符获取匹配器,用匹配器查找,用匹配器获取找到的对象

    边界匹配器
    ^ 行的开头
    $ 行的结尾
     单词边界
    B 非单词边界
    A 输入的开头
    G 上一个匹配的结尾
     输入的结尾,仅用于最后的结束符(如果有的话)
    z 输入的结尾

    Greedy 数量词
    X? X,一次或一次也没有
    X* X,零次或多次
    X+ X,一次或多次
    X{n} X,恰好 n 次
    X{n,} X,至少 n 次
    X{n,m} X,至少 n 次,但是不超过 m 次

    import java.util.regex.*;
    class  RegexDemo
    {
        public static void main(String[] args) 
        {    
            System.out.println("确认qq号:");
            checkQQ1();         
            System.out.println("演示正则取出:");
            getDemo();
            System.out.println("演示正则替换:");
            replaceDemo();
            System.out.println("演示正则切割:");
            splitDemo();
        }
        /* 需求,对QQ号码进行校验
        要求:5~15位,0不能开头,只能是数字。
        */
        //取出
        public static void getDemo()
        {
            String str = "ming tian jiu yao fang jia le ,da jia";
            String reg = "\b[a-z]{3}\b";  //  单词边界 定义取出规则为3个字母的字符串,其前后为单词边界
            //将规则封装成对象
            Pattern p = Pattern.compile(reg);
            //让正则对象和要作用的字符关联,获取匹配器
            Matcher m = p.matcher(str);
            //System.out.println(m.matcher())
            while (m.find())  //boolean b = m.find();
            {
                System.out.println(m.group());
            }
        }
        //替换
        public static void replaceDemo()
        {
            String str =  "aabbccdd00112233";
            String reg = "(.)\1+";//定义替换规则为将叠词变为单词
            String str1 = str.replaceAll(reg,"$1");//将XXXX-->X,$1表示获取第一组
            System.out.println(str1);
        }
        
        //切割正则写法
        public static void splitDemo()
        {
            String str = "111,222,333";
            String reg = ",";//定义切割规则 
            String []arr = str.split(reg);//调用切割函数
            for (String s : arr )
            {
                System.out.println(s);
            }
        }
        //常规写法
        public static void checkQQ1()           //确定输入字符串是否满足QQ号规则
        {
            String qq = "1251111111111111aa6";    //定义一个字符串
            int len = qq.length();                //确定其长度
            if (!qq.startsWith("0"))            //判断其是否是有0开头
            {
                char[] arr = qq.toCharArray();    //将字符串变为字符数组
                if (!(arr.length>=5&&arr.length<=15))//判断其长度是否是5~15
                {
                    System.out.println("QQ长度错误");
                    return;
                }
                for (int x = 0;x<arr.length ;x++ )//遍历确定其是否每一位都是数字
                {
                    if(!(arr[x]>='0'&&arr[x]<='9'))
                    {
                        System.out.println("QQ只能是数字");                        
                        return;
                    }    
                }
                System.out.println("QQ:"+qq);    
            }
            else
                System.out.println("不可以0开头");
        }
    }

    运行结果:

    System类:

    类中的方法和属性都是静态的。
    out:标准输出
    in:标准输入
    描述一些系统信息
    常用方法:
    获取系统属性信息:Properties getProperties();

    import java.util.*;
    import java.text.*;
    class  SystemDemo
    {
        public static void main(String[] args) 
        {
            Properties prop = System.getProperties();
            //因为Properties是Hashtable的子类,也是Map集合中的一个子类对象。
            //那么可通过map的方法取出该集合的元素。
            //该集合中存储的都是字符串,,欸有泛型定义
            //如何在系统中自定义一些特有信息?
            System.setProperty("mykey","myvalue");
            //获取指定属性信息。
            String value1 = System.getProperty("os.name");
            System.out.println("value1="+value1);
            /*
            jm启动时,动态加载一些属性信息?
            java 启动代码:
            java -D自定义键=自定义属性信息 类名
            例:java -Dmyset=myvalue2 SystemDemo
            */
            String myset =System.getProperty("myset");
            System.out.println("myset="+myset);
            for (Object obj: prop.keySet())
            {
                String value2 = (String)prop.get(obj);
                System.out.println(obj+":"+value2);
            }
        }
    }

    Runtime类:
    该类并没有提供构造函数,说明不能new对象,该类中的方法均为静态的。
    常用方法:
    exec("执行程序路径") 执行程序

    class  RuntimeDemo
    {
        public static void main(String[] args) throws Exception
        {
            Runtime r = Runtime.getRuntime();
            Process p = r.exec("C:\Program Files (x86)\Battle.net\Battle.net Launcher.exe");
            //p.destroy();  //杀掉该进程
        }
    }

    Date类:
    导入的是java.text包。

    Calendar
    用于提取日期中的具体信息。

    class DateDemo
    {    
        public static void main(String[] args) 
        {
            Date d =new Date();
            System.out.println(d);
            //设置日期格式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
            String time = sdf.format(d);//利用SimpleDateFormat格式化日期格式。
            System.out.println("time = "+time);
    
            Calendar c = Calendar.getInstance();
            System.out.println(c.get(Calendar.YEAR)+"年"+c.get(Calendar.MOUTH)+"月");
        }
    }

    Math类

        public static int abs(int a):取a的绝对值;
        public static double ceil(double a):向上取整;
        public static double floor(double a):向下取整;
        public static int max(int a,int b) :取a和b的最大值
        public static double pow(double a,double b):返回第一个参数的第二个参数次幂的值。
        public static double random():获取一个double类型的随机数。该值>=0 并且 < 1.0
        public static int round(float a):四舍五入取整(参数为double的自学)
        public static double sqrt(double a):返回正确舍入的 double 值的正平方根

    class MathDemo
    {
        public static void main(String[] args)
        {
            double d1 = Math.floor(16.34);//floor方法 返回小于指定数据的最大整数。
            double d2 = Math.ceil(16.34);//ceil方法 返回大于指定数据的最小整数。
            double d3 = Math.round(12.54);//round方法 四舍五入
            double d4 = Math.pow(2,3);//pow方法 前面数据的后面数据的幂次方
            int d5 = (int) (Math.random()*10+1);//random方法 生成一个大于等于0.0而且小于1.0的伪随机double值。
            //Random r = new Random ();         //生成随机数的第二种方法。
            // int d5 = r.nextInt(10)+1;     
            System.out.println("d1="+d1+";d2="+d2+";d3="+d3+";d4="+d4+";d5="+d5);
        }
    }

    运行结果:

  • 相关阅读:
    [PHP] laravel框架注意bootstrap/cache
    [git] git拉取远程分支代码
    Prometheus监控系统(4)pushgateway及自定义脚本
    k8s 学习
    pxc /Galera Cluster详解
    Percona Monitoring and Management
    etcd获取所有key
    kubernetes Pod驱逐迁移drain用法
    kubernetes etcd数据管理
    办公环境下k8s网络互通方案
  • 原文地址:https://www.cnblogs.com/myblog-cl/p/4748910.html
Copyright © 2011-2022 走看看