笔记~常用API

1.常用API

API(Application Programming interface) 应用程序接口

说白了:就是别人定义好的类,接口,方法,供我们直接使用!

1.1Object类

一切类的祖宗

Object类是类层次结构的根。每个类都有 Object作为超类。所有对象,包括数组,实现这个类的方法
* 既:所有对象类型,包括我们自定义的类,都隐式的继承自Object

1.1.1toString方法

用于返回对象的字符串表现形式

  • Object原生代码逻辑

    getClass().getName() + “@” + Integer.toHexString(hashCode());
    类名 + @ + 16进制哈希值(暂时理解成对象地址)

  • 我们自己重写后逻辑

    通常情况下我们不想看到对象地址,我们希望看到对象的成员变量们

  • 关于打印语句和toString方法的关系

        Student student = new Student("杨幂",18);
        //手动调用toString返回代表该对象的字符串
        String s = student.toString();
        System.out.println(s);
        //打印语句自动调用toString返回代表该对象的字符串
        System.out.println(student);

案例:

package com.itheima.demo03;

import java.util.Objects;

public class Student {
//public class Student extends Object{

    private String name;
    private int age;

   
    //手动重写的toString
    @Override
    public String toString() {
        return "name:"+name+"--age:"+age;
    }

    //idea帮助我们生成toString,同样使用成员变量表示对象
//    @Override
//    public String toString() {
//        return "Student{" +
//                "name='" + name + '\'' +
//                ", age=" + age +
//                '}';
//    }

   
}

1.1.2equals方法

用于比较两个对象是否"相同"

  • Object原生代码逻辑

    比较对象地址值,相当于== (==号永远比较对象地址值)

  • 我们自己重写后逻辑

    通常情况下我们不想比较对象地址,我们希望比较对象的成员变量们。

    因为我们认为成员变量都相同,就是一个人就是对象相同

案例:

package com.itheima.demo03;

import java.util.Objects;

public class Student {
//public class Student extends Object{

    private String name;
    private int age;


    //重写equals方法,将比较地址变为比较成员变量内容
//    @Override
//    public boolean equals(Object obj) {
//
//        //自己对象
//        Student a = this;
//        //传进来的对象
//        Student b = (Student) obj;
//
//        //比较成员变量是否相同
//        //先比年龄
//        if(a.age != b.age) return false;
//        //再比姓名
//        if(!a.name.equals(b.name)) return false;
//
//        return true;
//    }

    //idea帮助我们生成equals方法,同样使用成员变量表示对象
    @Override
    public boolean equals(Object o) {
        //判断传入的对象和调用方法的对象是否是同一个对象,是,直接返回true
        if (this == o) return true;
        //如果传进来的是null,直接返回false
        //如果传入的对象和调用方法的对象  类型不同,直接返回false
        if (o == null || this.getClass() != o.getClass()) return false;
        //将传入的对象转为本类类型,为了获取成员变量
        Student student = (Student) o;
        //对比年龄和姓名
        return age == student.age &&
                Objects.equals(this.name, student.name);
    }

}

//测试类代码
 public static void main(String[] args) {

        //==============equals=============================================
        Student student = new Student("杨幂",18);
        Student student2 = new Student("杨幂",18);
        System.out.println(student);
        System.out.println(student2);
        //==号永远比较两个对象的地址值
        System.out.println(student == student2);
        System.out.println(student2.equals(student));
    }

1.2Date

日期类,Date类代表了一个特定的时间,精度为毫秒。

 * 构造方法;
 * Date():
 *        以当前系统时间构造一个Date对象
 * Date(long date):
 *         使用一个从1970年1月1日零时开始的一个毫秒值构造一个Date对象
 *  普通方法:
 *  public long getTime():
 *             获取从1970年1月1日零时到此Date对象所表示时间之间的毫秒值。
 *  public void setTime(long time):
 *             设置此Date对象的毫秒值。此方法将改变此Date对象所表示的时间。
 *  小练习:
 *        创建一个Date对象,代表上周的此时此刻。

1.3DateFormat&SimpleDateFormat

日期格式化,String与Date相互转换

* public String format(Date date):
*             将Date对象转换为指定格式的String对象。
* public Date parse(String s):
*             将String对象转换为Date对象。

1.4Calendar

日历类,用于处理时间。其内部包含了许多时间相关的 键值对 信息

它是一个抽象类,不能创建对象,我们可以使用它的子类:java.util.GregorianCalendar类。
Calendar官方建议获取子类对象的方式是:public static Calendar getInstance()
 * public int get(int field)
 *            获取某个字段的值。field参数表示获取哪个字段的值,
 *            可以使用Calender中定义的常量来表示:
 *            	Calendar.YEAR : 年
             * 	Calendar.MONTH :月  从0开始算,比实际生活少1
             * 	Calendar.DAY_OF_MONTH:月中的日期
             * 	Calendar.HOUR:小时
             * 	Calendar.MINUTE:分钟
             * 	Calendar.SECOND:秒
             * 	Calendar.DAY_OF_WEEK:星期
 * public void set(int field,int value) 设置某个字段的值
 * public void add(int field,int amount) 为某个字段增加/减少指定的值
 * public boolean after​(Object when):判断当前时间是否在参数时间之后
 * public boolean before​(Object when):判断当前时间是否在参数时间之前
 * public final void setTime​(Date date):使用给定的Date设置此日历的时间

1.5BigDecimal

由于double本身是近似值,所以计算结果有偏差,所以需要精确小数,即BigDecimal

 * 构造方法:
 *           1).BigDecimal(String str):使用一个数字字符串构造一个BigDecimal对象
 * 成员方法:
 *           1).BigDecimal add(BigDecimal b):当前对象 + 参数对象,返回一个新的BigDecimal;
 *           2).BigDecimal subtract(BigDecimal b):当前对象 - 参数对象,返回一个新的BigDecimal
 *           3).BigDecimal multiply(BigDecimal multiplicand):当前对象 * 参数对象,返回一个新的BigDecimal
 *           4).BigDecimal divide(BigDecimal divisor,
 *                           //除数 int scale,
 *                           //要保留的小数位数     RoundingMode roundingMode)//舍入模式
 *           5).BigDecimal remainder(BigDecimal divisor):当前对象 % 参数对象,返回一个新的BigDecimal

1.6System

提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。

* 成员方法:
*     1. public static void exit(int status) :终止当前运行的 Java 虚拟机,非零表示异常终止
*     2. public static long currentTimeMillis(): 返回当前时间(以毫秒为单位)
		//注意:该方法比new Date()获取毫秒值 速度更快!
*     3. public static Properties getProperties():获取一些常见的系统参数
通过该方法,体会:不用记方法,要会试方法,查方法

关于类似System这样类的构造方法问题:

System不能被实例化的原因:因该该类的构造方法被私有化了,提供了大量的static方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值