精华笔记:

  1. 正则表达式:

    • 用于描述字符串的内容格式,使用它通常用于匹配一个字符串是否符合格式要求

    • 正则表达式的语法:-------------了解、不用纠结、不用深入研究

      1.[]:表示一个字符,该字符可以是[]中指定的内容
      例如:
      [abc]:这个字符可以是a或b或c
      [a-z]:表示任意一个小写字母
      [a-zA-Z]:表示任意一个字母
      [a-zA-Z0-9]:表示任意一个字母数字
      [a-zA-Z0-9_]:表示任意一个数字字母下划线
      [^abc]:该字符只要不是a或b或c
      2.预定义字符:
      .:表示任意一个字符,没有范围限制
      \d:表示任意一个数字,等同于[0-9]
      \w:表示任意一个单词字符,等同于[a-zA-Z0-9_]----单词字符指字母/数字/_
      \s:表示任意一个空白字符
      \D:表示不是数字
      \W:不是单词字符
      \S:不是空白字符
      3.量词:
      ?:表示前面的内容出现0-1次
      例如: [abc]? 可以匹配:a 或 b 或 c 或什么也不写
      +:表示前面的内容最少出现1次
      例如: [abc]+ 可以匹配:b或aaaaaaaaaa...或abcabcbabcbabcba....
      但是不能匹配:什么都不写 或 abcfdfsbbaqbb34bbwer...
      *:表示前面的内容出现任意次(0-多次)---匹配内容与+一致,只是可以一次都不写
      例如: [abc]* 可以匹配:b或aaaaaaaaaa...或abcabcba....或什么都不写
      但是不能匹配:abcfdfsbbaqbb34bbwer...
      {n}:表示前面的内容出现n次
      例如: [abc]{3} 可以匹配:aaa 或 bbb 或 aab 或abc 或bbc
      但是不能匹配: aaaa 或 aad
      {n,m}:表示前面的内容出现最少n次最多m次
      例如: [abc]{3,5} 可以匹配:aaa 或 abcab 或者 abcc
      但是不能匹配:aaaaaa 或 aabbd
      {n,}:表示前面的内容出现n次以上(含n次)
      例如: [abc]{3,} 可以匹配:aaa 或 aaaaa.... 或 abcbabbcbabcba....
      但是不能匹配:aa 或 abbdaw...
      4.()用于分组,是将括号内的内容看做是一个整体
      例如: (abc){3} 表示abc整体出现3次. 可以匹配abcabcabc
      但是不能匹配aaa 或abcabc
      (abc|def){3}表示abc或def整体出现3次.
      可以匹配: abcabcabc 或 defdefdef 或 abcdefabc
      但是不能匹配abcdef 或abcdfbdef
  2. String支持与正则表达式相关的方法:

    • matches():
    • replaceAll():
    • split():
  3. Object:对象/东西

    • 是所有类的鼻祖,所有类都直接或间接继承了Object,万物皆对象,为了多态

    • Object中有几个经常被派生类重写的方法:toString()和equals()

      • 调用Object类的toString()时默认返回:类的全称@地址,没有参考意义,所以常常重写toString()来返回具体属性的值

        注意:String、StringBuilder等都重写toString()来返回字符串内容了

      • 调用Object类的equals()时默认比较的还是==(即比较地址),没有参考意义,所以常常重写equals()来比较具体的属性值

        注意:

        1. String类已经重写equals()来比较字符串内容了,但StringBuilder并没有
        2. 重写equals()的基本规则:
          • 原则上要比较两个对象的属性值是否相同
          • 两个对象必须是同一类型的,若类型不同则返回false
  4. 包装类:

    • java定义了8个包装类,目的就是为了解决基本类型不能直接参与面向对象开发的问题,使得基本类型可以通过包装类的形式存在。
    • 包括:Integer、Character、Byte、Short、Long、Float、Double、Boolean,其中Character和Boolean是直接继承自Object的,而其余6个包装类继承自java.lang.Number类。
    • JDK1.5推出了一个新的特性:自动拆装箱,当编译器编译时若发现是基本类型与包装类型之间相互赋值,将自动补充代码来完成转换工作,这个过程称为自动拆装箱。

精华笔记:

  1. 正则表达式:

    • 用于描述字符串的内容格式,使用它通常用于匹配一个字符串是否符合格式要求

    • 正则表达式的语法:-------------了解、不用纠结、不用深入研究

      1.[]:表示一个字符,该字符可以是[]中指定的内容
      例如:
      [abc]:这个字符可以是a或b或c
      [a-z]:表示任意一个小写字母
      [a-zA-Z]:表示任意一个字母
      [a-zA-Z0-9]:表示任意一个字母数字
      [a-zA-Z0-9_]:表示任意一个数字字母下划线
      [^abc]:该字符只要不是a或b或c
      2.预定义字符:
      .:表示任意一个字符,没有范围限制
      \d:表示任意一个数字,等同于[0-9]
      \w:表示任意一个单词字符,等同于[a-zA-Z0-9_]----单词字符指字母/数字/_
      \s:表示任意一个空白字符
      \D:表示不是数字
      \W:不是单词字符
      \S:不是空白字符
      3.量词:
      ?:表示前面的内容出现0-1次
      例如: [abc]? 可以匹配:a 或 b 或 c 或什么也不写
      +:表示前面的内容最少出现1次
      例如: [abc]+ 可以匹配:b或aaaaaaaaaa...或abcabcbabcbabcba....
      但是不能匹配:什么都不写 或 abcfdfsbbaqbb34bbwer...
      *:表示前面的内容出现任意次(0-多次)---匹配内容与+一致,只是可以一次都不写
      例如: [abc]* 可以匹配:b或aaaaaaaaaa...或abcabcba....或什么都不写
      但是不能匹配:abcfdfsbbaqbb34bbwer...
      {n}:表示前面的内容出现n次
      例如: [abc]{3} 可以匹配:aaa 或 bbb 或 aab 或abc 或bbc
      但是不能匹配: aaaa 或 aad
      {n,m}:表示前面的内容出现最少n次最多m次
      例如: [abc]{3,5} 可以匹配:aaa 或 abcab 或者 abcc
      但是不能匹配:aaaaaa 或 aabbd
      {n,}:表示前面的内容出现n次以上(含n次)
      例如: [abc]{3,} 可以匹配:aaa 或 aaaaa.... 或 abcbabbcbabcba....
      但是不能匹配:aa 或 abbdaw...
      4.()用于分组,是将括号内的内容看做是一个整体
      例如: (abc){3} 表示abc整体出现3次. 可以匹配abcabcabc
      但是不能匹配aaa 或abcabc
      (abc|def){3}表示abc或def整体出现3次.
      可以匹配: abcabcabc 或 defdefdef 或 abcdefabc
      但是不能匹配abcdef 或abcdfbdef
  2. String支持与正则表达式相关的方法:

    • matches():使用给定的正则表达式(regex)验证当前字符串的格式是否符合要求,符合则返回true,否则返回false

      public class MatchesDemo {
      public static void main(String[] args) {
      /*
      邮箱正则表达式:
      [a-zA-Z0-9_]+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+
      注意: \.中的这个\是正则表达式中的转义符
      \\.中的第1个\,是在转义正则表达式中的\
      */
      String email = "wangkj@tedu.cn";
      String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
      //使用regex匹配email是否符合格式要求
      boolean match = email.matches(regex);
      if(match){
      System.out.println("是正确的邮箱格式");
      }else{
      System.out.println("不是正确的邮箱格式");
      }
      }
      }
    • replaceAll():将当前字符串中满足正则表达式(regex)的部分给替换为给定的字符串(s)

      public class ReplaceAllDemo {
      public static void main(String[] args) {
      String line = "abc123def456ghi78";
      line = line.replaceAll("[0-9]+","#NUMBER#");
      System.out.println(line);
      }
      }
    • split():将当前字符串按照满足正则表达式的部分进行拆分,将将拆分出的以String[]形式来返回

      public class SplitDemo {
      public static void main(String[] args) {
      String line = "abc123def456ghi";
      String[] data = line.split("[0-9]+"); //按数字拆分(数字就拆没了)
      System.out.println(Arrays.toString(data)); //将data数组转换为字符串并输出
      line = "123.456.78";
      data = line.split("\\."); //按.拆(.就拆没了)
      System.out.println(Arrays.toString(data)); //最开始就是可拆分项(.),那么数组第1个元素为空字符串-------------""
      //如果连续两个(两个以上)可拆分项,那么中间也会拆出一个空字符串-----""
      //如果末尾连续多个可拆分项,那么拆出的空字符串被忽略
      line = ".123.456..78.......";
      data = line.split("\\."); //按.拆(.就拆没了)
      System.out.println(Arrays.toString(data));
      }
      }
  3. Object:对象/东西

    • 是所有类的鼻祖,所有类都直接或间接继承了Object,万物皆对象,为了多态

    • Object中有几个经常被派生类重写的方法:toString()和equals()

      • 调用Object类的toString()时默认返回:类的全称@地址,没有参考意义,所以常常重写toString()来返回具体属性的值

        注意:String、StringBuilder等都重写toString()来返回字符串内容了

        package apiday02;
        
        import java.util.Objects;
        
        //点
        public class Point {
        private int x;
        private int y; public Point(int x, int y) {
        this.x = x;
        this.y = y;
        } @Override
        public String toString() {
        return "Point{" +
        "x=" + x +
        ", y=" + y +
        '}';
        } public int getX() {
        return x;
        } public void setX(int x) {
        this.x = x;
        } public int getY() {
        return y;
        } public void setY(int y) {
        this.y = y;
        }
        }
        public class ObjectDemo {
        public static void main(String[] args) {
        /*
        输出引用变量时默认会调用Object类的toString()方法
        该方法返回的字符串格式为: 类的全称@地址
        但通常这个返回结果对我们的开发是没有任何意义
        我们真正想输出的应该是对象的属性值,Object类的toString()并不能满足需求
        因此常常需要重写toString()来返回具体的属性值
        */ Point p = new Point(100,200);
        System.out.println(p); //输出引用变量时默认调用Object类的toString()
        System.out.println(p.toString()); }
        }
      • 调用Object类的equals()时默认比较的还是==(即比较地址),没有参考意义,所以常常重写equals()来比较具体的属性值

        注意:

        1. String类已经重写equals()来比较字符串内容了,但StringBuilder并没有
        2. 重写equals()的基本规则:
          • 原则上要比较两个对象的属性值是否相同
          • 两个对象必须是同一类型的,若类型不同则返回false
        package apiday02;
        
        import java.util.Objects;
        
        //点
        public class Point {
        private int x;
        private int y; public Point(int x, int y) {
        this.x = x;
        this.y = y;
        } @Override
        public String toString() {
        return "Point{" +
        "x=" + x +
        ", y=" + y +
        '}';
        } @Override
        public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Point point = (Point) o;
        return x == point.x && y == point.y;
        } @Override
        public int hashCode() { //hashcode是散列值,现在先不用纠结,后面才讲到
        return Objects.hash(x, y);
        } public int getX() {
        return x;
        } public void setX(int x) {
        this.x = x;
        } public int getY() {
        return y;
        } public void setY(int y) {
        this.y = y;
        }
        } public class ObjectDemo {
        public static void main(String[] args) {
        /*
        调用Object类的equals(),内部还是在使用==比较地址,没有实际意义
        若想比较对象的属性值是否相同,我们认为Object的equals()并不能满足需求
        因此常常需要重写equals()
        */
        /*
        Point p1 = new Point(100,200);
        Point p2 = new Point(100,200);
        System.out.println(p1==p2); //false,==比较的是地址
        //因为调用的是Point类重写之后的equals(),内部比较的是属性的值是否相同
        System.out.println(p1.equals(p2)); //true
        */ String s1 = new String("hello");
        String s2 = new String("hello");
        //String重写equals()来比较字符串内容是否相同了
        System.out.println(s1.equals(s2)); //true StringBuilder builder1 = new StringBuilder("hello");
        StringBuilder builder2 = new StringBuilder("hello");
        //StringBuilder没有重写equals(),所以调用的还是Object的equals(),还是比较地址
        System.out.println(builder1.equals(builder2)); //false //s1与builder1的类型不同,所以equals()一定是false
        System.out.println(s1.equals(builder1)); //false }
        }
  4. 包装类:

    • java定义了8个包装类,目的就是为了解决基本类型不能直接参与面向对象开发的问题,使得基本类型可以通过包装类的形式存在。

    • 包括:Integer、Character、Byte、Short、Long、Float、Double、Boolean,其中Character和Boolean是直接继承自Object的,而其余6个包装类继承自java.lang.Number类。

    • JDK1.5推出了一个新的特性:自动拆装箱,当编译器编译时若发现是基本类型与包装类型之间相互赋值,将自动补充代码来完成转换工作,这个过程称为自动拆装箱。

      public class IntegerDemo {
      public static void main(String[] args) {
      //演示包装类的常用操作:
      //1)可以通过包装类来获取基本类型的取值范围:
      int max = Integer.MAX_VALUE; //获取int的最大值
      int min = Integer.MIN_VALUE; //获取int的最小值
      System.out.println("int的最大值为:"+max+",最小值为:"+min);
      long max1 = Long.MAX_VALUE; //获取long的最大值
      long min1 = Long.MIN_VALUE; //获取long的最小值
      System.out.println("long的最大值为:"+max1+",最小值为:"+min1); //2)包装类型可以将字符串转换为对应的基本类型------必须熟练掌握
      String s1 = "38";
      int age = Integer.parseInt(s1); //将字符串s1转换为int类型
      System.out.println(age); //38------int
      String s2 = "123.456";
      double price = Double.parseDouble(s2); //将字符串s2转换为double类型
      System.out.println(price); //123.456-------double /*
      //触发自动装箱特性,会被编译为:Integer i = Integer.valueOf(5);
      Integer i = 5; //基本类型到包装类型----装箱
      //触发自动拆箱特性,会被编译为:int j = i.intValue();
      int j = i; //包装类型到基本类型----拆箱
      */ /*
      Integer i1 = new Integer(5);
      Integer i2 = new Integer(5);
      System.out.println(i1==i2); //false,因为==是比较地址 //Integer.valueOf()会复用-128到127范围内的数据---使用valueOf()方式更多一些
      Integer i3 = Integer.valueOf(5);
      Integer i4 = Integer.valueOf(5);
      System.out.println(i3==i4); //true
      */
      }
      }

补充:

  1. 将数组转换为字符串:

    • Arrays.toString(数组名)----将某个数组转换为字符串
  2. 进制:

    1)十进制:
    1.1)规则:逢10进1
    1.2)数字:0 1 2 3 4 5 6 7 8 9
    1.3)基数:10
    1.4)权:万 千 百 十 个
    2)二进制:
    2.1)规则:逢2进1
    2.2)数字:0 1
    2.3)基数:2
    2.4)权:128 64 32 16 8 4 2 1
    3)十六进制:
    3.1)规则:逢16进1
    3.2)数字:0 1 2 3 4 5 6 7 8 9 a b c d e f
    3.3)基数:16
    3.4)权:65536 4096 256 16 1
  3. 十六进制的权:

    16的0次幂-------------1
    16的1次幂-------------16
    16的2次幂-------------256
    16的3次幂-------------4096
    16的4次幂-------------65536

    二进制的权:

    2的0次幂-------------1
    2的1次幂-------------2
    2的2次幂-------------4
    2的3次幂-------------8
    2的4次幂-------------16

    十进制的权:

    10的0次幂------------1
    10的1次幂------------10
    10的2次幂------------100
    10的3次幂------------1000
    10的4次幂------------10000
  4. 二进制转换为十进制的规则:所有为1的权相加-----------正数

    要求:今天必须熟练记住最后4个权(8421)

    权:    32  16  8  4  2  1
    二进制: 1 1 0 1 0 1
    十进制: 32+16+4+1---------------53 权: 32 16 8 4 2 1
    二进制: 0 0 1 1 0 1
    十进制: 8+4+1-------------------13 权: 32 16 8 4 2 1
    二进制: 1 0 1 0 1 0
    十进制: 32+8+2------------------42

api接口基础Day2的更多相关文章

  1. drf基础:1、web应用模式、API接口、接口测试工具

    drf入门 一.web应用模式 ​ web的应用模式共分为两种,前后端不分离.前后端分离 1.前后端混合 ​ 之前所写的bbs项目就是前后端不分离,后端人员在开发过程中使用模板语法,前后端都由一个人员 ...

  2. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  3. H3 BPM引擎API接口

    引擎API接口通过 Engine 对象进行访问,这个是唯一入口. 示例1:获取组织机构对象 this.Engine.Organization.GetUnit("组织ID"); 示例 ...

  4. 移动端API接口优化的术和结果

    最近一直在忙工作的事情,所以文章写得有些少. 有3-5篇文章都是写到一半然后被别的事情给打断了,所以,我得找个时间好好补补. 最近一直在关注移动端接口API的可用性问题,在移动时代这个做这个优化能产生 ...

  5. Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试 (转)

    环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...

  6. etcd api 接口

    etcd api接口 基本操作api: https://github.com/coreos/etcd/blob/6acb3d67fbe131b3b2d5d010e00ec80182be4628/Doc ...

  7. Web API接口设计经验总结

    在Web API接口的开发过程中,我们可能会碰到各种各样的问题,我在前面两篇随笔<Web API应用架构在Winform混合框架中的应用(1)>.<Web API应用架构在Winfo ...

  8. 总结的一些微信API接口

    本文给大家介绍的是个人总结的一些微信API接口,包括微信支付.微信红包.微信卡券.微信小店等,十分的全面,有需要的小伙伴可以参考下. 1. [代码]index.php <?php include ...

  9. 优秀的API接口设计原则及方法(转)

    一旦API发生变化,就可能对相关的调用者带来巨大的代价,用户需要排查所有调用的代码,需要调整所有与之相关的部分,这些工作对他们来说都是额外的.如果辛辛苦苦完成这些以后,还发现了相关的bug,那对用户的 ...

  10. 免费的无次数限制的各类API接口(2)

    之前整理过一些聚合数据上的免费API(各类免费的API接口分享,无限次),这次还有一些其他的进行了整理,主要是聚合数据上和API Store上的一些,还有一些其他的. 聚合数据提供30大类,160种以 ...

随机推荐

  1. openwrt通过gre回源

    创建  ip tunnel add GRE网卡名 mode gre local 本地LAN IP remote SERVER LAN IP ttl 255  ip link set GRE网卡名 up ...

  2. java okio 找不到的问题

    问题描述: okio 找不到的问题 解决办法: 下载 jar_files.zip 在idea-File-Project Structure- Project Settings - Libraries ...

  3. Win10系统所有文件夹被设为只读,取消之后再次打开属性依然只读,怎么解决?

    安装完Nodejs之后发现npm info vue指令没有权限运行: C:\Users\JC>npm info vue npm ERR! code EPERM npm ERR! syscall ...

  4. https代理服务器(四)java动态签发【失败】

    https://zhuanlan.zhihu.com/p/355241710?utm_id=0 http://t.zoukankan.com/xiaxj-p-8961131.html https:// ...

  5. java资源精华

    1. java基础教程虚拟机性能分析和故障解决工具_哔哩哔哩_bilibili 2.https://www.bilibili.com/video/BV1Eb4y1v7mB/?p=2&vd_so ...

  6. 把VScode插件提示abc的提示给移到最后

    把VScode插件提示abc的提示给移到最后 解决方法 打开设置,在搜索中输入editor.snippetSuggestions,然后将选项改为top,就可以解决了 top:就是将你插件提示放到最上面 ...

  7. git入门123

    一.新手上路 最重要的4招: 1. 初始化本地仓库 git init 或者 git clone 远程仓库地址 2.添加改动文件 git add 改动的文件名或者目录 偷懒的话可以直接 git add ...

  8. 解决uniapp 使用自带 switch 双向绑定视图不更新的问题

    使用  this.$set( a, b, c) a:需要更新视图属性对象 b:具体的属性值(就是你要更新视图的属性值) c:传递的参数 this.$set(this.gwjSelet,this.gwj ...

  9. 写一个能快速删除文件的.bat图形化操作界面

    用.bat文件,快速删除想要删除的文件 1.首先在桌面上新建一个TXT文件 在文件里面写如图命令 如下: del C:\result.jtl \*.*/f/s/q/a(C:\result.jtl是想要 ...

  10. jmeter中返回值提取并存储。

    jmeter中,关于对接口提取值如何存入CSV文件并且做到换列操作的处理.我这里简单介绍一下. 1.首先把接口调通(这个是必须条件),确认好需要提取存入csv的字段,这里以统计token跟userid ...