Math/System/Runtime/Object

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) {// 如果是同一个引用,直接返回trueif (this == anObject) {return true;}// 如果传入的对象不是String类型,返回falseif (!(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.mzph.cn/news/870802.shtml

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

相关文章

java读取配置文件(包含国家于二字码对应关系文件)

读取配置文件 1.java文件 import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.springframework.core.io.ClassPathResource;import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Map; Slf4j public class…

数据结构笔记之连通图与强连通图

一、引言 在图论中,我们常常会遇到连通图和强连通图的概念。它们描述了图中顶点之间的连接情况,对于理解和分析复杂网络具有重要意义。 二、连通图 定义:若图G中任意两个顶点都是连通的,则称图G为连通图;否则称为非…

如何使用可道云结合内网穿透工具实现远程访问打造私人云盘

文章目录 1.前言2. Kodcloud网站搭建2.1. Kodcloud下载和安装2.2 Kodcloud网页测试 3. cpolar内网穿透的安装和注册4. 本地网页发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6.结语 💡 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易…

【HTML入门】第十课 - 表格,也就是table标签

这一小节,我们说一下HTML中的表格。比如我们常常看见的学生成绩单,比如excel一个单元格一个单元格的,这些都是表格。 表格的标签名是 table 。 目录 1 表格中的一些子标签 1.1 表头区域 1.2 表格内容区域 1.3 行和列 2 实战一小下 2.…

JavaWeb(一:基础知识和环境搭建)

一、基本概念 1.前言 JavaWeb:在Java中,动态web资源开发网页的技术。 web应用分两种:静态web资源和动态web资源 Ⅰ. 静态web资源(如html 页面): 指web页面中的数据始终是不变。 所有用户看到都是同一个…

python编程实例 输出两个数之间的素数

#输出两个数之间有多少素数 import math mint(input("开始:")) nint(input("结束:")) for i in range(m,n1):for j in range(2,int(math.sqrt(i))1):if i%j0:breakif(jint(math.sqrt(i))):print(str(i),"是一个素数")

DP(2) | Java | LeetCode 62, 63, 343, 96 做题总结(96 未完)

62.不同路径 我的代码(报错) 写的过程中感到很迷惑的点:①二维数组和这道题目的对应弄不清除,m n的初始化 是 dp[m][n] 还是 dp[n][m] ② class Solution {public int uniquePaths(int m, int n) {int[][]dp new int[m1][n1];d…

单目3D和bev综述

文章目录 SOTA2D 检测单目3d检测单目bev,一般是多目,小鹅通3d bev cam范式Transformer attention is all you need 2017ViT vision transformer ICLR 2021googleDETR 2020DETR3D 2021PETR 2022bevformerLSSbevdetcaddn指标 mAP NDS标注:基于点…

利用js实现图片压缩功能

图片压缩在众多应用场景中扮演着至关重要的角色,尤其是在客户端上传图片时。原始图片往往体积庞大,直接上传不仅消耗大量带宽资源,还可能导致上传速度缓慢,严重影响用户体验。因此,在图片上传至服务器前对其进行压缩处…

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

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

网信大数据信用报告查询怎么查?网信大数据有什么作用?

随着互联网的快速发展,大数据技术已经广泛应用于各行各业。其中,网信大数据信用报告查询成为了许多人关注的焦点。那么,如何查询网信大数据信用报告呢?网信大数据又有哪些作用呢?本文将为您一一解答。 一、如何查询网信大数据信用报告? 要…

NodeJS校园快递智能互助平台-计算机毕业设计源码58554

摘 要 随着校园人口的增加和生活节奏的加快,校园快递成为一个重要的服务需求。然而,传统的校园快递方式存在一些问题,例如无法满足快速和高效的需求,易发生丢失或损坏的情况,同时也给快递人员和用户带来不便。因此&am…

C++ 实现图书馆资料管理系统

1、问题描述 : 图书馆中的资料很多,如果能分类对其资料流通进行管理,将会带来很多方 便,因此需要有一个媒体库管理系统。 图书馆共有三大类物品资料:图书、视频光盘、图画。 这三类物品共同具有的属性有:编…

「51媒体」制定《媒体邀约名单》,几点建议

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体宣传加速季,100万补贴享不停,一手媒体资源,全国100城线下落地执行。详情请联系胡老师。 当制定媒体邀约名单时,以下是一些建议&#x…

海事无人机解决方案

海事巡察 海事巡察现状 巡查效率低下,存在视野盲区,耗时长,人力成本高。 海事的职能 统一管理水上交通安全和防治船舶污染。 管理通航秩序、通航环境。负责水域的划定和监督管理,维护水 上交通秩序;核定船舶靠泊安…

日志自动分析-操作系统-GscanLogonTracerf8x

🎼个人主页:金灰 😎作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️ 🍊易编橙终身成长社群&#…

Vue 中的 scoped 和 /deep/ 深度选择器

Vue在组件里写 css 给 <style> 标签加上 scoped &#xff0c;比如&#xff1a; <style lang"less" scoped> &#xff0c;这样的 css 就是局部的&#xff0c;不会影响其他组件。 假设引入了一个子组件&#xff0c;并希望在组件中修改子组件的样式&#x…

阿里云Linux中安装MySQL,并使用navicat连接以及报错解决

首先查询是否安装MySQL // linux 使用yum安装或者rpm安装。(就是一个安装工具类似于applStore&#xff0c;brew不必在意) // 区别&#xff1a;yum会自动安装你要安装的东西的其他依赖&#xff0c;rpm不会但会提示你需要安装的东西&#xff0c;比较麻烦&#xff0c;所以采用yum安…

Camera Raw:首选项 - 常规

Camera Raw 首选项中的常规 General选项卡可以为 Camera Raw 配置一些基础和常用的设置&#xff0c;这些设置可能影响界面的外观、工作流程的便利性和使用体验。 外观 Appearance 颜色主题 Color Theme 可以选择不同的界面颜色主题。 包括&#xff1a;默认值 Default、最亮 Lig…

023-GeoGebra中级篇-几何对象之圆锥曲线

圆锥曲线是解析几何中的重要部分&#xff0c;它们包括椭圆、双曲线、抛物线和圆。通过使用预先定义的变量&#xff08;如数值、点和向量&#xff09;&#xff0c;我们可以动态地构建这些曲线的方程&#xff0c;并观察它们如何随变量的变化而变化。本文将介绍如何通过定义变量来…