一、Obeject 类:
1.toString() 方法
public class Object {
public static void main(String[] args) {
Student s=new Student();
s.name="张三";
s.age=29;
//输出结果相同,说明我们输出一个对象就是输出它的toString()方法
System.out.println(s.toString());
System.out.println(s);
}
}
class Student{
String name;
int age;
//重写父类Object 的方法
@Override
public String toString() {
// return super.toString();
return "学生"+name+"年龄为"+age;
}
}
2.equals()方法
用于比较两个对象是否相同,是使用两个对象的内存地址在进行比较。
Object类中equals方法内部使用的就是==比较运算符
public boolean equals(Object obj) {
return (this == obj); }要比较两个对象的属性值是否相同,需要重写父类的equals()方法进行比较
public class Object {
public static void main(String[] args) {
Student student = new Student("张三",13);
Student student1 = new Student("李四",26);
boolean flag=student.equals(student1);
System.out.println(flag);
}
}
class Student extends Object {
String name;
int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(java.lang.Object obj) {
//提高效率,如果比较的对象一样,则直接返回true
if (this == obj)
return true;
//提高健壮性,比较类型是否相同
if (obj == null && obj.getClass() != getClass())
return false;
//向下转型
Student o = (Student) obj;
return o.name.equals(this.name) && o.age == this.age;//boolean类型
}
}
二、System类
System:包含一些有用的类字段和方法。它不能被实例化
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
static long currentTimeMillis()
static void exit(int status)
static void gc()
public class SystemDemo {
public static void main(String[] args) {
//method1();
//method2();
// method3();
new Demo();
System.gc();
}
private static void method1(){
for (int i = 0; i < 1000; i++) {
System.out.println(i);
if(i==100){
System.exit(0);
}
}
}
private static void method2() {
long start=System.currentTimeMillis();
for(int i=0;i<1000;i++){
System.out.println(i);
}
long end=System.currentTimeMillis();
System.out.println(end-start);
}
private static void method3(){
int[]arr={1,2,3,4,5};
int[]dest=new int[5];
System.arraycopy(arr,2,dest,0,3);
//从arr数组的索引为2的元素开始复制,复制到dest数组中,目标数组索引为4,复制3个元素
for (int i = 0; i < dest.length; i++) {
System.out.println(dest[i]);
}
}
}
class Demo{
@Override
protected void finalize() throws Throwable {
System.out.println("我被回收了");
}
}
三、Date类
Date类的概述:
类 Date 表示特定的瞬间,精确到毫秒。构造方法:
Date() :创建的是一个表示当前系统时间的Date对象
Date(long date) :根据"指定时间"创建Date对象
成员方法:
public long getTime(): 获取一个日期对象对象毫秒值
public void setTime(long time): 给一个日期对象设置上指定的毫秒值 例:date.setTime(1000 * 60 * 60) ;
public class DateDemo{
public static void main(String[] args) {
//返回系统当前时间
/* Date date = new Date();
System.out.println(date);//Wed Oct 23 21:23:41 CST 2019
Date date1 = new Date(1000 * 60 * 60 * 24);
System.out.println(date1);*///时区有时差 Fri Jan 02 08:00:00 CST 1970
Date d = new Date();
d.setTime(1000 * 60 * 60 * 24);
System.out.println(d.getTime());//86400000
System.out.println(d.toLocaleString());//1970年1月2日 上午8:00:00
System.out.println(d);//Fri Jan 02 08:00:00 CST 1970
}
}
四、SimpleDateFormat类
要格式化一个当前语言环境下的日期也就是日期 -> 文本),要通过下面的方法来完成。DateFormat是抽象类,我们需要使用其子类SimpleDateFormat来创建对象。
SimpleDateFormat:
SimpleDateFormat: 可以把一个日期对象格式化成一个文本(字符串) , 也可以把一个日期字符串解析成一个日期对象
- 构造方法:
- public SimpleDateFormat():使用默认的模式来创建一个SimpleDateFormat对象
- public SimpleDateFormat(String pattern):使用指定的模式(规则比如yyyy:MM:dd HH:mm:ss)来创建一个SimpleDateFormat对象
- 规则的定义
- y 年
- M 月
- d 天
- H 时
- m 分
- s 秒
- 成员方法:
- public String format(Date date): 把一个日期对象格式化成一个字符串
- public Date parse(String dateStr): 把一个日期字符串解析成一个日期对象 注意要以指定格式解析
* 格式化:
* Date — String
* 2049-8-26 2049年8月26日
* String format(Date date)
* 解析:
* String — Date
* “2049-8-26”
* Date parse(String source)
*
注意:Exception in thread “main” java.text.ParseException: Unparseable date: “49年9月26日 下午1:29” 解析的字符串,模式必须和构建对象的模式一样
package lianxi.date.demo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) throws ParseException {
method11();//默认模式
//method22();指定模式
}
private static void method22() throws ParseException {
//使用指定模式进行对象的创建
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
//创建日期对象
Date date= new Date();
//格式化:String-->Date
String s=sdf.format(date);
System.out.println(s);//2019年10月23日 22:17:15
//解析 Date-->String 要抛出异常
Date d =sdf.parse("2049年08月24日 13:08:33");
System.out.println(d);//Tue Aug 24 13:08:33 CST 2049
}
private static void method11() throws ParseException {
//默认格式进行对象的创建
SimpleDateFormat sdf = new SimpleDateFormat();
//创建日期对象
Date date = new Date();
//格式化
String s=sdf.format(date);
System.out.println(s);//2019/10/23 下午10:23
//解析
Date d=sdf.parse("2019/10/23 下午10:23");
System.out.println(d);
}
}
五、Calendar类
Calendar类的概述
Calendar 类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象
它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR
等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
注意:month是从0开始的,而月份是从1开始的,所以month需要加一
public class CalendarTest {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
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+"日");
//在指定的字段上加上指定的值
c.add(Calendar.DAY_OF_MONTH,2);
int day1=c.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+month+"月"+day1+"日");
//把指定的字段修改为指定的值
c.set(Calendar.YEAR,2000);
int year1=c.get(Calendar.YEAR);
System.out.println(year1+"年"+month+"月"+day+"日");
}
}