01-Object类/常用API
一、Object类
1.1、概述:java.lang.Object 类是 Java 语言中的根类,即所有类的父类。
1.2、toString方法
返回该对象的字符串表示。
默认内容:对象类型+@+内存地址值
开发中,常需按照对象的属性得到相应的字符串表现形式。此时需要重写该方法==>
覆盖重写:
如果不使用toString方法的默认行为,则需要对它进行覆盖重写。
1.3、equals方法
默认地址比较:未覆盖重写,Object 类默认进行 == 运算符的对象地址比较。即比较是否为同一个对象。
对象内容比较:可以覆盖重写equals方法。
1.4、Objects类
JDK1.7后添加了 Objects 工具类。提供了一些方法来操作对象,由一些静态的实用方法组成,这些方法是:
null-save(空指针安全的)
null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。
在比较对象的时候,Object的equals方法,容易抛出空指针异常 (obj.equals(anObj)-->obj可能为null) 。Objects中进行了优化==>
public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); }
二、时间日期类
2.1、Date类
概述:
java.util.Date 类表示特定的瞬间,精确到毫秒。
构造方法:
public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。==》表示当前系统时间的毫秒值。
public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。
tips:由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒。
System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970
tips:在使用println方法时,会自动调用Date类中的toString方法。Date 类对 Object 类中的toString方法进行了覆盖重写,所以结果为指定格式的字符串。
常用方法:
public long getTime()把日期对象转换成对应的时间毫秒值。(long类型)
2.2、DataFormat类:
java.text.DateFormat 是日期/时间格式化子类的抽象类,可完成日期和文本之间的转换。
格式化:按照指定的格式,从Date对象转换为String对象。
解析:按照指定的格式,从String对象转换为Date对象。
构造方法:
DateFormat为抽象类,不能直接使用。使用子类:java.text.SimpleDateFormat
这个类需要一个模式(格式)来制定格式化或解析的标准。
public SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
参数:pattern时一个字符串,是日期时间的自定义格式。
2.4、calendar类
概念:
java.util.Calendar 是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装成静态成员方法。
Calendar静态方法:
public static Calendar getInstance()使用默认时区和语言环境获得一个日历
常用的方法:
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对象。
Calendar的字段:
YEAR 年
MONTH 月(从0开始,可以+1使用)
DAY_OF_MONTH 月中的天(几号)
HOUR 时(12小时制)
HOUR_OF_DAY 时(24小时制)
MINUTE 分
SECOND 秒
DAY_OF_WEEK 周中的天(周几,周日为1,可以-1使用)
get/set方法:
用来获取/设置指定字段的值。
add方法:
用来指定日历字段的值进行加减操作。
getTime方法:
Calendar中的getTime方法并不是获取毫秒值时刻,而是拿到对应的Date对象。
三、System类
java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。
常用方法:
public static long currentTimeMillis():返回以毫秒为单位的当前时间。
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。
3.1、currentTimeMillis方法:
获取到时当前系统时间与1970.01.01 00:00点之间的好好秒差值。
3.2arrayCopy方法:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。
数组拷贝是系统级的,性能很高。
四、StringBuilder类
4.1、字符串拼接问题:
由于String类对象内容不可改变,所以当进行字符串拼接时,就会在内存中创建一个新的对象 。
API中的描述:
字符串是常量,它的值在创建后不能被修改。
4.2、StringBuilder概述:
java.lang.StringBuilder 又称为可变字符序列。是一个类似于String的字符串缓冲区。
stringBuilder是个字符串缓冲区,即它是一个容器,能够自动扩容。 --初始容量16
继承extends AbstractStringBuilder ==>设计抽象类的意义在于,将部分StringBuilder中的方法放到AbstractStringBuilder进行实现,如果将来添加了类似与StringBuilder(和StringBuffer)类似的子类时,可以省区代码的冗余。
附:理解抽象类的意义
1、必须继承的属性方法使用抽象类,而不是接口。==>比如StringBuilder和StringBuffer都存在一个缓冲数组,和一些重载的append方法,如果使用接口的话,两个类都要写重复的代码实现。
2、接口是规范,是协调与其他类的方法进行交互的准则。
3、抽象方法必须是public的。
4、抽象方法的应用场景:抽象方法定义一类事物必须有(public)的一种技能。但是这种方法各个子类的表现形式不一样。==>因此覆盖重写的方法中,可以直接调用父类的方法(super()),也可以在super()父类的方法的基础上在添加自己的一些功能。
4.3、构造方法:
public StringBuilder():构造一个空的StringBuilder容器。
public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。
4.4、常用方法:
public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。
public String toString():将当前StringBuilder对象转换为String对象。
append方法中具有多种重载的形式,可以接受任意类型的参数。
五、包装类
5.1、概述
java提供两种类型系统,基本类型和用用类型。基本类型在于效率高。然而很多情况,会创建对象使用。因为对象可以做更多的功能。
基本类型
byte Byte
short Short
int Integer
long Long
float Float
double Duble
char Character
boolean Boolean
5.2、装箱与拆箱
基本类型和对应的包装类对象之间,转换的过程称之为装箱与拆箱。
装箱:
从就基本类型转换为对应的包装类对象。
拆箱:
从包装类对象那个转换成对应的就基本类型。
按照面向对象的思想:
Integer i = new Integer(4);//使用构造函数函数 ==>将数字4,变成一个Integer对象的4
Integer iii = Integer.valueOf(4);//使用包装类中的valueOf方法
int num = i.intValue(); //将一个Integer对象转换成一个基本数据类型的数
5.3、自动装箱与自动拆箱
Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
//加法运算完成后,再次装箱,把基本数值转成对象。
5.4、基本类型与字符串之间的转换:
基本类型转换为String ==>最简单的一种:+""
String转换成对应的基本类型:
除了Character类外,其他的包装类都具有parseXxx静态方法可以将字符串参数转换成对应的基本类型。
注意:如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出 java.lang.NumberFormatException 异常。

浙公网安备 33010602011771号