多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# finally -> 01 【Obiect类、常用API】 ## 1.Object类 ### 1.1主要方法(两个 API中) `java.lang.Object`类是Java语言中的根类,即所有类的父类。 - `public String toString()`:返回该对象的字符串表示。 - `public boolean equals(Object obj)`:指示其他某个对象是否与此对象“相等”。如果希望进行两个引用类型对象的比较,非常推荐使用Objects.equals方法(两个参数)。 这个方法可以极大地避免NullPointerException. `注意`: Object类当中定义了equals方法,默认就是进行地址值比较。 如果希望子类进行内容比较,不用Object默认equals方法,那么子类就需要:覆盖重写equals方法和hashCode方法。 ##### 备注:hashCode方法必须和equals方法成双成对、形影不离、不离不弃。 ### 1.2Objects类(工具类) 在JDK7中添加了一个Objects工具类,它提供一些方法操作对象(由一些静态的实用方法组成) `public static boolean equals(Object a, Object b)`:判断两个对象是否相等。 ## 2.Date类(日期与时间) ### 2.1 java.util.Date类 ` java.util.Date`类 表示特定的瞬间,精确到毫秒 `public Date()`:分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。 `public Date(long date)`:分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。 `public long getTime()` 把日期对象转换成对应的时间毫秒值。 ### 2.2 DateFormat类 `java.text.DateFormat` 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。 **格式化**:按照指定的格式,从Date对象转换为String对象。 **解析**:按照指定的格式,从String对象转换为Date对象。 ### 构造方法 由于DateFormat为抽象类,不能直接使用,所以需要常用的子类`java.text.SimpleDateFormat`。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为: `public SimpleDateFormat(String pattern)`:用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。 ##### 参数pattern是一个字符串,代表日期时间的自定义格式。 java.text.DateFormat是一个抽象类,负责将String和Date之间来回转换。 格式化:Date --> String public String format(Date date):将参数日期时间对象,变成字符串的样子。 解析:String --> Date public Date parse(String str):将参数字符串转换成为对应的日期时间对象。 这是一个抽象类,不能直接new对象,常用的子类是:【java.text.SimpleDateFormat】 如果Date类当中的默认toString方法格式不喜欢,可以使用这个子类来自己指定格式。 SimpleDateFormat构造方法: public SimpleDateFormat(String pattern):参数就是我们希望使用的格式。 参数字符串代表格式,只要记住一套即可:(严格区分大小写) ##### yyyy-MM-dd HH:mm:ss.SSS yyyy四位数字代表:年 MM两位数字代表:月 dd两位数字代表:天 HH两位数字代表:小时 mm两位数字代表:分钟 ss两位数字代表:秒钟 SSS三位数字代表:毫秒 ## 3.Calendar类 ### 3.1 calendar类的使用 ##### java.util.Calendar抽象类,作用就是自动根据毫秒数计算得到年月日、时分秒等各种日期时间信息,想用什么,就拿什么。 这是一个抽象类,不能直接new对象。常用的子类是(了解即可,不要去背):GregorianCalendar。 强烈建议不要自己new这个子类。(如果自己new子类,那么就要自己手动计算复杂的日期时间。) 推荐的、正确的、常用的Calendar获取姿势,通过静态方法: ##### public static Calendar getInstance():获取一个日历对象。 ### 3.2 calendar类中常用方法 ##### 1.public int get(int field): 根据参数指定的数据项,获取对应的数值。 参数代表:你想要哪一条数据?是年、月、还是日? 备注:不推荐直接参数使用int数字,不好记忆。推荐使用Calendar当中的常量。 ##### 2.public void set(int field, int value): 设置指定的数据项,成为指定的数值。 参数field代表:你想设置年、月还是日还是其他? 参数value代表:你想设置成多少? ##### 3.public void add(int field, int amount): 对指定的数据项进行偏移量计算。 参数field代表:你想对哪个数据项进行修改? 参数amount代表:你想偏移(加减)多少? ##### 4.public Date getTime(): 将Calendar转换成为Date对象。 ##### 注意事项: 1. Date类当中的getTime是获取毫秒数,得到long值。 2. Calendar当中的getTime是获取Date对象。 ## 4.System类 ### 4.1调用方式 java.lang.System是一个与系统相关的工具类,本身是final太监类不能继承,构造方法被私有化了,不能new。 这个类只能通过静态形式调用方法。 ##### 获取当前系统的毫秒数: public static long currentTimeMillis():获取系统运行此时此刻的毫秒数(相对于Unix时间而言)。 ### 4.2 底层复制数组方法 System提供的一个底层的复制数组的方法: ##### public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 参数src代表:源数组,也就是数据本来在哪 参数srcPos代表:源数组的起始索引 参数dest代表:目标数组,也就是数据需要拷贝到哪里去 参数destPos代表:目标数组的起始索引 参数length代表:代表长度,也就是总共复制过去几个元素 ##### 备注: 1. 如果索引值或者长度超过了有效范围,那么将会发生ArrayIndexOutOfBoundsException 2. 不推荐自己使用for循环,推荐使用arraycopy方法。因为后者性能更高。 ## 5.StringBuilder ### 5.1构造方法(有参和无参) ##### 1.java.lang.StringBuilder构造方法: public StringBuilder():无参,内容空白。 public StringBuilder(String str):有字符串参数,代表初始内容,直接将参数内容放在底层数组当中。 StringBuilder已经覆盖重写了Object当中的toString方法,不显示地址哈希值,而是显示内容。 如果希望向StringBuilder当中追加更多内容,可以使用方法: ##### 2.public StringBuilder append(任意类型的数据): 追加参数数据进去,如果底层数组空间不够,将会自动扩容。 ### 5.2字符串转换 字符串转换成为StringBuilder: 1. 构造方法:public StringBuilder(String str) 2. 成员方法:append后续追加进去也行。 StringBuilder转换成为字符串: 只要调用toString方法即可。 ## 6.包装类 ### 6.1 八种数据类型 包装类是引用类型,是八种类,和八种基本类型对应,全都位于java.lang包下,意味着不用导包。 byte Byte short Short int Integer 【特殊】 long Long float Float double Double char Character 【特殊】 boolean Boolean ##### 基本数据类型只能用来存放数值, 但是对应的包装类功能更加丰富,就是将基本类型的数据套上一个“壳子”。 ### 6.2自动装箱拆箱 从JDK 1.5+开始,Java当中添加了非常好用的特性: 自动装箱:自动地把基本类型转换成为对应的包装类 int --> Integer 自动拆箱:自动地把包装类转换成为对应的基本类型 Integer --> int 语法糖:底层原理其实没变,只不过是表面的写法更简单,这种优化叫做语法糖。 ##### 将基本类型转换成为字符串: ​ 1. "" + 基本类型数据【推荐,很简单,棒棒哒!Wonderful!】 2. String.valueOf方法 3. 先把基本类型变成包装类,然后调用toString(不推荐,太麻烦) ##### 将字符串转换成为基本类型: ​ 包装类的转换方法: public static XXX parseXXX(String str):将参数字符串转换成为基本类型 备注:XXX就代表基本类型名 ##### `注意事项:` 1. 如果String转换成基本类型,格式对不上,那么将会发生NumberFormatException。 2. 八个包装类只有七个parseXXX方法,Character没有。