이 글에서는 향후 개발에서 자주 사용될 Object 클래스, 날짜 및 시간 클래스, StringBuilder 클래스, 패키징 클래스 등 일반적으로 사용되는 여러 Java API를 소개합니다.
객체 클래스
Java.lang.Object 클래스는 Java 언어의 루트 클래스로 모든 클래스의 상위 클래스입니다. 여기에 설명된 모든 메서드는 하위 클래스에서 사용할 수 있습니다. 객체가 인스턴스화되면 객체가 찾는 최종 상위 클래스는 Object입니다.
Object 클래스에는 11개의 멤버 메서드가 포함되어 있습니다. 일반적으로 사용되는 두 가지 메서드만 나열하겠습니다.
- public String toString():返回该对象的字符串表示。 - public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。
public String toString()
: 개체의 문자열 표현을 반환합니다. public String toString()
:返回该对象的字符串表示。
toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值,由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,一般都会重写它。
方法重写:
//重写toString方法 @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; }
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;
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
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
概念:
java.util.Calendar
public static Calendar getInstance():使用默认时区和语言环境获得一个日历
public boolean equals(Object obj)
: 다른 개체가 이 개체와 "동일"한지 여부를 나타냅니다. 멤버 메소드 equals를 호출하고 매개변수를 다른 객체로 지정하면 두 객체가 동일한지 확인할 수 있습니다. 여기에는 기본과 사용자 정의라는 두 가지 "동일" 방법이 있습니다. equals 메서드가 재정의되지 않으면 ==
연산자의 개체 주소 비교는 기본적으로 Object 클래스에서 수행됩니다. 동일한 개체가 아닌 한 결과는 false여야 합니다. . 메서드 재정의: - 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日 } }
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毫秒 }
java.text.DateFormat
는 날짜/시간 형식 지정 하위 클래스의 추상 클래스입니다. 이 클래스를 사용하면 도움이 될 수 있습니다. 날짜와 텍스트 사이의 변환을 완료합니다. 즉, Date 객체와 String 객체 사이를 앞뒤로 변환할 수 있습니다. Formatting
: 지정된 형식에 따라 Date 객체를 String 객체로 변환합니다.생년월일 계산: | rrreee출력 결과: | rrreee3.Calendar 클래스
개념: |
java.util.Calendar Date 뒤에 나타나며 많은 Date 메서드를 대체하는 달력 클래스입니다. 이 클래스는 쉽게 액세스할 수 있도록 가능한 모든 시간 정보를 정적 멤버 변수로 캡슐화합니다. Calendar 클래스는 다양한 시간 속성을 얻는데 편리합니다. |
Calendar는 정적 메서드를 통해 하위 클래스 객체를 생성하고 반환하는 추상 클래스입니다. | rrreee공통 메서드: Calendar에는 네 가지 일반적인 메서드가 있으며 주로 get 메서드와 getTime 메서드입니다. | rrreee
시스템 클래스 | 1.currentTimeMillis 메소드 |
2.arraycopy method | 배열에 지정된 데이터를 다른 배열에 복사합니다. |
StringBuilder 클래스 | 1. 개요 |
2. 일반적으로 사용되는 방법: | rrreee3. 예: | rrreee
1. | 기본 유형--패키징 클래스 |
기본 유형 | 해당 패키징 클래스(java.lang 패키지에 위치) |