Java内容梳理(13)API学习(1)时间日期类

1、Object类

(1)Object类的基本介绍

Object类是所有类的父类(包括自己定义的类),一个类若没有明确编写extends时,默认继承Object。java.lang.Object(lang包默认被导入)

(2)toString()方法

1、作用:将当前对象转化成字符串形式

2、用法:在许多情况下会默认被调用

System.out.println(obj);其实是:System.out.println(obj.toString());

String str = "hello"+obj;实是String str = "hello" + obj.toString();

3、重写toString()方法

若要显示某个类的对象所有属性,需要在类中重写toString方法

public String toString(){

return name+age;

}

(3)equals()方法

1、比较的原理:equals默认采用==比较,比较的是变量的值;基本数据类型即是数据本身;引用数据类型即是地址

2、在比较对象是否相等时,需要重写类中的equals方法;重写逻辑一般如下

若要比较当前Person对象和一个对象是否相等 ,是根据其中属性name是否相等判别,则:

public boolean equals(Object obj){

if(obj == null) return false;

if(this == obj) return true;//这种情况下,两个引用指向的是同一个对象

if( !( obj instanceof Person ) ) return false;

Person p = (Person)obj;

if( this.name.equals( p.name ) ) return true;

return false;

}

 

2、包装类

(1)包装类的基本介绍

每一种基本数据类型都对应一种引用类型;基本数据类型可以直接运算

(2)包装类的对应

byte(关键字) ---- Byte(类)Byte类型的对象就是一个byte型数据

short ---- Short

int ---- Integer

long ---- Long

float ---- Float

double ---- Double

boolean ---- Boolean

char ---- Character

(3)装箱和拆箱

JDK1.5及其以上版本:自动装箱和自动拆箱

自动装箱:自动将基本类型转换成它的包装类型,如 Integer n1 = 1;

自动拆箱:自动的将包装类转换成基本类型,如  int n2 = n1;

 

3、时间日期类

(1)java.lang.System类

获取当前时刻:获取当前系统时间距1970-1-1 0:0:0之间的毫秒数

long nowTime = System.currentTimeMillis();

long nowTime = System.nanoTime();//单位更小

作用1:获取一段代码的执行时间(开始和结束的时间差),如下:

long startTime = System.nanoTime();

System.out.println( "你好帅" );

long endTime = System.nanoTime();

System.out.println( endTime - startTime );

作用2:让某段代码执行指定的时间后结束

//让下面代码执行2s后结束

long nowTime = System.currentTimeMillis();

startTime = System.currentTimeMillis();

while( true ){

nowTime = System.currentTimeMillis();

if( nowTime - startTime > 2 * 1000 )

break;

System.out.println( "继续执行逻辑" );

}

(2)java.util.Date类

获得date对象所表示的时间距离1970-1-1 0:0:0的毫秒数

Date date = new Date();//获得当前系统时间的date对象

long time = date.getTime();

(3)java.text.SimpleDateFormat类

作用1:将Date型转化成String型并按照某种日常格式输出

Date date = new Date(); //创建当前时间对象

SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );

String str = sdf.format( date );//按照给定格式转化成字符串

System.out.println( str );

作用2:将String类型转化成Date(解析格式必须和字符串的时间格式一致,否则报错)

Date date = new Date(); //创建当前时间对象

String dateStr = "2014-08-11 05:48";

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");

date = sdf1.parse(dateStr);

System.out.println( date );

(4)java.util.Calendar类

注意:Calendar是抽象类,不能创建对象   需要使用静态方法获取当前系统时间的日历对象:

Calendar calendar = Calendar.getInstance();

常用方法:

获取指定的时间分量: 如:calendar.get( Calendar.YEAR )获得当前系统的年份

int get( int )://该类中有get方法,返回值是int

Calendar.YEAR

Calendar.MONTH

Calendar.DATE

Calendar.HOUR

Calendar.MINUTE

Calendar.SECOND

set( int field, int value) //  设置指定的时间分量的值:  前int是分量,后int是值

add(int field, int amount) //在指定的分量上,进行加法运行, 超出分量最大值时,自动进位

int getActualMaximum(int field) //获取当前时间的指定分量上的可能的最大值

类型转换:

1.Calendar --> Date

Date date = new Date(); //创建当前时间对象

date = calendar.getTime()

2.Date --> Calendar

Date date = new Date(); //创建当前时间对象

Calendar calendar = Calendar.getInstance();//获取日历对象

calendar.setTime(date); //转化

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

String str = sdf.format( calendar.getTime() );//先转化成Date

System.out.println(str);//再转化成固定格式的字符串输出

(5)举例:万年历

package calendar;

import java.util.Calendar;
import java.util.Scanner;


public class PerCalendar {
	/**设置一个日历对象,接收用户端输入的年月*/
	private Calendar c =  Calendar.getInstance();
	
	/**
	 * 根据输入的年月显示日历
	 */
	public int show(int year,int month) {
		
		c.set(year, month-1, 1);
		/**
		 * 计算这个月有多少天  
		 *  c.DAY_OF_MONTH表示当天在当月内的表示方式,然后得到这个值的最大值,也就是当月的最大天数
		 */
		int DAYS_OF_MONTH = c.getActualMaximum(c.DAY_OF_MONTH);
		
		/**
		 * 这个月的第一天是星期几
		 * c.DAY_OF_WEEK表示当天在周内的表示方式,然后得到这个值
		 * 注意:周1到周日返回2345671
		 */
		int DAY_OF_WEEK = c.get(c.DAY_OF_WEEK);
		
		System.out.println("========="+year+"年"+month+"月"+"=========");
		System.out.println("日\t一\t二\t三\t四\t五\t六");
		
		int i;
		for(i=1;i<DAY_OF_WEEK;i++) {
			System.out.print("\t");
		}
		i--;
		for(int j=1;j<=DAYS_OF_MONTH;j++) {
			System.out.print(j+"\t");
			i++;
			if(i%7==0) {
				System.out.println();
			}
		}
		System.out.println();
		System.out.println("============================");	
		System.out.println("1.上一页\t2.下一页");
		Scanner input = new Scanner(System.in);
		return input.nextInt();
		
		
		
	}
	
}
package calendar;

import java.util.Scanner;

public class Run {
	
	/**
	 * 输入年月,能正确显示日历
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入年份:");
		int year = scan.nextInt();
		System.out.println("请输入月份:");
		int month = scan.nextInt();
		PerCalendar c = new PerCalendar();
		int res = c.show(year,month);
		if(res == 1) {
			c.show(year,month-1);
		}else if(res == 2){
			c.show(year,month+1);
		}else {
			System.out.println("error");
		}
		
	}
}

结果:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值