JAVA复习(对象的克隆、正则表达式)
对象的克隆
对象的克隆就是复制的操作,和之前学习的引用传递不同 在引用传递中一个 实例 可以有多个名字 但是多个名字都指向一个对象
克隆出来的对象 和之前的对象 没有任何的引用关系
想要实现对象的克隆,首先克隆对象的类,必须实现一个接口: public interface Cloneable ,只有实现了该接口的类才能有克隆的能力:
可用通过调用 clone()方法 为一个对象克隆,而这个方法定义在Object类中,所有的类都默认存在该方法
范例:实现对象的克隆
Person per1=new Person(); Person per2=(Person) per1.clone(); System.out.println(per1==per2); |
通过调用clone方法可以为一个对象克隆,但是必须实现clonable接口
正则表达式:
正则表达式解决的问题主要在于对字符串的格式化处理,为了理解方便做一个案例,判断一个字符串是否全部是由数字组成
public static void main(String[] args) { String str="12A3"; System.out.println(isNumber(str)); } public static boolean isNumber(String str) { char[]arr=str.toCharArray(); //先变为char数组 for(int i=0;i<arr.length;i++) { if(arr[i]<'0'||arr[i]>'9') { return false; } } return true; } |
接下来使用正则完成同样的功能:
public static void main(String[] args) { String str="123"; if(str.matches("\\d+")) { System.out.println("是数字"); }else { System.out.println("不是数字"); } } |
通过正则的验证,可以很方便的完成字符串的处理操作
正则的匹配符号: 观察java.util.regex 包pattern类
1 转义字符 : \\ \
2 \d 代表任意的一位数字 \D 表示任意非数字
3 [abc] 匹配字符串里面 可能 a b c 中的其中一个
4 [^abc] 非的意思 不是 a b c 其中的一个
5 [a-zA-Z] 全部字母中的任意一个
6 \w 任意的数字 字母 _ 等价于 [a-zA-Z]
7\W 非
8 ? 出现0次或者1次
9 + 出现一次或者多次
10 {n} n 给定的次数
11 {m,n}
正则表达式 记住常用的就OK 不常用的有生成工具 一键生成
String类对正则的支持:
1 public boolean matches(String regex) 与指定的正则进行匹配
2 public String replaceAll(String regex, String replacement) 替换指定正则的全部内容
3 public String[] split(String regex);根据指定正则进行字符串的分割
范例: 消除字符串中字母
public static void main(String[] args) { String str="123fdfsds5438fgh124jj9"; // 首先定义 正则规则: String regex="[a-zA-Z]+"; //字母出现一次或者多次 System.out.println(str.replaceAll(regex, "")); } |
练习:给定123fdfsds5438fgh124jj9字符串 按照数字拆分
public static void main(String[] args) { String str="123fdfsds5438fgh124jj9"; // 首先定义 正则规则: String regex="\\d"; //字母出现一次或者多次 String[] result=str.split(regex); for(int i=0;i<result.length;i++) { System.out.print(result[i]+"、"); } } |
练习:给定 aaaaab 字符串 在b之前可以有任意个a 但是不能没有至少有1 个
public static void main(String[] args) { String str="aaaab"; String regex="a+b"; System.out.println(str.matches(regex)); } |
练习: 验证日期格式 是否合法,如果合法 转换为Date类型输出
1989-02-06
public static void main(String[] args) throws ParseException { String str="1989-02-06"; //网站上的日期 现在都不让用户输入 鼠标点击 String regex="\\d{4}-\\d{2}-\\d{2}"; if(str.matches(regex)) { Date date=new SimpleDateFormat("yyyy-MM-dd").parse(str); System.out.println(date); }else { System.out.println("输入的日期格式不正确"); } } |
1 使用正则表达式验证邮箱是否合法
2 验证java 标识符是否合法 数字 字母 下划线组成 不能以数字开头
package qf; public class Zz2 { public static void main(String[] args) { /*String str="1996-11-01"; String regex="\\d{4}-\\d{2}-\\d{2}"; System.out.println(str.matches(regex));*/ String emal="1264957234@qq.com"; String emal1="wgq1264957234@163.com"; String regex="\\w{5,16}@\\w{2,3}.com"; System.out.println(emal.matches(regex)); System.out.println(emal1.matches(regex)); } } |
package qf; public class Zz2 { public static void main(String[] args) { String str="_ad2"; String regex="[a-zA-Z_]\\w+"; System.out.println(str.matches(regex)); } } |
JAVA复习(对象的克隆、正则表达式)相关推荐
- JAVA之对象的克隆
JAVA之对象的克隆 1.为什么要克隆? ①方便,克隆的对象可能包含一些已经修改过的属性,而new出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的"状态" ...
- Java实现对象的克隆方式
Java实现对象克隆的方法 1.Java实现克隆有两种形式 浅拷贝 深拷贝 在Java中吗,我们说两个对象是否相等通常有两层含义: 对象的内容是否相等,通常使用到对象的 equals(Object o ...
- Java实现对象深度克隆
两种方式: 1). 实现Cloneable接口并重写Object类中的clone()方法: 2). 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆 ...
- Java复习-对象的回收与垃圾的回收
Java的回收机制很神奇,垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(比如数据库的连接,网络IO的连接) 程序无法精确控制垃圾的回收运行,垃圾回收会在适合的时候进行,当对象永久性的失去 ...
- Java中对象的深复制(深克隆)和浅复制(浅克隆)介绍
1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵ ...
- 【JAVA零基础入门系列】Day14 Java对象的克隆
[JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...
- Java提高—对象克隆(复制)/对象属性拷贝
对象克隆(复制)假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byt ...
- java浅度克隆_java对象 深度克隆(不实现Cloneable接口)和浅度克隆
为什么需要克隆: 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说 ...
- (Java)对象克隆技术
在 Java 中支持对象的克隆操作,直接使用 Object 类中的 clone() 方法即可,方法定义如下: protected Object clone() throws CloneNotSuppo ...
最新文章
- 《卫报》长文解读机器的崛起:人类越来越无法掌控它们
- 四种常见的系统架构,目前你处于哪个阶段呢?
- python2基础教程廖雪峰云-Python基础
- Windows环境下32位汇编程序设计C版code--第五章(三)
- service能去调另外一个service吗_kubernetes的service和pod是如何关联的?
- bootstrap-导航(基础样式)
- mysql 端口time_wait_linux上大量tcp端口处于TIME_WAIT的问题
- 二级vb笔试题库__全国计算机等级考试,2012年9月全国计算机二级VB笔试标准预测试卷试题六...
- linux服务器操作系统日志都有哪些,Linux操作系统服务器日志管理详解
- 创建数据库python: can‘t open file ‘manage.py‘: [Errno 2] No such file or directory报错
- 爬虫笔记(十四)——BeautifulSoup库
- strcmp() Anyone? UVA - 11732 左孩子右兄弟Trie/计数
- 【PostgreSQL-9.6.3】psql常用命令
- 水域大小 Java_我的世界:Java版开发者们畅聊水域更新
- python语音合成并播放_Python:TTS语音合成技术,市场各大平台对比以及实现
- latex插图编号_LaTex技巧[26]:Latex重新为图片编号
- ffmpeg mp3转pcm指令
- ie9兼容css正常吗,针对IE9的CSS兼容
- c++头文件iomanip.h中的setw、setprecision、setfill和setbase函数的使用
- 做锤子区块链手机的4种方法(行业观察)
热门文章
- SAP Spartacus ProductCarouselComponent
- Spring 基于注解(annotation)的配置之@Required注解
- SAP document builder功能一览
- 如何实现SAP UI5 Web Component React控件的加载效果
- how is opportunity detail page display first item by default
- SAP UI5 this.getList().getBinding(items).attachChange(this.handleMasterListChanged
- how is service url defined in configuration.js consumed
- SAP JAM的回收站
- SET UPDATE TASK LOCAL and commit session issue
- SAP UI5 应用 filter 功能不能正常工作时的单步调试方法