Day17 包装类 日期

Day17 包装类 日期

包装类:八大基本类型的包装

指的是将八大基本类型进行了包装,将基本类型转换成了引用类型.同时具备了面向对象的特点

八大基本类型的包装类:

int-Integer

byte-Byte

short-Short

double-Double

float-Float

long-Long

char-Character

boolean-Boolean

例如:将int转换成Integer

​ 将Integer转换成int

int类型怎么转换成Integer类型:

  1. 通过构造方法来转换

​ - Integer i =new Integer(10);

  1. 建议使用Integer中的静态方法:valueOf()(建议使用)

为什么建议使用valueOf来转换?

因为valueOf这个方法就相当于是字符串中的常量池,也维护了一些可重用的数值对象,但是这个数值是有范围的,只要byte的取值范围之内,所有的数值是用的同一个,一旦超出byte范围,就会生成新的对象

字符串如何转换成int类型

  1. Integer.valueOf(String str):

将str字符串转换成Integer类型

(注意:所转的str字符串必须是一个可以转的数字类字符串)

  1. Integer.parseInt(String str):

总结:

将int转换成Integer类型:

1.构造方法

2.valueOf()

将Integer转换成int类型:

intValue()

如何将字符串转换成int类型

Integer.valueOf()

Integer.parseInt()

如何将int转成字符串类型:

toString()

java的核心:面向对象(针对引用类型)

70%将字符串转换成整数类型

枚举类型:enum

InterDemo1

public class InterDemo1 {
      public static void main(String[] args) {
		//xuanZe(Week.MON);    	  
    	 // int a=10;
    	  //String str="123"
    	  //Integer i=new Integer(10);//自动装箱 
    	  Integer i =10;//自动装箱
    	  int a=i;//自动拆箱
    	  Integer i3=new Integer(10);
    	  Integer i4=new Integer(10);
    	  Integer i5=Integer.valueOf(127);
    	  Integer i6=Integer.valueOf(127); 
    	  System.out.println(i3==i4);//false  因为已经赋给i变成引用类型 比较地址
    	  System.out.println(i5==i6);//true    没有超byte的最大值127
    	  Integer i7=Integer.valueOf(128);
    	  Integer i8=Integer.valueOf(128);
    	  System.out.println(i7==i8);//false    超了byte的最大值 会新生成对象0
    	  
    	  
    	  String str="123";
    	  //自动装箱,相当于下面两段段代码的结合
    	  int b=Integer.valueOf(str);
    	 // Integer a= Integer.valueOf(str);
    	  /*
    	   * intValue():是将Integer类型转换成int类型
    	   */
    	 //int b=a.intValue();
    	  System.out.println(b+1);//124
    	  
    	  str="456";
    	  b=Integer.parseInt(str);
    	  System.out.println(b+1);//457
	}
      
      public static void xuanZe(Week week) {
		switch (week) {
		case MON:
			System.out.println("周一");
			break;
		case TUE:
			System.out.println("周二");
			break;
		case WED:
			System.out.println("周三");
			break;
		case THU:
			System.out.println("周四");
			break;
		case FRI:
			System.out.println("周五");
			break;

		default:
			break;
		}
	}
}

Week

public enum Week {
     MON,TUE,WED,THU,FRI
}

日期

日期操作:Date类型

getTime():获取当前date表示的时间的毫秒值

  • 将Date转换成毫秒值(long)

setTime(long time):将毫秒值设置成Date类型

  • 将毫秒值(long)转换成Date类型

calendar日期操作:主要是用来设置时间分量的

set():设置时间分量的方法

get():获取时间分量的方法

add():增加时间分量

SimpleDateFormat

String和Date类型进行转换

String format(Date date):将Date类型转换成String类型

Date parse(String str):将String类型转换成Date类型

Date<–>Calendar

Date<–>String

SimpleDateFormat的构造方法是用来设置要转换成为的日期格式

yyyy:表示年份的格式

MM:表示的是月份

dd:表示的是月中天

DD:表示的是年中天

HH:表示的是24小时制的小时

hh:表示的是12小时制的小时

mm:表示的是分钟

ss:表示的是秒

总结:Date Calendar SimpleDateFormat

由于Date只能转换成毫秒值来计算,而Calendar提供了几个方法可以用来快速设置和获取时间分量,但是Date和Calendar直接显示的日期格式又不太友好,所以又有了SimpleDateFormat来转换成我们日常习惯的日期格式(字符串日期格式)

Date:getTime() setTime()

Calendar:getTime() setTime()

SimpleDataFormat:format() parse()

DateDemo1

import java.util.Date;

/**
 * 日期操作:Date类型
 * 
 *
 */
public class DateDemo1 {
   public static void main(String[] args) {
	Date date= new Date();
	System.out.println(date);
	/**
	 * getTime():获取当前date表示的时间的毫秒值
	 * -将Date转换成毫秒值(long)
	 * setTime(long time):将毫秒值设置成Date类型
	 * -将毫秒值(long)转换成Date类型
	 */
	long time=date.getTime();
	System.out.println(time);//1626838717782
	
	//计算2天11小时之后的日期是什么?
	long l=2l*24*60*60*1000+11*60*60*1000;
	System.out.println(l);
	long time2=time+l;
	date.setTime(time2);
	System.out.println(date);
 }
}

CalendarDemo1

import java.util.Calendar;
import java.util.Date;

public class CalendarDemo1 {
   public static void main(String[] args) {
	   /**
	    * 因为Calendar是一个抽象类,不能直接new对象,所以
	    * Calendar提供一个静态方法给我们创建对象
	    * 
	    * 由于Calendar方便操作日期,但是查看起来不方便,格式很长,很乱
	    * 所以Calendar也提供了两个方法用来和Date类型之间进行转换
	    * getTime()
	    * setTime()
	    * 
	    */
	   Calendar c=Calendar.getInstance();
	   System.out.println(c);
	   Date date=c.getTime();
	   System.out.println(date);
	   
	   //2008年08月08日08时08分08秒
	   c.set(Calendar.YEAR,2008);//设置年份
	   /**
	    * 注意月份是从0开始算的,所以8月我们应该设置成为数字7
	    * 2.星期是从周天开始算的一周的第一天,所以设置星期的时候
	    * 我们也应该将对应星期数值减一
	    */
	   c.set(Calendar.MONTH, 7);//设置月
	   /**
	    * DAY_OF_MONTH:月中天(一个月中的第几天)
	    * DAY_OF_YEAR:(一年当中的第几天)
	    * DAY_OF_WEEK:(一周中的第几天)
	    */
	   c.set(Calendar.DAY_OF_MONTH,8);//设置日
	   /**
	    * HOUR:12小时制
	    * HOUR_OF_DAY:24小时制
	    */
	   c.set(Calendar.HOUR_OF_DAY,8);//时
	   c.set(Calendar.MINUTE,8);//分
	   c.set(Calendar.SECOND,8);//秒
	   
	   //set有重载的方法,可以一次性设置所有的时间分量
	   //c.set(2008,7,8,8,8,8);
	   date=c.getTime();
	   System.out.println(date);
	   Date d=new Date();
	   c.setTime(d);
	   System.out.println(d);
	   
	   int year=c.get(Calendar.YEAR);
	   System.out.println(year);//获取年份
	   int month=c.get(Calendar.MONTH);//获取月份
	   System.out.println(month);//6
	   int day=c.get(Calendar.DAY_OF_WEEK);//获取周十天
	   System.out.println(day);//4
	   /**
	    * 查看1999年7月12日是周几?
	    */
	   
   }
}

CalendarDemo1L1

import java.util.Calendar;
import java.util.Date;

public class CalendarDemo1L1 {
    public static void main(String[] args) {
    	Calendar c=Calendar.getInstance();
		/*c.set(1999,6,12);
		int week=c.get(Calendar.DAY_OF_WEEK);
		System.out.println(week-1);*/
    	 
    	 /**
    	  * 查看1997年7月7日,2年2个月30天以前,是周几
    	  */
    	 c.set(1997,6,7);
    	 Date date=c.getTime();//将1997年7月7日的日期转换成Date()类型	
    	 System.out.println(date);
    	 long time=date.getTime();//将Date类型转换成毫秒值
    	 time=time-((365l*24*60*60*1000*2l)+(2*30*24*60*60*1000)+(31*24*60*60*1000));
    	 date.setTime(time);//将计算完之后的毫秒值转换成Date类型
    	 System.out.println(date);
    	 c.setTime(date);//将Date类型转换成Calendar
    	 int day=c.get(Calendar.DAY_OF_WEEK);//通过Calendar直接获取周中天
    	 System.out.println(day-1);
    	 
    	 /**
    	  * add():增加时间分量
    	  */
    	 c.set(1997, 6,7);
    	 c.add(Calendar.YEAR, -2);
    	 c.add(Calendar.MONTH, -2);
    	 c.add(Calendar.DAY_OF_MONTH, -30);
    	 day=c.get(Calendar.DAY_OF_WEEK);
    	 System.out.println(day-1);
    	
	}
}

SimpleDateFormatDemo1

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

public class SimpleDateFormatDemo1 {
    public static void main(String[] args) {
    	Date date=new Date();
    	
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		String str=sdf.format(date);
		System.out.println(str);//2021-07-21

		//如何将已知的一个字符串 2008-08-08转换成Date类型
		//str="2008-08-08";
		try {
			date = sdf.parse(str);
			System.out.println(date);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		/**
		 * 在控制台输入生日日期,例如:1996-06-05
		 * 计算出带目前为止活了多少天
		 */
	   Scanner sc=new Scanner(System.in);
	   
	   System.out.println("请输入生日日期");
	   SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");
	   String birth=sc.next();
	   
	   try {
		    Date date1=new Date();
			date1 = sdf2.parse(birth);
			long time1=date1.getTime(); 
			Date date2=new Date();
			long time2=date2.getTime();
			
			long time3=time2-time1;
			long day=time3/1000/60/60/24;
			System.out.println("活到现在为"+day+"天");
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}   
	    /**
	     * 1.已知某酸奶的生产日期:手动在控制台输入
	     *  酸奶的包质值:手动在控制台输入
	     *  计算酸奶的促销日期
	     *  如果酸奶的促销日期是过期日期的前一周的周三
	     *  问该酸奶的促销日期是多少
	     *  
	     *  2.计算出2009年8月9日的前3年4个月14天 是周几?
	     *  
	     *  3.在控制台输入一个身份证号码,计算出这个人
	     *  出生那天是周几?
	     */
       
	}
}
上一篇:Java学习day17


下一篇:CODEFORCES Day17