Object类和常用API

文章内容输出来源:拉勾教育大数据开发高薪训练营 

一、Object类

1. 基本概念:

  java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。

      如果一个类没有特别指定父类, 那么默认则继承自Object类。

2. 常用方法:

方法功能介绍
Object()无参构造对象
boolean equals(Object obj)
用于判断调用对象是否与参数对象相等。
该方法默认比较两个对象的地址是否相等,与 == 运算符的结果一致
若希望比较两个对象的内容,则需要重写该方法。
若该方法被重写后,则应该重写 hashCode 方法来保证结果的一致
性。
int hashCode()
用于获取调用对象的哈希码值 ( 内存地址的编号 )
若两个对象调用 equals 方法相等,则各自调用该方法的结果必须相
同;
若两个调用对象 equals 方法不相等,则各自调用该方法的结果应该
不相同。
为了使得该方法与 equals 方法保持一致,需要重写该方法。
String toString()
用于获取调用对象的字符串形式;
该方法默认返回的字符串为:包名 .类名@哈希码值的十六进制;
为了返回更有意义的数据,需要重写该方法;
使用 print println 打印引用或字符串拼接引用都会自动调用该方法;
Class<?> getClass()  
用于返回调用对象执行时的 Class 实例,反射机制使用

3. Objects类: 

    java.util.Objects类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或  null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。

    在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题。如下:

      public static boolean equals(Object a, Object b):判断两个对象是否相等;

      源码:

            public static boolean equals(Object a, Object b) {

                    return  (a == b) || (a != null && a.equals(b));

            }


二、包装类

1. 分类:

基本类型对应的包装类
byteByte 
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

2. 装箱与拆箱:

    基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:

    • 装箱:基本类型 ---> 对应的包装类对 象;

    • 拆箱:包装类对象 ---> 对应的基本类型;

      基本数值   ---->  包装对象  

          Integer i = new Integer(4);//使用构造函数函数

          Integer iii = Integer.valueOf(4);//使用包装类中的valueOf方法

      包装对象  ---->  基本数值  

          int num = i.intValue();

3. 自动装箱与拆箱:

    从Java 5(JDK 1.5)开始,基本类型与包装类的装箱、拆箱动作可以自动完成;

Integer i = 4;  //自动装箱。相当于Integer i = Integer.valueOf(4);

i = i + 5;   //等号右边:将i对象转成基本数值(自动拆箱)     i.intValue() + 5;//加法运算完成后,再次装箱,把基本数值转成对象;

4. 包装类的使用:

公有方法(xxx代表数据类型;XXX代表包装类对象)
方法
作用
static  XXX  valueOf(xxx 参数)根据参数得到XXX对象
xxxValue()获取包装类对象中基本数据类型变量数值
parseXXX(String s)

字符串转换为对应的基本类型

(如:int num = Integer.parseInt("100");

String toString
返回描述调用对象数值的字符串形式
boolean equals(Object obj)
比较调用对象与参数指定的对象是否相等
各包装类的特有方法
包装类方法作用
Integer
static String toString(int i)  
获取参数指定整数的十进制字符串形式
static String toBinaryString(int i)
获取参数指定整数的二进制字符串形式
static String toHexString(int i)
获取参数指定整数的十六进制字符串形式
static String toOctalString(int i)
获取参数指定整数的八进制字符串形式
Double
boolean isNaN()
判断调用对象的数值是否为非数字
Character
static boolean isUpperCase(char ch)
判断参数指定字符是否为大写字符
static boolean isLowerCase(char ch)
判断参数指定字符是否为小写字符
static boolean isDigit(char ch)
判断参数指定字符是否为数字字符
static char toUpperCase(char ch)
将参数指定的字符转换为大写字符
static char toLowerCase(char ch)
将参数指定的字符转换为小写字符

三、常用数学类

1. Math类:

常用方法
方法声明
功能介绍
static int max(int a, int b)
返回两个参数中的最大值
static int min(int a, int b)
返回两个参数中的最小值
static double pow(double a, double b)
返回第一个参数的幂
static int abs(int a)
返回参数指定数值的绝对值
static long round(double a)
返回参数四舍五入的结果
static double sqrt(double a)
返回参数的平方根
static double random()
返回0.01.0的随机数

2. BigDecimal类:

    由于float类型和double类型在运算时可能会有误差,若希望实现精确运算则借助 java.math.BigDecimal类型加以描述。 

      BigDecimal(String val) 根据参数指定的字符串来构造对象;
 
      此外,还有加减乘除运算;

3. BigInteger类:

    表示比long类型范围还大的数据; 

      BigInteger(String val) 根据参数指定的字符串来构造对象;
 
      此外,还有加减乘除运算;
 
      特别的,还有取余运算,取商和余数的运算:
      
          BigInteger remainder(BigInteger val) 用于实现取余运算;
          
          BigInteger[] divideAndRemainder(BigInteger val) 用于实现取商和余数的运算 

四、日期时间类

1. Date类:

    java.util.Date类 表示特定的瞬间(年月日时分秒),精确到毫秒;

▷  构造方法:

     •  public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒);

     •  public Date(long date):  表示自从标准基准时间,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。

注意:由于我们属于东八区,所以我们的基准时间为1970年1月1日8时0分0秒。

具体事例如下:

import java.util.Date;

public class Demo01Date {
    public static void main(String[] args) {
        // 创建日期对象,把当前的时间
        System.out.println(new Date()); // Tue Jan 16 14:37:35 CST 2018
        // 创建日期对象,把当前的毫秒值转成日期对象
        System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970
    }
}

当我们使用println方法时,会自动调用Date类中的toString方法。Date类对Object类中的toString方法进行了覆盖重写,所以结果为指定格式的字符串。  

▷  常用方法:

     •  public long getTime():获取调用对象距离197011000秒的毫秒数;

     •  public void setTime(long time):设置调用对象为距离基准时间time毫秒的时间点 

2. SimpleDateFormat类:

    java.text.SimpleDateFormat类主要用于实现日期和文本之间的转换;

常用方法
方法声明功能介绍
SimpleDateFormat()
使用无参方式构造对象
SimpleDateFormat(String pattern)
根据参数指定的模式来构造对象,模式主要有 : y- M- d-
H- m- s-
final String format(Date date)
用于将日期类型转换为文本类型         
Date parse(String source)
用于将文本类型转换为日期类型
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
 把Date对象转换成String,将String转换为Date对象
*/
public class Demo03DateFormatMethod {
    public static void main(String[] args) {
        Date date = new Date();
        // 创建日期格式化对象,在获取格式化对象时可以指定风格,可以使用多态
        // DateFormat 是SimpleDateFormat 的抽象父类
        DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
        String str = df.format(date); // 把Date对象转换成String
        Date date = df.parse(str);    // 将String转换为Date对象 
        System.out.println(str); // 2020年8月23日
    }
}

3. Calendar类:

    java.util.Calendar是日历类,主要用于描述特定的瞬间,取代Date类中的过时方法实现全球化。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。

常用方法
方法声明功能介绍
static Calendar getInstance()
用于获取 Calendar 类型的引用
void set(int year, int month, int date, int hourOfDay, int minute, int second)
用于设置年月日时分秒信息
Date getTime()
用于将 Calendar 类型转换为Date类型
void set(int fifield, int value)
设置指定字段的数值
void add(int fifield, int amount)
向指定字段增加数值

     Calendar类中提供很多成员常量,代表给定的日历字段:

常用字段
字段值含义
YEAR
MONTH月(从0开始,可以+1使用)
DAY_OF_MONTH月中的天(几号)
HOUR时(12小时制)
HOUR_OF_DAY时(24小时制)
MINUTE
SECOND
DAY_OF_WEEK周中的天(周几,周日为1,可以-1使用

       具体使用:

import java.util.Calendar;

public class CalendarUtil {
    public static void main(String[] args) {
        // 创建Calendar对象
        Calendar cal = Calendar.getInstance();
        // 获取年 
        int year = cal.get(Calendar.YEAR);
        // 获取月
        int month = cal.get(Calendar.MONTH) + 1;
        // 获取日
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
        System.out.print(year + "年" + month + "月" + dayOfMonth + "日");

        // 设置年
        cal.set(Calendar.YEAR, 2020);

        // 使用add方法
        cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天
        cal.add(Calendar.YEAR, -3); // 减3年

        // 拿到对应的Date对象。
        Date date = cal.getTime();
    }    
}

4. System类:

    java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作;

常用方法:

•  public static long currentTimeMillis():获取当前系统时间与1970年01月01日00:00点之间的毫秒差值;

•  public static void arraycopy(Object src, int srcPos, Object dest, int descPos, int length):将数组中指定的数据拷贝到另一个数组中。 数组的拷贝动作是系统级的,性能很高 。具体参数含义:

参数序号参数名称参数类型参数含义
1srcObject源数组
2srcPosint源数组索引起始位置
3destObject目标数组
4destPosint目标数组索引起始位置
5lengthint复制元素个数

5. java8中的日期相关类:

    上述说到Calendar类取代了Date类中的很多方法,但是Calendar类并不比Date类好多少,它们面临的问题是:

        a. Date类中的年份是从1900开始的,而月份都从0开始。

        b. 格式化只对Date类有用,对Calendar类则不能使用。

        c. 非线程安全等。

    Java 8通过发布新的Date-Time API来进一步加强对 日期与时间的处理。

    5.1 LocalDate类:

        java.time.LocalDate类主要用于描述年--日格式的日期信息,该类不表示时间和时区信息;

  方法:static LocalDate now():在默认时区中从系统时钟获取当前日期

    5.2 LocalTime类:

        java.time.LocalTime 类主要用于描述时间信息,可以描述时分秒以及纳秒。

  方法:static LocalTime now():从默认时区的系统时间中获取当前时间

              static LocalTime now(ZoneId zone):获取指定时区的当前时间
 

    5.3 LocalDateTime类:

        java.time.LocalDateTime类主要用于描述ISO-8601日历系统中没有时区的日期时间,如2007-12-03T10:15:30

  方法:static LocalDateTime now():从默认时区的系统时间中获取当前日期时间;

             static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second):根据参数指定的年月日时分秒信息来设置日期时间;

             int getYear():获取年份字段的数值(获取小时,分钟,描述同理);

             int getMonthValue():获取112之间的月份字段;

             int getDayOfMonth():获取日期字段;

             LocalDateTime withXxx(int xxx):设置为参数指定的年,月,日,时,分,秒;

             LocalDateTime plusXxxs(long xxx):加上参数指定的年,月,日,时,分,秒;

              LocalDateTime minusXxxs(long xxx):减去参数指定的年,月,日,时,分,秒;
 

    5.4 Instance类:

        java.time.Instant类主要用于描述瞬间的时间点信息。

  方法:static Instant now() :从系统时钟上获取当前时间 ;

             OffsetDateTime atOffset(ZoneOffset offset):将此瞬间与偏移量组合以创建偏移日期时间 ;

             static Instant ofEpochMilli(long epochMilli):根据参数指定的毫秒数来构造对象,参数为距离19701月1日00分                                                                                      0秒的毫秒数 ;

             long toEpochMilli() :获取距离197011000秒的毫秒数 ;

    5.5 DateTimeFormatter类:

java.time.format.DateTimeFormatter类主要用于格式化和解析日期。

方法:static DateTimeFormatter ofPattern(String pattern):根据参数指定的模式来获取对象;

           String format(TemporalAccessor temporal) 将参数指定日期时间转换为字符串

           TemporalAccessor parse(CharSequence text):将参数指定字符串转换为日期时间;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值