JSD-2204-API-正则-Object-包装类-Day18
1.正则表达式
- 是用来描述字符串内容格式,使用它通常用于匹配一个字符串的内容是否符合格式要求
- 正则表达式的语法:--------------了解、不用纠结、不用深入研究
1.[]:表示一个字符,该字符可以是[]中指定的内容例如:[abc]:这个字符可以是a或b或c[a-z]:表示任意一个小写字母[a-zA-Z]:表示任意一个字母[a-zA-Z0-9]:表示任意一个字母数字[a-zA-Z0-9_]:表示任意一个数字字母下划线[^abc]:该字符只要不是a或b或c2.预定义字符:.:表示任意一个字符,没有范围限制\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
1.1.String支持的与正则表达式相关的方法:
- matches(): 使用给定的正则表达式验证当前字符串的格式是否符合要求
public class MatchesDemo {public static void main(String[] args) {/*邮箱的正则表达式:[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\.[a-zA-Z]+)+*/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("不是正确的邮箱格式");}}}
- split():将当前字符串按照满足正则表达式的部分进行拆分
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数组以String格式输出line = "123.456.789";data = line.split("\\."); //按.折分(.就拆没了)System.out.println(Arrays.toString(data));//最开始就是可拆分项(.),那么数组第1个元素为空字符串("")//如果连续两个(两个以上)可拆分项,那么中间也会拆出一个空字符串("")//如果末尾连续多个可拆分项目,那么拆出的空字符串被忽略(没有)line = ".123.456..789.......";data = line.split("\\."); //按.折分(.就拆没了)System.out.println(Arrays.toString(data));}}
- replaceAll():将当前字符串中满足正则表达式的部分给替换为给定的字符串
public class ReplaceAllDemo {public static void main(String[] args) {String line = "abc123def456ghi57";//将line中的数字部分替换为#NUMBER#line = line.replaceAll("[0-9]+","#NUMBER#");System.out.println(line);}}
2.Object
- 是所有类的鼻祖,所有类都直接或间接继承了Object,万物皆对象,为了多态
- Object类中有几个经常被派生类重写的方法:toString()和equals()
- 调用Object类的toString()时默认返回:类的全称@地址,没有参考意义,所以常常重写toString()来返回具体的属性值
- 调用Object类的equals()时默认比较的还是==(即比较地址),没有参考意义,所以常常重写equals()来比较具体的属性值
> 注意: //思考----------------------2:45继续
>
> 1. String类已经重写了equals()比较字符串内容
> 2. 重写equals()的基本规则:
> - 两个对象必须是同一类型,若类型不同则返回false
> - 原则上要比较两个对象的属性是否相同
package apiday02;import java.util.Objects;//点public class Point {private int x;private int y;@Overridepublic 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;}@Overridepublic int hashCode() {return Objects.hash(x, y);}@Overridepublic String toString() {return "Point{" +"x=" + x +", y=" + y +'}';}public Point(int x, int y) {this.x = x;this.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) {/*Point类若不重写toString(),则调用的是Object中定义的toString()toString()返回的格式为: 类的全称@地址但通常这个返回结果对我们的开发没有帮助,所以需要重写toString()返回自己想要的java中的String、StringBuilder已经重写toString()直接返回字符串了*/Point p = new Point(100,200);System.out.println(p); //输出引用时,默认调用Object的toString()方法System.out.println(p.toString());/*Object中的equals()内部还是在用==来比较地址,没有实际意义因此我们自己定义的类在使用时若想比较对象的数据,常常需要重写equals*/Point p1 = new Point(100,200);Point p2 = new Point(100,200);System.out.println(p1==p2); //false,==比较的是地址//true,因为重写的equals()中比较的是x和y的值System.out.println(p1.equals(p2)); //trueString s1 = new String("abc");String s2 = new String("abc");//true,String中重写equals()比较内容System.out.println(s1.equals(s2));StringBuilder builder1 = new StringBuilder("abc");StringBuilder builder2 = new StringBuilder("abc");//false,StringBuilder中没有重写equals(),因此比较的还是地址System.out.println(builder1.equals(builder2));//false,因为s1与builder1的类型不同,若类型不同一定是falseSystem.out.println(s1.equals(builder1)); }}
3.包装类
- java定义了8个包装类,目的是为了解决基本数据类型不能直接参与面向对象开发的问题,使得基本类型可以通过包装类对象的形式存在。
- 包括8个:Integer、Character、Byte、Short、Long、Float、Double、Boolean。其中Character和Boolean是直接继承Obejct的,而其余6个包装类继承自java.lang.Number。
- JDK1.5推出了一个新的特性:自动拆装箱,当编译器编译时若发现基本类型与包装类型相互赋值时,将会自动补充代码来完成转换工作,这个过程叫做自动拆装箱。
public class IntegerDemo {public static void main(String[] args) {//演示包装类的创建:Integer i1 = new Integer(5); //创建了一个对象Integer i2 = new Integer(5); //创建了一个对象System.out.println(i1==i2); //false,因为==是比较地址Integer i3 = Integer.valueOf(500); //创建了一个对象Integer i4 = Integer.valueOf(500); //创建了一个对象System.out.println(i3==i4); //false,因为==是比较地址//Integer.valueOf()会复用-128到127范围内的数据,建议使用valueOf()方式创建Integer i5 = Integer.valueOf(5); //创建了一个对象Integer i6 = Integer.valueOf(5); //因为在-128到127之间,所以复用了i5对象System.out.println(i5==i6); //true//演示自动拆装箱-----底层自动补充代码完成了转换工作//触发自动装箱特性,会被编译为:Integer i = Integer.valueOf(5);Integer i = 5;//触发自动拆箱特性,会被编译为:int j = i.intValue();//intValue()的作用是:将包装类型转换为int类型int j = i;//演示包装类的常用操作://1)可以通过包装类来得到基本类型的取值范围:int max = Integer.MAX_VALUE; //获取int的最大值int min = Integer.MIN_VALUE; //获取int的最小值System.out.println("int的最大值为:"+max+",int的最小值为:"+min);long max1 = Long.MAX_VALUE; //获取long的最大值long min1 = Long.MIN_VALUE; //获取long的最小值System.out.println("long的最大值为:"+max1+",long的最小值为:"+min1);//2)包装类可以将字符串转换为对应的基本类型----必须掌握String str = "38";int age = Integer.parseInt(str); //前提str能正确表达一个int数据System.out.println(age); //38---int类型String s = "123.456";double price = Double.parseDouble(s); //前提s能正确表达一个double数据System.out.println(price); //123.456---double类型}}
4.补充
1.进制
1.1十进制的权:
10的0次幂--------110的1次幂--------1010的2次幂--------10010的3次幂--------100010的4次幂--------10000
1.2二进制的权:
2的0次幂---------12的1次幂---------22的2次幂---------42的3次幂---------82的4次幂---------162的5次幂---------322的6次幂---------64
1.3十六进制的权:
16的0次幂--------116的1次幂--------1616的2次幂--------25616的3次幂--------409616的4次幂--------65536
1.4进制
1)十进制:1.1)规则:逢十进一1.2)数字:0 1 2 3 4 5 6 7 8 91.3)基数:101.4)权:10000 1000 100 10 12)二进制:2.1)规则:逢二进一2.2)数字:0 12.3)基数:22.4)权:128 64 32 16 8 4 2 13)十六进制:3.1)规则:逢十六进一3.2)数字:0 1 2 3 4 5 6 7 8 9 a b c d e f3.3)基数:163.4)权:65536 4096 256 16 1
二进制转换为十进制规则(正的):所有为1的权相加
例如: 今天必须熟练记住最后4个权(8 4 2 1)
权: 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 0 1 1 1十进制: 32+4+2+1----------39
1.5明日单词:
1)binary:二进制
JSD-2204-API-正则-Object-包装类-Day18相关推荐
- 常用API(Object、String、StringBuffer、用户登陆注册)
常用API 今日内容介绍 u Object u String u StringBuilder 第1章 Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象 ...
- Flask API TypeError: Object of type 'Response' is not JSON serializable
Flask API TypeError: Object of type 'Response' is not JSON serializable 错误代码: session['image'] = str ...
- java api class_Java API:Object class
Java API:Object class 首先简单的介绍一下Object类. java.lang.Object java.lang包使用的时候,不用显示导入,由编译器自动导入. Objec(即对象类 ...
- JAVA day13,14 API、Object类、日期时间类(long,Date,Calendar,DateFormat)、String类(字符串,可变长字符串)、正则表达式、包装类
1.API API(Application Programming Interface),应⽤程序编程接⼝.Java API是⼀本程序员的"字 典",是JDK提供给我们使⽤的类的说 ...
- java学习--基础知识进阶第五天--API、 Object类 System类、日期相关类、包装类正则表达式...
今日内容介绍 u Object类 & System类 u 日期相关类 u 包装类&正则表达式 第1章 Object类 & System类 1.1 Object类 1.1. ...
- day04--java高级编程:API:Object、String,Buffer、包装类、日期、java比较器、BigInteger、进制、length区别,IO流,路径,序列化id,编码
1 API 1.1 Api文档下载 1.API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口,一切可以调用的东西都是API. ...
- Java的API及Object类、String类、字符串缓存区
Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Object:Object类是Java语言中的根类,即所有类的父类. equ ...
- TensorFlow Object Detection API Custom Object Hangs On
TensorFlow Object Detection API Hangs On - Training and Evaluating using Custom Object Detector *The ...
- java常用API之Object
java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定父类, 那么默认则 ...
- 常用API,基本类型包装类,日期类,异常,集合进阶,IO流,多线程
十九.常用API 19.1Math Math包含执行基本数字运算的方法 没有构造方法,如何使用类中的成员呢? 看类的成员是否都是静态的,如果是,通过类名就可以直接调用公 19.1.1 Math的常 ...
最新文章
- 微软 Mozilla高管评Safari Windows版
- 关于eclipse的实用技巧
- 用Dreamweaver+ASP实现分页技术的参考
- “是男人就下100层”
- Spring--事务处理编程
- 自然数之和(leetcode 167)
- 零基础入门实践目标检测项目
- Android热修复升级探索——代码修复冷启动方案 1
- windows下svn server的安装和配置
- matlab simulink单相桥式逆变电路
- RK平台RAM和ROM容量计算
- 技术人如何自我成长?
- linux同步两台mysql数据,Mysql入门MySQL 数据库两台主机同步实战(linux)
- springcloud为什么关闭了bus还是会连接mq
- 条码扫描器的安装方法与使用注意事项
- Property 'X' not found on type entity.Customer错误原因分析
- JAVA——JSch
- 计算机基础知识填空题和选择题,计算机基础知识题库选择题(参考).doc
- 【Kubernetes】K8s集群operator模式安装minio
- uM计算机组成原理,计算机组成原理_课程设计报告.doc
热门文章
- 如何为项目起一个好名字
- 进阶篇:如何优化网站提升访问速度
- MFC创建处理中进度条,循环滚动进度条的方法
- 半小时拿下Python数据处理之Matplotlib篇
- python无法启动此程序丢失zlib.dll_关于winserver2012运行c++程序缺少dll的理由
- 招投标基本流程(不包含资格预审)
- 新的Symbian OS 9 可执行文件格式(E32Image)
- python私活平台_【Python兼职】,Python开发接单接私活,Python程序员外包平台-程序员客栈...
- TQ2440开发板学习纪实(5)--- 设置UART串口,输出Hello World!
- 计算机设备耗材管理制度,关于国税局计算机耗材管理办法