首页 > 编程语言 >【JavaSE】一些常见API(Object、Objects、Math、System、BigDecimal、包装类、Arrays)

【JavaSE】一些常见API(Object、Objects、Math、System、BigDecimal、包装类、Arrays)

时间:2023-12-02 10:33:40浏览次数:50  
标签:return name age Object equals Objects Student public BigDecimal

Object类

Object类介绍

toString方法

  • 直接println(对象名),默认会自动调用(对象名.toString),而.toString默认是返回地址信息 -> 全类名(包名+类名)@地址的十六进制哈希值,因此如果println(对象名)控制台没有输出地址值,说明该类一定重写了Object类的toString方法,比如String类和ArrayList类。

equals方法

  • Object类默认的的equals方法和两个引用数据类型对象直接用"=="判断是相同的效果,都是比较对象的地址。因此通常需要重写这个方法。

重写equals方法样例代码重写equals方法样例代码

技术:

  1. 对象类型判断
  2. 多态的转型
Student.java
package com.EveX.domain;

import java.util.Objects;

public class Student {
    String name;
    int age;

    /*自动生成的equals重写方法
    @Override
    public boolean equals(Object o) {
        // 比较两个对象的地址,如果地址相同肯定内容相同
        if (this == o) return true;
        // 比较两个对象的字节码,如果字节码不同->类型不同
        if (o == null || getClass() != o.getClass()) return false;
        // 多态向下转型
        Student student = (Student) o;
        // 比较成员变量
        return age == student.age && Objects.equals(name, student.name);
    }
    */

    // 自己手写的equals重写方法
    @Override
    public boolean equals(Object obj) {
        // 使用instanceof关键字先判断传入的对象是不是Student类型
        if(obj instanceof Student) {
            // 因为父类不能调用子类的特有成员,因此需要利用多态的转型将Object转为Student类
            Student stu = (Student) obj;
            return name.equals(stu.name) && age == stu.age;
        } else {
            return false;
        }
    }

    public Student() {
    }

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

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }
}

EqualsDemo.java
package com.EveX.object;

import com.EveX.domain.Student;

public class EqualsDemo {
    public static void main(String[] args) {
        Student stu1 = new Student("张三", 23);
        Student stu2 = new Student("张三", 23);
        System.out.println(stu1.equals(stu2));
    }
}

Objects类

  • Objects.equals(obj1, obj2)方法内部依赖于比较的对象中的equals方法,如果没有重写equals,那么Objects.equals(obj1, obj2)默认比较的还是对象地址
  • Objects.equals()优点在于内部实现存在空指针判断,可以避免空指针异常的问题

Math类

Math是个工具类——构造方法私有,所有的成员方法都是静态static方法,可以通过类名直接调用

System类

System也是一个工具类

  • System.currentTimeMillis()一般用于计算程序运行时间

    1970年1月1日 0时0分0秒是计算机中的时间原点,C语言的生日
package com.EveX.system;

public class SystemDemo {
    public static void main(String[] args) {

        long st = System.currentTimeMillis();

        long a = 0;
        for(int i = 1; i <= 1000000000; ++ i ) {
            a += i;
        }
        System.out.println(a);

        long ed = System.currentTimeMillis();

        System.out.println(ed - st);

    }
}

BigDecimal类

  • .doubleValue()可以将BigDecimal对象转为double变量

包装类


以Integer为例:


包装类面试题

Integer.java的valueOf方法源码
    public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

自动拆装箱的本质是底层自动调用了 Integer.valueOf()函数,而为了节省内存,将-128~127范围内的整数事先定义好存储在一个数组中,在这个范围内的自动拆装箱直接根据索引查找,不在该范围内的则new一个新的Integer对象。

Arrays类

Arrays又是一个工具类

binarySearch

复杂度O(logn),返回数值key在数组a中的索引,如果不存在返回[-(插入值)-1]

binarySearch
public static int binarySearch(int[] a, int key)

sort

复杂度O(nlogn),内部实现逻辑使用快排

sort
public static void sort( int[] a )

标签:return,name,age,Object,equals,Objects,Student,public,BigDecimal
From: https://www.cnblogs.com/Eve7Xu/p/17867105.html

相关文章

  • java Object和Objects
    packagenet.elaina.ObjectTest;publicclasstest1{publicstaticvoidmain(String[]args){/*publicStringtoString()返回对象的字符串表示形式publicbooleanequals(Objectobj)比较两个对象是否相等......
  • 7.6 Windows驱动开发:内核监控FileObject文件回调
    本篇文章与上一篇文章《内核注册并监控对象回调》所使用的方式是一样的都是使用ObRegisterCallbacks注册回调事件,只不过上一篇博文中LyShark将回调结构体OB_OPERATION_REGISTRATION中的ObjectType填充为了PsProcessType和PsThreadType格式从而实现监控进程与线程,本章我们需要将该......
  • 使用ASIRequest库进行Objective-C网络爬虫示例
    使用ASIRequest库进行Objective-C网络爬虫示例在Objective-C中,ASIHTTPRequest是一个非常受欢迎的库,用于处理HTTP请求。它可用于下载网页内容,处理API请求,甚至进行复杂的网络交互。下面是一个简单的示例,展示了如何使用ASIHTTPRequest库来爬取网页代码。首先,你需要在你的项目中导入ASI......
  • JSONObject参数顺序问题
    签名需要规定参数顺序不能错。一开始是这么写的JSONObjectparam=newJSONObject();param.put("idcard",user.getIdCard());param.put("mobile",user.getPhone());param.put("uid",user.getId());param.put("username",user.getName());期望得到的顺序应该......
  • 解决pyspark报错Could not serialize object: IndexError: tuple index out of range
    版权在使用pyspark的时候,遇到了如下问题:Couldnotserializeobject:IndexError:tupleindexoutofrange代码如下:frompysparkimportSparkContextimportosimportlogginglogging.basicConfig(level=logging.ERROR)frompyspark.sqlimportSparkSession,Rowss=Spar......
  • apache的对象工具类ObjectUtils
    org.apache.commons.lang3.ObjectUtils主要是Apache提供的对对象进行操作的工具类。它会使代码变得更加优雅。判断对象是否为空booleanisEmpty=ObjectUtils.isEmpty(newPerson());//输出:falsebooleanisEmpty=ObjectUtils.isEmpty(null);//输出:true检查元素是否为空/......
  • NX二次开发UF_CAM_ask_blank_matl_db_object 函数介绍
    文章作者:里海UF_CAM_ask_blank_matl_db_objectDefinedin:uf_cam.hintUF_CAM_ask_blank_matl_db_object(UF_CAM_db_object_t*db_obj)overview概述ThisfunctionprovidesthedatabaseobjectwhichiscurrentlyusedtoaccesstheBlankMateriallibrary.此函数提供当......
  • NX二次开发UF_CAM_update_single_object_customization 函数介绍
    文章作者:里海UF_CAM_update_single_object_customizationDefinedin:uf_cam.h intUF_CAM_update_single_object_customization(tag_tobject_tag)overview概述Thisfunctionprovidsthefunctionalitytoupdatethecustomizationinformationofanobjecttobethesame......
  • NX二次开发UF_CAM_wizard_ask_current_object 函数介绍
    文章作者:里海UF_CAM_wizard_ask_current_objectDefinedin:uf_ui_param.h intUF_CAM_wizard_ask_current_object(tag_t*param_tag)overview概述Thisfunctionqueriesthecurrentobjectthemanufacturingwizardisworkingwith.Ifthereisnocurrentobjectinthe......
  • NX二次开发UF_CAM_wizard_set_current_object 函数介绍
    文章作者:里海UF_CAM_wizard_set_current_objectDefinedin:uf_ui_param.h intUF_CAM_wizard_set_current_object(tag_tparam_tag)overview概述Thisfunctionsetsthecurrentobjectthemanufacturingwizardshouldworkwith.Theobjectmustexistsinthecurrentwor......