12.1 Object类(toString方法、equals方法)、Objects工具类、System类(currentTimeMillis()方法、 arraycopy方法)

目录

Object类

toString方法

列:toString()练习

equals方法

Objects类

System类

 currentTimeMillis()方法

 arraycopy方法

列:将src数组中前3个元素复制到dest数组的前3个位置上,复制元素前:src数组元素[1,2,3,4,5],dest数组元素[6,7,8,9,10], 复制元素后:src数组元素[1,2,3,4,5],dest数组元素[1,2,3,9,10]


Object类

java.lang.Object 类是Java语言中的根类,即所有类的父类。如果一个类没有特别指定父类, 那么默认则继承自Object类。

Object类当中包含的方法有11个。今天我们主要学习其中的2个:

  • public String toString() :返回该对象的字符串表示。
  • public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。

toString方法

public String toString() :返回该对象的字符串表示。

列:toString()练习

public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
   @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age &&
                Objects.equals(name, person.name);
    }
}

 如果对象没有写toString方法,打印地址值。写了toString方法,打印对象内容

    public static void main(String[] args) {
        Person person=new Person("老赵",19);
        String s = person.toString();
        System.out.println(s);

        //看一个类是否重写了toString,直接打印这个类的对象即可,如果没有重写toString方法那么打印的是对象的地址值
        Random random=new Random();
        String s1 = random.toString();
        System.out.println(s1);//java.util.Random@7f63425a

        //Scanner重写了toString方法
        Scanner sc=new Scanner(System.in);
        String s2 = sc.toString();
        System.out.println(s2);//java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\QNaN\E][infinity string=\Q∞\E]


//        ArrayList重写了toString方法
        ArrayList<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        String s3 = list.toString();
        System.out.println(s3);
    }

equals方法

public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”

equals()默认地址比较。如果没有覆盖重写equals方法,那么Object类中默认进行对象地址比较。如果对象重写了equals方法则比较对象内容

public class Person {
    private String name;
    private int age;
   。。。
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age &&
                Objects.equals(name, person.name);
    }
}
public static void main(String[] args) {
    Person p1=new Person("老赵",19);
    Person p2=new Person("老赵",19);
    System.out.println(p1.equals(p2));//对象重写了equals方法,进行对象内容的比较

    //重写equals()方法
    Person p3=new Person("老赵",19);
    Person p4=new Person("老赵",19);
    System.out.println(p3==p4);//p3,p4对象地址比较
    System.out.println(p3+"\n"+p4);
}

 

Objects

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

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

    public static void main(String[] args) {
        String s1="abc";
        String s2="abc";
        System.out.println(s1.equals(s2));

        String s3=null;
        try {
            System.out.println(s3.equals(s1));// null是不能调用方法的,会抛出空指针异常
        }catch (Exception e){
            System.out.println(e);//java.lang.NullPointerException
        }

        System.out.println(Objects.equals(s1,s3));//false
    }

System

java.lang.System 类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:

  • public static long currentTimeMillis() :返回以毫秒为单位的当前时间。
  • public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :将数组中指定的数据拷贝到另一个数组中。

 currentTimeMillis()方法

返回毫秒为单位的当前时间

public static void main(String[] args) {
    //获取当前系统时间到1970 年 1 月 1 日 00:00:00经历了多少毫秒
    System.out.println(System.currentTimeMillis());//1597762372201
}

 arraycopy方法

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) :将 数组中指定的数据拷贝到另一个数组中。

参数序号

参数名称

参数类型

参数含义

1

src

Object

源数组

2

srcPos

int

源数组索引起始位置

3

dest

Object

目标数组

4

destPos

int

目标数组索引起始位置

5

length

int

复制元素个数

列:将src数组中前3个元素复制到dest数组的前3个位置上,复制元素前:src数组元素[1,2,3,4,5],dest数组元素[6,7,8,9,10], 复制元素后:src数组元素[1,2,3,4,5],dest数组元素[1,2,3,9,10]

import java.util.Arrays;
public class Demo01System {
    public static void main(String[] args) {
        demo01();
        System.out.println("-------------------------");
        demo02();
    }

    public static void demo01() {
        long time = System.currentTimeMillis();
        System.out.println(time);
    }
/*  public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):
    将数组中指定的数据拷贝到另一个数组中。*/
    public static void demo02() {
        int[] src = new int[]{1, 2, 3, 4, 5};
        int[] dest = {6, 7, 8, 9, 10};
        System.out.println("复制前数组数据:" + Arrays.toString(dest));
        System.arraycopy(src, 0, dest, 0, 3);
        System.out.println("复制后数组数据" + Arrays.toString(dest));
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值