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 异常。

posted @ 2018-11-10 21:18  payn  阅读(140)  评论(0)    收藏  举报