Day15(java面向对象)学习记录(Object类&System类 日期相关类 包装类)

大纲

Day05(java面向对象)学习目标

【学习目标】理解、了解、应用、记忆

通过今天的学习,参训学员能够:(解释的时候说出二级目标的掌握程度)

  1. 【应用】Object类&System类
  1. 【应用】能够独立重写Object的toString和equals方法
  2. 【应用】能够独立测试System类的方法
  1. 【理解】日期相关类
  1. 【应用】能够独立测试Date类的构造方法
  2. 【应用】能够独立测试Date类的常用方法
  3. 【应用】能够利用DateFormat与SimpleDataForamt中的方法完成日期对象和日期                 

字符串相互转换

  1. 【应用】能够利用Calendar类中的方法获取日期和设置日期
  1. 【理解】包装类&正则表达式
  1. 【理解】能够阐述八大基本类型对应的包装类
  2. 【应用】能够阐述包装类的自动拆箱与自动装箱机制
  3. 【理解】能够理解正则表达式并且利用字符串的matches方法完成匹配

一:Object

toString()方法

  package com.itheima_01;
/*
 * String toString()  : 返回该对象的字符串表示
 * 		 return getClass().getName() + "@" + Integer.toHexString(hashCode());
 * 		 getClass():返回一个字节码对象
 * 		 Integer.toHexString():返回指定参数的十六进制字符串形式
 * 		 hashCode():返回该对象的哈希码值(内部地址)
 * 
 * 	
 * 
 * boolean equals(Object obj)  
 * 
 */
public class ObjectDemo {
	public static void main(String[] args) {
		Student s = new Student();
		s.name = "zhangsan";
		s.age = 18;
		System.out.println(s.toString());//com.itheima_01.Student@737951b0
		System.out.println(s);//说明我们输出一个对象就是默认输出这个对象的toString()方法
	}
}

class Student extends Object {
	String name;
	int age;
	/*
	public String toString() {
		return name + "@" + age;
	}
	*/
	
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}

equals()方法

package com.itheima_01;
import java.util.ArrayList;

/*
 * boolean equals(Object obj)  
 * 		使用==来比较两个对象是否相等,则比较地址值是否相等
 */
public class ObjectDemo2 {
	public static void main(String[] args) {
		Person p = new Person("zhangsan",18);
		Person p2 = new Person("zhangsan",19);
		
		//boolean flag = p.equals(p2);
		
		boolean flag = p.equals(new ArrayList());
		System.out.println(flag);
	}
}

class Person {
	String name;
	int age;
	
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}


	@Override
	public boolean equals(Object obj) {
		//提高效率
		if (this == obj)
			return true;
		
		if (obj == null)
			return false;
		//提高健壮性
		if (getClass() != obj.getClass())
			return false;
		
		//向下转型
		Person other = (Person) obj;
		
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	
	
	/*@Override
	public boolean equals(Object o) {
		//提高效率 当前对象和传递进来的对象地址值一样,则不用比较成员
		if(this == o) {
			return true;
		}
		
		//提高代码的健壮性
		if(this.getClass() != o.getClass()) {
			return false;
		}
		
		//向下转型
		Person other = (Person) o;
		
		if(!this.name.equals(other.name)) {
			return false;
		}
		
		if(this.age != other.age) {
			return false;
		}
		
		return true;
	}*/
}

上面两种通过generate tostring、generate hashcode and equals可以生成相应的东西

system 类

成员方法

 static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :

     从src源数组的srcPos索引开始,复制length个元素

从destPost位置开始将这些元素放至到dest数组中

  static long currentTimeMillis()

      返回以毫秒为单位的当前时间

  static void exit(int status)

      终止当前正在运行的 Java 虚拟机

  static void gc()  

运行垃圾回收器

二 日期相关类

Date() :创建的是一个表示当前系统时间的Date对象

Date(long date) :根据"指定时间"创建Date对象

package com.itheima_03;

import java.util.Date;

/*
 * Date: 表示特定的瞬间,精确到毫秒,他可以通过方法来设定自己所表示的时间,可以表示任意的时间
 * System.currentTimeMillis():返回的是当前系统时间,1970-1-1至今的毫秒数
 * 
 * 构造方法:
 * 		Date() :创建的是一个表示当前系统时间的Date对象
		Date(long date) :根据"指定时间"创建Date对象
 
 */
public class DateDemo {
	public static void main(String[] args) {
		//Date()
		//Date d = new Date();
		//System.out.println(d);//Thu Aug 26 14:17:28 CST 2049
		//System.out.println(d.toLocaleString());
		
		//Date(long date) 
		Date d2 = new Date(1000 * 60 * 60 * 24);//时区 有时差
		System.out.println(d2.toLocaleString());

	}
}

 DateFormat类 & SimpleDateFormat

package com.itheima_04;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * SimpleDateFormat:
 * 		格式化:
 * 			Date --- String
 * 			2049-8-26 2049年8月26日
 * 			String format(Date date) 
 * 		解析:
 * 			String --- Date
 * 			"2049-8-26"
 * 			Date parse(String source) 
 * 
 * 构造方法:
 * 		SimpleDateFormat() :使用默认的模式进行对象的构建
 * 		SimpleDateFormat(String pattern) :使用的指定的模式进行对象的构建
 * 
 * 注意:Exception in thread "main" java.text.ParseException: Unparseable date: "49年9月26日  下午1:29"
 * 	    解析的字符串,模式必须和构建对象的模式一样
 *
 */
public class SimpleDateFormatDemo {
	public static void main(String[] args) throws ParseException {
		//method();
		//method2();
		//使用指定的模式进行对象的构建
		//1999年9月1日 10:10:10
		//4个小姨2个大美眉和2个小弟弟
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		
		//格式化
		Date date = new Date();
		String s = sdf.format(date);
		System.out.println(s);//2049年08月26日 13:39:12

		
		//解析
		Date d = sdf.parse("2049年08月26日 13:39:12");
		System.out.println(d.toLocaleString());


		

	}

	private static void method2() throws ParseException {
		//使用指定的模式进行对象的构建
		//1999年9月1日
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
		//格式化
		Date date = new Date();
		String s = sdf.format(date);
		System.out.println(s);//2049年08月26日
		
		//解析
		Date d = sdf.parse("2049年08月26日");
		System.out.println(d.toLocaleString());
	}

	private static void method() throws ParseException {
		//使用默认模式进行对象的构建
		SimpleDateFormat sdf = new SimpleDateFormat();
		//创建日期对象
		Date date = new Date();
		
		//格式化 把日期对象转换成字符串
		String s = sdf.format(date);
		System.out.println(s);//49-8-26 下午1:29
		
		//解析 把字符串转换成日期对象
		Date d = sdf.parse("49年9月26日  下午1:29");
		System.out.println(d.toLocaleString());
	}

}

​​​​​​​Calendar类

Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。

package com.itheima_05;

import java.util.Calendar;

/*
 * Calendar:日历,提供了一些操作年月日时的方法
 * 
 * 获取
 * 修改
 * 添加
 * 
 * 
 */
public class CalendarDemo {
	public static void main(String[] args) {
		//static Calendar getInstance()  
		Calendar c = Calendar.getInstance();
		
		//void set(int field, int value) :把指定的字段修改成指定的值
		//c.set(Calendar.DAY_OF_MONTH, 20);
		
		//void add(int field, int amount): 在指定的字段上加上指定的值
		c.add(Calendar.DAY_OF_MONTH, -1);
		
		//int get(int field) // 返回给定日历字段的值
		//public static final int YEAR 1 
		//System.out.println(Calendar.YEAR);
		
		//int year = c.get(1);
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH) + 1;
		int day = c.get(Calendar.DAY_OF_MONTH);
		
		
		System.out.println(year + "年" + month + "月" + day + "日");
		 
	}
}

三 包装类&正则表达式

包装类的常用方法

package com.itheima_06;
/*
 * 需求:判断一个数是否符合int类型的范围
 * 由于基本数据类型只能做一些简单的操作和运算,所以Java为我们封装了基本数据类型,为每种基本数据类型提供了包装类
 * 包装类就是封装了基本数据类型的类,为我们提供了更多复杂的方法和一些变量
 * 
 * byte		Byte
 * short	Short
 * char		Character
 * int		Integer
 * long		Long
 * float	Float
 * double	Double
 * boolean	Boolean
 * 
 * Integer:
 * 		String --- int
 * 			方式1:int intValue()
 * 			方式2: static int parseInt(String s) 
 * 		int --- String
 * 			方式1: + ""
 * 			方式2:String toString()
 * 
 * 构造方法:
 * 		Integer(int value) 
 * 		Integer(String s) 

 
 */
public class IntegerDemo {
	public static void main(String[] args) {
		/*int n = 10;
		if(n >= Math.pow(-2, 31) && n <= Math.pow(2, 31) -1) {
			System.out.println("符合");
		}
		else {
			System.out.println("不符合");
		}*/
		
		 
		Integer i = new Integer("10");
		System.out.println(i);
		
	 
		int a = i.intValue();
		System.out.println(a + 10 );
		
 
		int b = Integer.parseInt("20");
		System.out.println(b + 30);
		
		
		 
		Integer i2 = new Integer(40);
		String s = i2.toString();
		System.out.println(s);
		
		 
		String s2 = Integer.toString(50);
		System.out.println(s2);
		
	}
}

包装类的自动装箱与拆箱

正则表达式(以后需要再看)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值