Math/System/Runtime/Object

news2024/9/24 9:25:02

1、Math

(1)常用方法

类型方法名说明
public static intabs (int a)返回整数的绝对值
public static doublepow (double a,double b)计算a的b次幂的值
public static int      max (int a,int b) 获取两个int值中的较大值
public static intmin (int a,int b) 获取两个int值中的较小值
public static double   ceil (double a) 返回大于或等于参数的最小整数
public static doublefloor (double a)    返回小于或等于参数的最大整数
public static int          round (float a) 按照四舍五入返回最接近参数的int类型的值
public static double   random ()      返回一个[0.0,1.0)的随机值

2、System

(1)常用方法

①时间原点:1970年1月1日00:00:00;

②1秒=1000毫秒。

类型方法名说明
public static voidexit (int status)终止当前运行的 Java 虚拟机,非零表示异常终止
public static longcurrentTimeMillis ()返回当前时间(以毫秒为单位)

(2)应用

计算程序运行时间,比较效率。

3、Runtime

现在忽略。

4、Object

(1)public String toString()

①说明

a. 以哪种字符串的形式返回对象,至于是哪种形式,就看方法中如何定义的了。

b. Object类中返回字符串的形式为类名@对象的内存地址。

c. 一般会重写从父类中继承的toString方法,返回属性值,因为内存地址没什么用。

②Object类中的toString方法的源码

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

③System.out.println()方法的代码:

(2)public boolean equals(Object o)

Object类中的equals方法比较的是两个对象的地址值是否相同。

①equals方法的源码:

public boolean equals(Object obj) {
        return (this == obj);
}

③String类中重写了Object类中的equals方法,比较所存的字符串是否相同。 

大致原理如下:

1、首先比较引用地址

如果两个字符串对象引用地址相同(即指向同一个内存地址),则它们一定是相等的,直接返回true。

2、然后比较字符串内容

它会逐个比较每个字符是否相同,直到找到不相同的字符或者比较完所有字符。

3、对特殊情况的处理

①例如对null的处理,如果调用equals()方法的对象为null,则直接返回false;如果两个对象中有一个为null,也直接返回false。

②如果传入的对象不是String类型,返回false。

下面是简化代码:

public boolean equals(Object anObject) {
    // 如果是同一个引用,直接返回true
    if (this == anObject) {
        return true;
    }
    
    // 如果传入的对象不是String类型,返回false
    if (!(anObject instanceof String)) {
        return false;
    }
    
    // 强制类型转换为String类型
    String anotherString = (String)anObject;
    int length = value.length;
    
    // 比较字符串长度是否一致
    if (length != anotherString.value.length) {
        return false;
    }
    
    // 逐个字符比较
    char v1[] = value;
    char v2[] = anotherString.value;
    int i = 0;
    while (length-- != 0) {
        if (v1[i] != v2[i])
            return false;
        i++;
    }
    return true;
}

(3)protected Object clone()

①说明

把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象复制。

对象克隆的分类:

深克隆和浅克隆

浅克隆:

不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝过来;

基本数据类型拷贝过来的是具体的数据,引用数据类型拷贝过来的是地址值。

Object类默认的是浅克隆。

深克隆:

基本数据类型拷贝过来,字符串复用,引用数据类型会重新创建新的。

也有第三方的克隆类去使用;一个简单的例子:

//首先有一个被克隆的对象
        int[] data = {1, 2, 3, 4, 5, 6};
        User u1 = new User(1, "zhangsan", "1234qwer", "1", data);
        //调用第三方写的克隆方法
        Gson gson = new Gson();
        //将对象变成字符串的格式
        String s = gson.toJson(u1);
        System.out.println(s);
        //克隆
        User user = gson.fromJson(s, User.class);
        System.out.println(user);

    }

问题1:为什么需要重写子类中的clone方法才能访问?

首先Object类是java.lang包下的,子类User继承了其中的clone方法,但是与User同包下的测试类无法直接访问clone方法,重写User中的clone方法,与User同包下的测试类就可以访问到此方法了。

总结就是:重写是为了让这个方法存在于这个包,就可以同包下类能访问了。

5、Objects

①私有化构造方法,外界无法创建其对象;

②都是静态方法,可通过类名.方法名去访问。

综上,Objects是一个工具类。

6、BigInteger

可以用来表示很大很大的数,有多大都可以。

(1)如何获取一个BigInteger类型的对象?

一般有构造方法和静态方法。

①构造方法

//获取指定的大整数,参数传递的是字符串格式
//我觉得这种的应用就是int不能表示时,转为BigInteger
BigInteger num2 = new BigInteger("211111111111111111");

②静态方法 

//还有一个静态方法可以用来获取大整数,但是要在long类型的取值范围内
//System.out.println(Long.MAX_VALUE);
BigInteger num = BigInteger.valueOf(9223372036854775807L);

下面是valueOf方法的源码: 

还有一个特点:BigInteger对象一旦创建内部中的中的数便不可改变。没什么感觉。看到一个评论这样说的:如果是以前2个值中是一定会有一个值去存储3的,所以2个值没有一个改变成3,而是创建一个新的对象去存储3。

(2)常用方法

知道如何用就可以了。

7、BigDemical

浮点数由于存储方式的原因,有的小数部分在计算机中是无法准确存储,可能会存在精度丢失问题。

而BigDecimal能进行小数的精确运算。

(1)如何获取一个BigDecimal类型的对象?

一般有构造方法和静态方法。

①构造方法

//1、传入double类型的数据
//但这种也有可能是不精确的,所以要避免使用这种方式
BigDecimal bd1 = new BigDecimal(0.1);
//2、传入字符串类型,不会有这种问题
BigDecimal bd2 = new BigDecimal("0.1");

 

BigDecimal底层存储原理:数组中存的是每一个字符在ASCII码表中对应的数字。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1920923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【吊打面试官系列-ZooKeeper面试题】简述 Zookeeper 文件系统?

大家好,我是锋哥。今天分享关于 【简述 Zookeeper 文件系统?】面试题,希望对大家有帮助; 简述 Zookeeper 文件系统? Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不同的是,这些节…

“南征北战”| 卓翼飞思技术领航,助力人工智能大赛上海赛区选拔赛圆满落幕

卓翼飞思继6月支持辽宁赛区选拔赛圆满收官后,近日再次技术助力,为上海赛区的比赛画上圆满句号。值得一提的是,在此次比赛中来自上海工程技术大学、同济大学、上海商学院、上海农林职业技术学院,使用卓翼飞思设备的5支参赛队伍&…

【Java EE】统一功能返回

一、拦截器 1.1 拦截器的作用 在对于数据库进行增删查改的时候,如果当前页面不检查用户是否登录,然后就能操作成功是不合理的,解决方法有两个: 对于已经写好的每个接口都加上一个判断,从Session中获取用户信息&…

嵌入式开发过程中,常见报错以及解决方法

编写不易,仅供学习,参考谢谢,还望理解。 #常见报错 文件最后一行没有新行 翻译:文件的最后一行结束时没有新行 解决方法:定位到,提示报错的 .h 文件 报错行 ,加上一个新行 函数定义时与官方提…

体育资讯小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,球员管理,教练管理,赛事日程管理,赛事类型管理,联赛积分榜管理 开发系统:Windows 架构模式:SSM JDK版本&a…

(超简单)如何将heic格式转化成jpg,试试这6个heic转jpg小技巧

如何将heic格式转化成jpg?喜欢拍摄照片的小伙伴们可能对heic格式图片比较熟悉,heic格式是一种比较高效的图片格式,图片质量高,并且体积小。但heic种格式也存在一些问题,首先,由于它的其兼容性较差&#xff…

软考高项论文一次过经验分享

软考高项考试改革后一年考一次,有多少人的备考计划被打乱,相比较起来,去年我考的时候刚刚赶上机考,那是一个吐血~猝不及防,清楚的记得那会儿考完出来听到耳边哀声一片,虽然我过了,但是真的紧张的…

PGCCC|【PostgreSQL】PCA+PCP+PCM等IT类认证申报个税退税指南

小编特将PostgreSQL证书申报个税退税流程,编辑成文,供大家申报参考哦~ 1.申报专项附加扣除 第一步:打开个人所得税APP,选择“专项附加扣除填报”: 第二步:“扣除年度”选择您要申报的年度,并…

【RHCE】计划任务的练习题

1. 使⽤ at 命令计划从现在起三分钟后运⾏⼀项作业。该作业必须将 date 命令的输出保存 ⾄ /root/myjob.txt [rootlocalhost ~]# at now 3 min warning: commands will be executed using /bin/sh at> date > /root/myjob.txt at> <EOT>2. 使⽤ at 命令以交互…

2024【大模型的实战应用深入解析】(非常详细)零基础入门到精通,收藏这一篇就够了

ChatGPT从年初炸裂的诞生&#xff0c;引领了新一轮AI的浪潮——大模型。说来惭愧&#xff0c;其实从去年开始就有人提大模型&#xff0c;那时候大厂都在内部做&#xff0c;谷歌facebook腾讯阿里等等&#xff0c;我当时其实持反对意见的&#xff0c;每家都烧这么多钱&#xff0c…

Laravel :如何将Excel文件导入数据库

文章目录 一、前提二、使用2.1、新建一个导入文件2.2、新建一个控制器和方法,调用导入文件2.3、 新建一个页面&#xff0c;支持文件上传 一、前提 想要将excel内容入库&#xff0c;laravel有扩展可以使用,常用的扩展是maatwebsite/excel&#xff0c;安装步骤参考上一篇&#x…

FastGPT+OneAI接入网络模型

文章目录 FastGPT连接OneAI接入网络模型1.准备工作2.开始部署2.1下载 docker-compose.yml2.2修改docker-compose.yml里的参数 3.打开FastGPT添加模型3.1打开OneAPI3.2接入网络模型3.3重启服务 FastGPT连接OneAI接入网络模型 1.准备工作 本文档参考FastGPT的官方文档 主机ip接…

SAS:标记CRF时是否持续用ENRF还是ENRTPT?

背景&#xff1a; 在QC ACRF时发现针对是否持续有不同的标记方式&#xff0c;比如在不良事件中用AEENRF&#xff0c;在病史中用MHENRTPT&#xff0c;想知道为何会有此差别&#xff1f; 结论&#xff1a; 根据“是否持续”的时间是一个确定的时间点还是一个持续的时间段&#xf…

如何评价2023年辽宁省数学建模竞赛A题B题?

本文文章较长&#xff0c;阅读时间约为5分钟&#xff0c;点击目录条目可以快速跳转 完成进度情况 2023年辽宁省大学生数学建模竞赛A题完整论文和代码目前我已经完成了&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解&#xff08;问题1推…

攻防世界 string

国际惯例file,checksec一下&#xff0c;发现是64位的elf文件&#xff0c;不可修改got表&#xff0c;栈溢出保护开启&#xff0c;nx不可执行&#xff0c;没开地址随机化 这道题的流程比较复杂&#xff0c;交互较多&#xff0c;所以我们需要先分析清楚整个流程 拖入64位ida&…

重磅!新公司法正式实施,这些变化你必须知道! ️

新公司法来了&#xff01;企业设立和经营必知的关键变动 &#x1f3db;️&#x1f680; 大家好&#xff0c;我是猫头虎&#xff0c;科技自媒体博主。今天我们来聊聊一件大事——新公司法的实施&#xff0c;这对企业设立和经营带来了哪些重大影响&#xff1f;跟着我&#xff0c…

AI视频教程下载-1小时ChatGPT提示基础课程

Hour ChatGPT Prompting Basics Course (2024) 从“玩具”到“武器” 这是一门关于ChatGPT提示的入门级课程&#xff0c;无需任何门槛或基础知识。如果你是职场专业人士&#xff0c;只想将ChatGPT作为一种工具来提高工作效率、做出决策&#xff0c;或在日常生活中提供便利和建…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第二十八章 借助U盘或TF卡拷贝程序到开发板上

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…