7.25 一:equals 二:instanceof 三:toString 四:日期时间Date 五:子类与父类之间的转换问题:六:Date类七:Math类 正则表达式

目录

一:equals

二:instanceof

三:toString

四:日期时间Date

五:子类与父类之间的转换问题:

https://blog.csdn.net/FengGLA/article/details/61502423

实例代码

六:Date类:https://www.runoob.com/java/java-date-time.html

七:Math类

1.Date 类提供两个构造函数来实例化 Date 对象。

2.Date对象创建以后,可以调用下面的方法。

3.获取当前日期时间(使用 Date 对象的 toString() 方法来打印当前日期和时间)

4.日期比较

5.格式化日期

日期和时间的格式化编码

使用printf格式化日期

1.子串截取:

2.检索indexOf

lastindexOf检索最后一次出现的地方

只取一个字符charAt

valueOf使用,将boolean类型转换为字符串类型

compareTo:按字典来比较字符串,结果有三个,>0 ,=0 ,<0

转换为字节数组

判断后缀 ,返回布尔类型

判断前缀,返回布尔类型

去掉首尾空格trim()方法

正则表达式:

判断当前字符串是否全是数字\d  加个*或者+号

编写手机号码规则,matches()方法


一:equals

 

二:instanceof

三:toString

四:日期时间Date

五:子类与父类之间的转换问题:

https://blog.csdn.net/FengGLA/article/details/61502423

实例代码

package com.api;

import com.api.DeepClone;

public class DeepClone implements Cloneable{
	private String titie;
	private double price;
	//obj为Object的一个实例
	
	private static final Object obj= new Object();
	
	public DeepClone() {
	}
	
	public DeepClone(String titie, double price) {
		super();
		this.titie = titie;
		this.price = price;
	}


	public String getTitie() {
		return titie;
	}
	public void setTitie(String titie) {
		this.titie = titie;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	
	@Override
	public boolean equals(Object obj) {
		//判断是否是同一对象
		if(this == obj) {
			return true;
		}
		//判断obj是否是DeepClone的一个实例,因为只有父类是子类的一个实例,父类才可以强制转换为子类.
		//当父类obj是DeepClone的一个实例时,
		if(obj instanceof DeepClone) {
			//进行类型强制转换,将obj强制转换为DeepClone子类
			DeepClone anotherC= (DeepClone)obj;
			//判断是否相等(通过父类调用子类变量的方法,那么要注意要将父类型变量和强制转换用括号括起来)
			//因为成员访问运算符.的优先级大于类型转换,所以要用括号括起来保证类型转换先于成员访问进行运算。 
			if(anotherC.titie.equals(this.getTitie())) {
				if(anotherC.price==this.price) {
					return true;
				}
			}
		}
		return false;
	}
	/*
	 * 重写toString()方法
	 * @see java.lang.Object#toString()
	 */
	@Override
		public String toString() {
			return "Course [titie=" + titie + ", price=" + price + "]";
		}
	/**
	 * 重写hashCode()方法
	 */
	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return this.titie.hashCode();
	}
	
	
	//实现深度复制
	@Override
	protected Object clone() throws CloneNotSupportedException {
		
		//super.clone()得到的是一个父类对象,将它强制转换为子类DeepClone,为实例dc
		DeepClone dc = (DeepClone) super.clone();
		dc.titie = new String(dc.titie);
		return dc;
	}
//	@Override
//	public int hashCode() {
//		final int prime = 31;
//		int result = 1;
//		long temp;
//		temp = Double.doubleToLongBits(price);
//		result = prime * result + (int) (temp ^ (temp >>> 32));
//		result = prime * result + ((titie == null) ? 0 : titie.hashCode());
//		return result;
//	}
//
//	@Override
//	public boolean equals(Object obj) {
//		if (this == obj)
//			return true;
//		if (obj == null)
//			return false;
//		if (getClass() != obj.getClass())
//			return false;
//		DeepClone other = (DeepClone) obj;
//		if (Double.doubleToLongBits(price) != Double.doubleToLongBits(other.price))
//			return false;
//		if (titie == null) {
//			if (other.titie != null)
//				return false;
//		} else if (!titie.equals(other.titie))
//			return false;
//		return true;
//	}

	public static void main(String[] args) throws CloneNotSupportedException {
		
		DeepClone c1 = new DeepClone("AA",80);
		DeepClone cloneC1 = (DeepClone) c1.clone();
		
		System.out.println(c1==cloneC1);
		System.out.println(c1.getClass() == cloneC1.getClass());
		System.out.println(c1.equals(cloneC1));
		System.out.println(c1);
		//判断title是否是公用的
		//结论:如果被克隆的对象里面由引用类型的属性,则是共同使用,即指向同一地址
		System.out.println("1"+(c1.titie==cloneC1.titie));
		System.out.println("2"+(c1.price == cloneC1.price));
		//按照惯例,此方法返回的对象应该独立于该对象(正被复制的对象)。
		//要获得此独立性,在 super.clone 返回对象之前,有必要对该对象的一个或多个字段进行修改。
		//这通常意味着要复制包含正在被复制对象的内部“深层结构”的所有可变对象,并使用对副本的引用替换对这些对象的引用。
		//如果一个类只包含基本字段或对不变对象的引用,那么通常不需要修改 super.clone 返回的对象中的字段。
		System.out.println("3"+(c1.obj == cloneC1.obj));
		
	}
}

六:Date类:https://www.runoob.com/java/java-date-time.html

 

七:Math类

1.Date 类提供两个构造函数来实例化 Date 对象。

第一个构造函数使用当前日期和时间来初始化对象。

Date( )

第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。

Date(long millisec)

2.Date对象创建以后,可以调用下面的方法。

序号方法和描述
1boolean after(Date date)
若当调用此方法的Date对象在指定日期之后返回true,否则返回false。
2boolean before(Date date)
若当调用此方法的Date对象在指定日期之前返回true,否则返回false。
3Object clone( )
返回此对象的副本。
4int compareTo(Date date)
比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
5int compareTo(Object obj)
若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。
6boolean equals(Object date)
当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。
7long getTime( )
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
8int hashCode( )
 返回此对象的哈希码值。
9void setTime(long time)
 
用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
10String toString( )
把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

 

3.获取当前日期时间(使用 Date 对象的 toString() 方法来打印当前日期和时间)

import java.util.Date;
  
public class DateDemo {
   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 使用 toString() 函数显示日期时间
       System.out.println(date.toString());
   }
}

4.日期比较

Java使用以下三种方法来比较两个日期:

  • 使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
  • 使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
  • 使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。

 

5.格式化日期

import  java.util.*;
import java.text.*;
 
public class DateDemo {
   public static void main(String args[]) {
 
      Date dNow = new Date( );
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
 
      System.out.println("当前时间为: " + ft.format(dNow));
   }
}

其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。

注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。

日期和时间的格式化编码

时间模式字符串用来指定时间格式。在此模式中,所有的 ASCII 字母被保留为模式字母,定义如下:

字母描述示例
G纪元标记AD
y四位年份2001
M月份July or 07
d一个月的日期10
h A.M./P.M. (1~12)格式小时12
H一天中的小时 (0~23)22
m分钟数30
s秒数55
S毫秒数234
E星期几Tuesday
D一年中的日子360
F一个月中第几周的周几2 (second Wed. in July)
w一年中第几周40
W一个月中第几周1
aA.M./P.M. 标记PM
k一天中的小时(1~24)24
K A.M./P.M. (0~11)格式小时10
z时区Eastern Standard Time
'文字定界符Delimiter
"单引号`

使用printf格式化日期

printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾。

转  换  符

说    明

示    例

c

包括全部日期和时间信息

星期六 十月 27 14:21:20 CST 2007

F

"年-月-日"格式

2007-10-27

D

"月/日/年"格式

10/27/07

r

"HH:MM:SS PM"格式(12时制)

02:25:51 下午

T

"HH:MM:SS"格式(24时制)

14:28:16

R

"HH:MM"格式(24时制)

14:28

 

 

 

字符串学习:(正则表达式)

1.子串截取:

"12345"

substring(int beginIndex) :从beginindex开始截取

substring(int beginIndex,)

左闭右开区间

2.检索indexOf

1为起始检索点

运行结果:

lastindexOf检索最后一次出现的地方

只取一个字符charAt

结果为:d

 

valueOf使用,将boolean类型转换为字符串类型

输出结果的false是字符串类型

compareTo:按字典来比较字符串,结果有三个,>0 ,=0 ,<0

结果为:0

结果为-1 ,因为a97 b98

转换为字节数组

打印的是个地址

 

判断后缀 ,返回布尔类型

判断前缀,返回布尔类型

 

去掉首尾空格trim()方法

结果

 

正则表达式:

Pattern类

编译,匹配,替换

判断当前字符串是否全是数字\d  加个*或者+号

//自定义规则
String reg = "\\d*";

//编写数字进行验证
String num="1234";

//把自己编写的规则填进去
System.out.println(num.matches(reg));

编写手机号码规则,matches()方法

 

结果为:false

捕获组数:一对()为一组,  (  (1)(2)(3)(4) 5)  一共五组

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一身正气z

打赏随心就好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值