对象的克隆

对象的克隆就是复制的操作,和之前学习的引用传递不同 在引用传递中一个 实例 可以有多个名字 但是多个名字都指向一个对象

克隆出来的对象 和之前的对象 没有任何的引用关系

想要实现对象的克隆,首先克隆对象的类,必须实现一个接口: 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复习(对象的克隆、正则表达式)相关推荐

  1. JAVA之对象的克隆

    JAVA之对象的克隆 1.为什么要克隆? ①方便,克隆的对象可能包含一些已经修改过的属性,而new出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的"状态" ...

  2. Java实现对象的克隆方式

    Java实现对象克隆的方法 1.Java实现克隆有两种形式 浅拷贝 深拷贝 在Java中吗,我们说两个对象是否相等通常有两层含义: 对象的内容是否相等,通常使用到对象的 equals(Object o ...

  3. Java实现对象深度克隆

    两种方式:   1). 实现Cloneable接口并重写Object类中的clone()方法:   2). 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆 ...

  4. Java复习-对象的回收与垃圾的回收

    Java的回收机制很神奇,垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源(比如数据库的连接,网络IO的连接) 程序无法精确控制垃圾的回收运行,垃圾回收会在适合的时候进行,当对象永久性的失去 ...

  5. Java中对象的深复制(深克隆)和浅复制(浅克隆)介绍

    1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵ ...

  6. 【JAVA零基础入门系列】Day14 Java对象的克隆

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  7. Java提高—对象克隆(复制)/对象属性拷贝

    对象克隆(复制)假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byt ...

  8. java浅度克隆_java对象 深度克隆(不实现Cloneable接口)和浅度克隆

    为什么需要克隆: 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说 ...

  9. (Java)对象克隆技术

    在 Java 中支持对象的克隆操作,直接使用 Object 类中的 clone() 方法即可,方法定义如下: protected Object clone() throws CloneNotSuppo ...

最新文章

  1. 《卫报》长文解读机器的崛起:人类越来越无法掌控它们
  2. 四种常见的系统架构,目前你处于哪个阶段呢?
  3. python2基础教程廖雪峰云-Python基础
  4. Windows环境下32位汇编程序设计C版code--第五章(三)
  5. service能去调另外一个service吗_kubernetes的service和pod是如何关联的?
  6. bootstrap-导航(基础样式)
  7. mysql 端口time_wait_linux上大量tcp端口处于TIME_WAIT的问题
  8. 二级vb笔试题库__全国计算机等级考试,2012年9月全国计算机二级VB笔试标准预测试卷试题六...
  9. linux服务器操作系统日志都有哪些,Linux操作系统服务器日志管理详解
  10. 创建数据库python: can‘t open file ‘manage.py‘: [Errno 2] No such file or directory报错
  11. 爬虫笔记(十四)——BeautifulSoup库
  12. strcmp() Anyone? UVA - 11732 左孩子右兄弟Trie/计数
  13. 【PostgreSQL-9.6.3】psql常用命令
  14. 水域大小 Java_我的世界:Java版开发者们畅聊水域更新
  15. python语音合成并播放_Python:TTS语音合成技术,市场各大平台对比以及实现
  16. latex插图编号_LaTex技巧[26]:Latex重新为图片编号
  17. ffmpeg mp3转pcm指令
  18. ie9兼容css正常吗,针对IE9的CSS兼容
  19. c++头文件iomanip.h中的setw、setprecision、setfill和setbase函数的使用
  20. 做锤子区块链手机的4种方法(行业观察)

热门文章

  1. SAP Spartacus ProductCarouselComponent
  2. Spring 基于注解(annotation)的配置之@Required注解
  3. SAP document builder功能一览
  4. 如何实现SAP UI5 Web Component React控件的加载效果
  5. how is opportunity detail page display first item by default
  6. SAP UI5 this.getList().getBinding(items).attachChange(this.handleMasterListChanged
  7. how is service url defined in configuration.js consumed
  8. SAP JAM的回收站
  9. SET UPDATE TASK LOCAL and commit session issue
  10. SAP UI5 应用 filter 功能不能正常工作时的单步调试方法