本文介绍了几个常用的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包下) |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
chart | Charter |
boolean | Boolean |
2.拆箱与装箱
基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:
-
装箱:从基本类型转换为对应的包装类对象。
-
拆箱:从包装类对象转换为对应的基本类型。
3.自动拆箱与自动装箱
由于我们经常要做基本类型与包装类之间的转换,从Java 5(JDK 1.5)开始,基本类型与包装类的装箱、拆箱动作可以自动完成 ,就是不需要我们来操作了。没错,这就是自动装箱与自动箱,惊不惊喜,意不意外。
今天的文章Java常用的几个API—-Object类、日期时间类、StringBuilder类、包装类分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/15385.html