一、StringBuilder

1.1 java.lang.StringBuilder

由于字符串的特性决定他不适合做修改操纵,为了解决这个问题Java提供了便于修改字符串的API:StringBuilder
StringBuilder提供了修改字符串的一系列常用操作:增删改插等
StringBuilder内部维护一个可变的char数组,修改速度更换,并且内存开销更小

1.2 append方法

append:将给定的内容添加的当前字符串末尾
builder.append(",forseegoodjob");

1.3 replace方法

replace(int start,int end,String str)
替换当前字符串中指定范围内的字符串为给定字符串(范围含头不含尾)
builder.replace(18, 31, “就是为了改变世界”);

1.4 delete方法

delete(int start,int end)
删除当前字符串中指定范围内的内容
builder.delete(0, 17);

1.5 insert方法

insert(int index,String str)
将给定的字符串插入到指定位置
builder.insert(0, “活着”);

1.6 toString方法

String toString()
该方法可以获取StringBuilder内部表示的修改后的字符串
str = builder.toString();

二、正则表达式(只关注格式正确)

正则表达式的作用是检验某个字符串的内容是否符合格式要求

2.1基本语法

  • [ ]:方括号表示一个字符,该字符只允许[]中指定的字符。

  • 例如:

  • [abc]:这个字符只能是a b c 中的一个
    [a-z]:“-”表示范围,意思是[abcd…z],表示任意一个小写字母

  • 预定义字符:

  • .:“."在正则表达式中表示任意一个字符,内容无限制

  • \d:表示任意一数字,等同[0-9]

  • \s:表示任意一空白字符,不如:空格、缩进、回车都是空百字符

  • \w:表示任意一个单词字符,等同于[a-zA-Z0-9]

  • \D,\S,\W这三个大写字母的表达“非”,\d,\s,\w对立

  • 量词:

  • ?:"?"表示前面的的内容出现0次或1次

  • 例如:

  • [abc]?:可以匹配单个a,单个b,单个c,或者什么都不写,但aa不可以

  • **:“*”表示前面的内容出现0~多次(任意次)

  • 例如:

  • [abc]*:可以匹配:aaa,bbb,ccc,abcabcbca,什么都不写

  • 不可以匹配的:abcd,ddd,ff 因为单独看每一个字符时,出现[abc]没的

  • +:“+”表示前面的内容出现1到多次(一次以上)

  • 例如:

  • [abc]+:可以匹配aaa,bbb,ccc,ababc

  • 不可匹配:abcd,dddd,fff,什么都不写

  • {n}:n表示一个具体数据(>=0),表示前面的数据只能出现n次

  • 例如:

  • [abc]{3}:可匹配aaa,bbb,ccc,abc,acb

  • 不可匹配:aaaa,aa,acd

  • {n,m}:最少n次,最多m次

  • 例如[abc]{4,8}:可匹配aaaa,bbbbb,abcabc

  • 不可匹配:aa,aaaaaaaaaaaaaaaaaaaaaaaaaa

  • {n,}:表示最少n次

  • 例如[asd]{3,}:可匹配aaaa,sda,asdasdas

  • 不可匹配:as,zxczxzxc

  • 分组:

  • ():将()当中的内容看成一个整体

  • 例如:

  • (abc){3}:可以匹配abcabcabc

  • (abc|def){3}:可以匹配:abcabcabc,abcabcdef,defdefdef,abcdefabc

2.2 matches方法

boolean matches(String regex)
用给定的正则表达式验证当前字符串是否符合格式要求,匹配通过则返回ture
boolean match1 = qemail.matches(regex1);
注:正则表达式中经常会使用“\”转义符,如果出现,那么在Java字符串中表示该正则表达式时,所有的“\”都要写成“\”

2.3 replaceAll方法

String replaceAll(String regex,String str)
将当前字符串中满足正则表达式的部分替换为给定内容,并将其替换
str = str.replaceAll("[0-9]+","#NUMBER#");

2.4 split方法

String [ ] split(String regex)
将当前字符串按照满足正则表达式的部分进行拆分将拆分后的各部分以一个数组的形式返回
String str = “abc123def456ghi”;
//将当前字符串按照数字部分进行拆分
String[] arr=str.split("[0-9]+");

三、object

3.1 object

Object是所有类的超类,里面定义的所有方法子类都具备,其中有两个方法经常被重写

3.2 toString方法

我们经常使用该方法将一个引用类型变量输出,而这个方法是先调用给定的对象的toString方法,然后将该方法返回的String输出到控制台;由于toString方法是object定义的方法,因此所有类都有这个方法,如果子类没有重写的话,那么object提供的toString方法返回的字符串是:类名@地址
但是这个格式输出到控制台对我们开发实质上没有多大帮助,因此,当我们将来希望输出一个对象更有价值的内容时,就需要重写这个方法
注释:重写从object中继承的toString方法,返回的字符串没有格式上的具体要求,可以结合将来实际开发需求而定,但是原则上返回的字符串中应当包含当前对象的属性信息
字符串与其他类型连接的结果还是字符串那么字符串实际连接其他引用类型时,就是调用该对象的toString方法,将返回的字符串进行连接。
* 下面的字符串等同:
* String str = “point:”+p.toString();
* String str = “point:” + p ;

关于重写toString:
先定义属性然后


最后重写toString方法,返回自己想要的结果

3.3 equals方法

java提供的类equals方法基本都重写了,比如String类而我们定义的类若不重写则使用object提供的,那么其比较的规则就是==,没有实际价值,对此我们如果自己定义的类希望用 equals比较内容就需要重写这个方法

练习
 String str = "goodgoodstudyjava";//默认表示一个空字符串//StringBuilder builder = new StringBuilder();//表示给定的字符串//StringBuilder builder = new StringBuilder(str);/** StringBuffer是线程安全的* Stringbuilder不是线程安全的*/StringBuffer builder = new StringBuffer(str);/** goodgoodstudyjava* goodgoodstudyjava,forseegoodjob* append:将给定的内容添加的当前字符串末尾*/builder.append(",forseegoodjob");/** String toString()* 该方法可以获取StringBuilder内部表示的修改后的字符串*/str = builder.toString();System.out.println(str);/*goodgoodstudyjava* goodgoodstudyjava,forseegoodjob* goodgoodstudyjava,就是为了改变世界* replace(int start,int end,String str)* 替换当前字符串中指定范围内的字符串为给定字符串(范围含头不含尾)*/builder.replace(18, 31, "就是为了改变世界");str = builder.toString();System.out.println(str);/** goodgoodstudyjava,就是为了改变世界* ,就是为了改变世界* delete(int start,int end)* 删除当前字符串中指定范围内的内容*/builder.delete(0, 17);str = builder.toString();System.out.println(str);/** ,就是为了改变世界* 活着,就是为了改变世界* insert(int index,String str)* 将给定的字符串插入到指定位置*/builder.insert(0, "活着");str = builder.toString();System.out.println(str);/*5 String s = "好好学习";StringBuilder s1 = new StringBuilder(s);s1.append(",天天向上");s1.replace(5, 10, "为了改变世界");s1.delete(0,4);s1.insert(0,"live");s = s1.toString();System.out.println(s);*//*4 String s = "hhxx,";StringBuilder s1 = new StringBuilder(s);s1.append("ttxs");s1.replace(5, 9, "wlgbsj");s1.delete(0, 4);s1.insert(0, "hz");s = s1.toString();System.out.println(s);*//*3 String s = "sjdyx";StringBuilder s1 = new StringBuilder(s);s1.append(",wlfs");s1.replace(6,10,"wlw");s1.delete(0, 5);s1.insert(0, "bgz");s = s1.toString();System.out.println(s);*//*2 String s = "asasdasdasd";StringBuilder s1 = new StringBuilder(s);s1.append(",3121232");s1.replace(7, 10, "!@#$$%$%");s1.delete(0, 7);s1.insert(0, "<>?");s = s1.toString();System.out.println(Arrays.toString(s));*//*1 String s = "12312312";StringBuilder s1 = new StringBuilder(s);s1.append(",asdasd");s1.replace(0, 4, "@!#!@");s1.delete(0, 5);s1.insert(0, "<>?");s = s1.toString();System.out.println(Arrays.toString(s));*/
        String email="mg45@tedu.cn";String regex = "[a-zA-Z0-9]+@[a-zA-z0-9]+(\\.[a-zA-z]+)+";boolean match = email.matches(regex);if(match){System.out.println("是邮箱地址");}else {System.out.println("不是邮箱地址");}/*4 String qemail = "456465465@qq.com";String regex = "[a-zA-Z0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z0-9]+";boolean match =qemail.matches(regex);if(match){System.out.println("是邮箱地址");}else{System.out.println("不是邮箱地址");}*//*3 String qemail = "78897987@qq.com.cn";String regex1 = "\\w+@\\w+(\\.\\w)+";boolean match1 = qemail.matches(regex1);if(match1){System.out.println("是邮箱地址");}else{System.out.println("不是邮箱地址");}*//*2String qemsil = "12312asd@qq.com";String regex = "[a-zA-Z0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z0-9]+";boolean match = qemsil.matches(regex);if(match){System.out.println("是邮箱地址");}else{System.out.println("不是邮箱地址");}*//*1String qemil = "asddas@qq.com";String regex = "[a-zA-Z0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z0-9])";boolean match = qemil.matches(regex);if(match){System.out.println("是邮箱地址");}else{System.out.println("不是邮箱地址");}*/
/*5 String a = "asdas21312asddas";a = a.replaceAll("[0-9]+", "#NUMBER#");System.out.println(a);*//*4 String a = "asd123asd123sad";a = a.replaceAll("[0-9]+", "#NUMBER#");System.out.println(a);*//*3String a = "asd231asd231asd";a = a.replaceAll("[0-9]+", "nuber");System.out.println(a);*//*2 String a = "asd213asd123";a = a.replaceAll("[0-9]+","#num#");System.out.println(a);*//*1 String a = "asd213";* a = a.replaceAll("[0-9]+","##NUM##");* System.out.println(a);*/
/*5 String ling = "username=张三&age=16&id=&gender=男&slary=5000";Strin[]arr = ling.split("&");for(int i=0;i<arr.length;i++){String[]arr1=arr[i].split("=");System.out.println("参数名:"+arr1[0]);if(arr1.length==2){System.out.println("参数值:"+arr1[1]);}else{System.out.println("参数值:null");}}*//*4 String ling = "username=张三&age=16&id=&gender=男&slary=5000";String[]arr = ling.split("&");for(int i=0;i<arr.length;i++){String[]arr1=arr[i].split("=");System.out.println("参数名:"+arr1[0]);if(arr1.length==2){System.out.println("参数值:"+arr1[1]);}else{System.out.println("参数值:null");}}*//*3 String ling = "username=张三&age=16&id=&gender=男&slary=5000";String[]arr = ling.split("&");for(int i=0;i<arr.length;i++){String[]arr1 = arr[i].split("=");System.out.println("参数名:"+arr1[0]);if(arr1.length==2){System.out.println("参数值:"+arr1[1]);}else{System.out.println("参数值:null");}}*//*2 String ling = "username=张三&age=16&id=&gender=男&slary=5000";String[]arr = ling.split("&");for(int i=0;i<arr.length;i++){String []arr1 = arr[i].split("=");System.out.println("参数名:"+arr1[0]);if(arr1.length==2){System.out.println("参数值:"+arr1[1]);}else{System.out.println("参数值:null");}}*//*1 String ling = "username=张三&age=16&id=&gender=男&slary=5000";String[]arr = ling.split("&");for(int i=0;i<arr.length;i++){String[]arr1 = arr[i].split("=");System.out.println("参数名:"+arr1[0]);if(arr1.length==2){System.out.println("参数值:"+arr1[1]);}else{System.out.println("参数值:null");}}*/
private int x;private int y;public Point(int x, int y) {super();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 String toString(){//希望返回的格式:(x,y)return "("+x+","+y+")";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + x;result = prime * result + y;return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Point other = (Point) obj;if (x != other.x)return false;if (y != other.y)return false;return true;}
/*5private int x;private int y;public Point(int x, int y) {super();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 String toString(){//希望返回的格式:(x,y)return "("+x+","+y+")";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + x;result = prime * result + y;return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Point other = (Point) obj;if (x != other.x)return false;if (y != other.y)return false;return true;}*//*4private int x;private int y;public Point(int x, int y) {super();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 String toString(){//希望返回的格式:(x,y)return "("+x+","+y+")";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + x;result = prime * result + y;return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Point other = (Point) obj;if (x != other.x)return false;if (y != other.y)return false;return true;}*//*3private int x;private int y;public Point(int x, int y) {super();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 String toString(){//希望返回的格式:(x,y)return "("+x+","+y+")";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + x;result = prime * result + y;return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Point other = (Point) obj;if (x != other.x)return false;if (y != other.y)return false;return true;}*//*2private int x;private int y;public Point(int x, int y) {super();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 String toString(){//希望返回的格式:(x,y)return "("+x+","+y+")";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + x;result = prime * result + y;return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Point other = (Point) obj;if (x != other.x)return false;if (y != other.y)return false;return true;}*//*1private int x;private int y;public Point(int x, int y) {super();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 String toString(){//希望返回的格式:(x,y)return "("+x+","+y+")";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + x;result = prime * result + y;return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Point other = (Point) obj;if (x != other.x)return false;if (y != other.y)return false;return true;}*/
     String s1 ="hello";String s2 = new String("hello");System.out.println(s1);System.out.println(s2);System.out.println("s1==s2:"+(s1==s2));System.out.println("s1 equals s2:"+s1.equals(s2));Point p1 = new Point(1,2);Point p2 = new Point(1,2);System.out.println("p1==p2:"+(p1==p2));//f/** java提供的类equals方法基本都重写了,比如上面的String类* 而我们定义的类若不重写则使用object提供的,那么其比较规则的* 就是==,没有实际价值,对此我们如果自己定义的类也希望用* equals比较内容就需要重写这个方法*/System.out.println("p1 equals p2:"+p1.equals(p2));/*4String s1 ="hello";String s2 = new String("hello");System.out.println(s1);System.out.println(s2);System.out.println("s1==s2:"+(s1==s2));System.out.println("s1 equals s2:"+s1.equals(s2));Point p1 = new Point(1,2);Point p2 = new Point(1,2);System.out.println("p1==p2:"+(p1==p2));System.out.println("p1 equals p2:"+p1.equals(p2));*//*3String s1 ="hello";String s2 = new String("hello");System.out.println(s1);System.out.println(s2);System.out.println("s1==s2:"+(s1==s2));System.out.println("s1 equals s2:"+s1.equals(s2));Point p1 = new Point(1,2);Point p2 = new Point(1,2);System.out.println("p1==p2:"+(p1==p2));System.out.println("p1 equals p2:"+p1.equals(p2));*//*2String s1 ="hello";String s2 = new String("hello");System.out.println(s1);System.out.println(s2);System.out.println("s1==s2:"+(s1==s2));System.out.println("s1 equals s2:"+s1.equals(s2));Point p1 = new Point(1,2);Point p2 = new Point(1,2);System.out.println("p1==p2:"+(p1==p2));System.out.println("p1 equals p2:"+p1.equals(p2));*//*1String s1 ="hello";String s2 = new String("hello");System.out.println(s1);System.out.println(s2);System.out.println("s1==s2:"+(s1==s2));System.out.println("s1 equals s2:"+s1.equals(s2));Point p1 = new Point(1,2);Point p2 = new Point(1,2);System.out.println("p1==p2:"+(p1==p2));System.out.println("p1 equals p2:"+p1.equals(p2));*//*5String s1 ="hello";String s2 = new String("hello");System.out.println(s1);System.out.println(s2);System.out.println("s1==s2:"+(s1==s2));System.out.println("s1 equals s2:"+s1.equals(s2));Point p1 = new Point(1,2);Point p2 = new Point(1,2);System.out.println("p1==p2:"+(p1==p2));System.out.println("p1 equals p2:"+p1.equals(p2));*/

JAVA SE学习day_02:StringBuilder、正则表达式、Object相关推荐

  1. 第一阶段Java SE学习概述

    Java SE学习概述 Java SE 学习分为五个阶段 第一部分:基础程序设计: 第二部分:面现象对象编程: 第三部分:Java SE 高级应用: 第四部分:JavaSE 新特性: 第五部分:MyS ...

  2. 一个编程小白的Java SE学习日志 Ⅵ——继承【极客BOY-米奇】

    文章目录 前言(转载请说明作者!)3.25~3.29编写 自我问答 任务导引:电子宠物Beta 任务UML图 继承 什么是继承? 如何实现继承? 案例 子类可以继承父类所有的成员和方法? 继承的特点 ...

  3. Java SE 学习记录06

    @学习记录 开始学习Java 遵从同学的指导,从Java se开始学习 黑马的JavaSE零基础入门 day06-01 面向对象 package day06;import java.util.Arra ...

  4. Java SE 学习记录——进阶版11

    @学习记录 开始学习Java 遵从同学的指导,从Java se开始学习 黑马的JavaSE零基础入门[网络编程] 第一章 网络编程入门 1.1 软件结构 22-02 软件结构 1.2 网络通信协议 2 ...

  5. Java SE 学习笔记5 Java阶段复习

    计算机.Java基础 一.计算机 1.硬件介绍 2.中央处理器 3.比特(bit)和字节(byte) 4.内存 5.存储设备 6.输入和输出设备 二.Java介绍 1.常用的dos命令 2.java语 ...

  6. JAVA SE 学习笔记

    笔记 一·Java程序基础 代码练习合集 1.Hello,world 2.BMI 3.Grade 4.InputNum 5.Gamecaiquan 6.Main 7.Reserve_arrays 8. ...

  7. JAVA SE学习笔记(七):终章:Java程序设计基础笔记(全10万字)

    Java程序设计入门 ​                                              copyright © 2020 by 宇智波Akali 目录 文章目录 第1章 J ...

  8. java se学习总结(自用)

    第一章 开发前奏 1.常用dos命令 盘符: 进入指定的盘下面,例如: d: 进入d盘 操作文件夹: dir: 列出当前控制台所在的路径下的所有文件以及文件夹 cd 路径 : 进入指定路径下 cd.. ...

  9. Java SE学习【二】——面向对象

    面向对象的学习也进行了一段时间,这段时间学了,类和对象:属性:方法:封装:继承:多态:接口.也算是有一些自己的理解,不愧是贴近人类思维的思想,老师讲时我常常会想到以前的一些事物和其交相印证,其中最常想 ...

最新文章

  1. C# IPGlobalStatistics获取本机网络流量信息
  2. 虚幻4皮肤材质_虚幻4学习心得
  3. Tomcat系列(4)——Tomcat 组件及架构详细部分
  4. 年度回顾 | 2019 年的 Apache Flink(文末有福利)
  5. wangEditor 全屏 预览 查看源码
  6. dex2jar java 1.8_dex2jar v2.1 最新版本打包
  7. hdoj小数转化为分数
  8. Maya及UE4的 ART相关
  9. Java怎么学?分享6个学习窍门
  10. Q格式-TI的dsp的IQmath学习
  11. vue中swiper,vue-awesome-swiper实现轮播;鼠标移入暂停,移除播放;点击暂停按钮暂停,再点击播放。
  12. 【视频相关】视频中常出现的参数解释——2018年6月16日
  13. Java 对接 阿里云 的短信服务完成短信的发送与查询
  14. 聊聊追求测试技术导致过度测试
  15. 资深程序员给Java初学者的学习路线建议
  16. Windows 10环境中安装Snort+Barnyard2+MySQL
  17. 每日一句—英语长难句
  18. 网页黑白代码将整个网站变为黑白色怎么弄
  19. elementui from表单提交_vue+element-ui el-form表单验证及提交验证
  20. android手机的扩容教程,解决手机系统空间不足

热门文章

  1. 【动态树】[BZOJ2002] Bounce 弹飞绵羊
  2. 编程沉思-做一款小巧而好用的截图软件
  3. “System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常。
  4. Keras入门(一)搭建深度神经网络(DNN)解决多分类问题 1
  5. 解决paramiko获取远程脚本延时返回数据的问题
  6. Spark With Mongodb 实现方法及error code -5, 6, 13127解决方案
  7. 完美解决api-ms-win-crt-runtime-l1-1-0.dll 丢失问题
  8. SSH登录很慢问题的解决
  9. SpringMVC 学习-异常处理 SimpleMappingExceptionResolver 类
  10. 记一次 解决 vue 兼容ie11 的问题