java中出生日期的类型_常用的Java API:Object类、日期时间类、StringBuilder类、包装类...

本文介绍了几个常用的JavaAPI,如Object类、日期时间类、StringBuilder类、包装类,这些在以后开发中会经常用到。

Object类

Java.lang.Object类是Java语言中的根类,即所有类的父类。它描述的所以方法子类都可以使用。子啊对象实例化的时候,最终找的父类就是Object.。

Object类包含11个成员方法,我这只列举两个常用的方法:- public String toString():返回该对象的字符串表示。

- public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。

1.toString方法

public String toString():返回该对象的字符串表示。

toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值,由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,一般都会重写它。

方法重写://重写toString方法

@Override

public String toString() {

return "Person{" +

"name='" + name + '\'' +

", age=" + age +

'}';

}

2.equals方法

public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。

调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的“相同”有默认和自定义两种方式。

如果没有覆盖重写equals方法,那么Object类中默认进行==运算符的对象地址比较,只要不是同一个对象,结果必然为false。

方法重写:/*

Object类的equals方法,默认比较的是两个对象的地址值

重写equals方法,比较两个对象的属性

问题:

隐含这一个多态,无法使用子类特有的内容(属性和方法)

解决:

可以使用向下转型(强制类型转换)把o类型转换为Person

*/

//重写equals方法

@Override

public boolean equals(Object o){

//增加一个判断,如果传递的参数是this本身,直接返回true

if(this==o) return true;

//增加一个判断,如果传递的参数是null,直接返回false

if(o==null) return false;

//增加一个判断,防止类型转换一次ClassCastException

if(o instanceof Person){

//使用向下转型,把o转换为Person类型

Person p=(Person)o;

//比较两个对象的属性,一个对象是this(p1),一个对象是p(o->p2)

boolean b=this.name.equals(p.name) && this.age==p.age;

return b;

}

//不是Person类型,返回false

return false;

日期时间类

1.Date类

java.util.Date 类表示特定的瞬间,精确到毫秒。

常用方法:public long getTime() 把日期对象转换成对应的时间毫秒值。

实例:/*

long getTime() 把日期转换为毫秒值(相当于System.currentTimeMillis()方法)

返回自1970年1月1日0点0分0秒 GMT以来此Date对象表示的毫秒数

*/

public static void demo3(){

Date date =new Date();

long time=date.getTime();

System.out.println(time);

}

//结果值

1533119389083

2.DateFormat类

java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

格式化:按照指定的格式,从Date对象转换为String对象。

解析:按照指定的格式,从String对象转换为Date对象。

常用两个方法:- public String format(Date date):将Date对象格式化为字符串。

- public Date parse(String source):将字符串解析为Date对象。

实例:package demo2_Date;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class Test02_Dateformat {

public static void main(String[] args) throws ParseException {

//将date对象格式化为字符串

find_Date01();

//将字符串解析为date对象

find_Date02();

}

//将字符串解析为date对象

public static void find_Date01() throws ParseException {

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

String str="2018年8月1日 7点12分23秒";

Date s=sdf.parse(str);

System.out.println(new Date());

}

//将date对象格式化为字符串

public static void find_Date02(){

SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");

String s=sdf.format(new Date());

System.out.println(s);

}

}

计算出生天数:package demo2_Date;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Scanner;

/*

计算出生天数

1.键盘录入出生日期,并转换date类型(毫秒值)

2.获取当前日期毫秒值

3.相减得到差值毫秒值,转换得到天数

*/

public class Test03_FindBirthday {

public static void main(String[] args) throws ParseException {

//录入出生日期

Scanner sc=new Scanner(System.in);

System.out.println("请输入你的出生日期:格式(yyyy-MM-dd)");

String bithDateString=sc.next();

//使用DateFormat类中的parse方法,把字符串类型的出生日期,转换成为date类型

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

Date birthDate=sdf.parse(bithDateString);

//把出生日期转换为毫秒值

long birthDateTime=birthDate.getTime();

long nowDateTime=new Date().getTime();

long daysTime=nowDateTime-birthDateTime;

//获取天数

System.out.println(daysTime/1000/60/60/24);

}

}

输出结果:请输入你的出生日期:格式(yyyy-MM-dd)

1996-05-24

8104

Process finished with exit code 0

3.Calendar类

概念:

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

获取方式:

Calendar为抽象类,通过静态方法创建并返回子类对象:public static Calendar getInstance():使用默认时区和语言环境获得一个日历

常用方法:Calendar常用方法有四个,主要掌握get方法和getTime方法- public int get(int field):返回给定日历字段的值。

- public void set(int field, int value):将给定的日历字段设置为给定值。

- public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。

- public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象

实例:package demo2_Date;

import java.util.Calendar;

import java.util.Date;

/*

四种常用成员方法:

- public int get(int field):返回给定日历字段的值。

- public void set(int field, int value):将给定的日历字段设置为给定值。

- public abstract void add(int field, int amount):根据日历的规则,

为给定的日历字段添加或减去指定的时间量。

- public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。

*/

public class Test04_Calendar {

public static void main(String[] args) {

// demo1();

// demo2();

demo3();

demo4();

}

/*

- public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。

*/

public static void demo4(){

Calendar cal=Calendar.getInstance();

Date date=cal.getTime();

System.out.println(date); //Wed Aug 01 19:20:51 CST 2018

}

/*

public abstract void add(int field, int amount):根据日历的规则,

为给定的日历字段添加或减去指定的时间量。

参数:设定指定的日历字段以及修改量

返回值:修改过后的日历字段代表的值

*/

public static void demo3(){

Calendar cal =Calendar.getInstance();

//加两年,减两月

cal.add(Calendar.YEAR,+2);

cal.add(Calendar.MONTH,-2);

int year =cal.get(Calendar.YEAR);

int month=cal.get(Calendar.MONTH)+1;

int day=cal.get(Calendar.DAY_OF_MONTH);

System.out.println(year+"年"+month+"月"+day+"日");// 2020年6月1日

}

/*

public void set(int field, int value):将给定的日历字段设置为给定值。

参数:设定指定的日历字段以及设置值

返回值:重新设定的日历字段代表的值

*/

public static void demo2(){

//创建Calendar对象

Calendar cal= Calendar.getInstance();

cal.set(Calendar.YEAR ,2020);

int year=cal.get(Calendar.YEAR);

System.out.println(year+"年"); //2020年

}

/*

public int get(int field):返回给定日历字段的值。

参数:传递指定的日历字段(YEAR,MONTH)

返回值:日历字段代表的具体的值

*/

public static void demo1(){

//创建Calendar对象

Calendar cal= Calendar.getInstance();

//获取年份

int year =cal.get(Calendar.YEAR);

//获取月份

int month=cal.get(Calendar.MONTH)+1;

int day=cal.get(Calendar.DAY_OF_MONTH);

System.out.println(year+"年"+month+"月"+day+"日"); //2018年8月1日

}

}

System类

1.currentTimeMillis方法

返回毫秒为单位的当前时间,常用来测试代码效率,例如循环代码。

2.arraycopy方法

将数组中指定的数据拷贝到另一个数组中。

实例:package demo3_System;

import java.util.Arrays;

/*

两个常用方法:

1.currentTimeMillis

2.arraycopy

*/

public class Test01_System {

public static void main(String[] args) {

demo1();

demo2();

}

//将数组中指定的数据拷贝到另一个数组中。

public static void demo2(){

int[] arr1={1,2,3,4,5};

int[] arr2={6,7,8,9,10};

System.arraycopy(arr1,0,arr2,0,3);

System.out.println(Arrays.toString(arr2)); //[1, 2, 3, 9, 10]

}

//返回以毫秒为单位的时间

public static void demo1(){

long begin=System.currentTimeMillis();

int sum=0;

for(int i=0;i<10000;i++){

System.out.println(i);

}

long end=System.currentTimeMillis();

System.out.println(end-begin); //205毫秒

}

StringBuilder类

1.概述

StringBuilder又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。原来StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容。原理如下图所示:(默认16字符空间,超过自动扩充)

2.常用方法:- public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。

- public String toString():将当前StringBuilder对象转换为String对象。

3.实例:package demo4_StringBufilder;

public class Test01_StringBuilder {

public static void main(String[] args) {

// demo1();

demo2();

}

//通过toString方法,StringBuilder对象将会转换为不可变的String对象

public static void demo2(){

//创建对象

StringBuilder str=new StringBuilder("会发光").append("的小太阳");

//调用方法

String atr1=str.toString();

System.out.println(atr1); //会发光的小太阳

}

//StringBuilder类的append方法,返回值是一个StringBuilder对象

public static void demo1(){

//创建对象

StringBuilder str=new StringBuilder();

//返回的是一个StringBuilder对象

StringBuilder str2= str.append("会发光的");

str2.append("小太阳");

System.out.println("str2: "+str2); //str2: 会发光的小太阳

//调用一个方法返回值是一个对象的时候,可以使用返回值对象继续调用方法

//链式编程

str2.append("会吸光").append("小月亮");

System.out.println("str2==: "+str2); //str2==: 会发光的小太阳会吸光小月亮

}

}

包装类

1.基本类型与对应的包装类基本类型--包装类基本类型对应包装类(位于java.lang包下)

byteByte

shortShort

intInteger

longLong

floatFloat

doubleDouble

chartCharter

booleanBoolean

2.拆箱与装箱

基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:

装箱:从基本类型转换为对应的包装类对象。

拆箱:从包装类对象转换为对应的基本类型。

3.自动拆箱与自动装箱

由于我们经常要做基本类型与包装类之间的转换,从Java 5(JDK 1.5)开始,基本类型与包装类的装箱、拆箱动作可以自动完成 ,就是不需要我们来操作了。没错,这就是自动装箱与自动箱,惊不惊喜,意不意外。

相关文章:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值