Java基础:常见API(Math,System,Runtime,Object,BigInteger,BigDecima)

news2024/9/24 7:13:19

1.常见API

1.1 Math类

向上取整是向着数轴右边走的意思, 负数也是. 也可以叫进一法, 不论正数负数都会往右走一.

向下取整是向着数轴左边走. 也可以叫去尾法, 不论正负数都会将小数点后的数字去掉.

1.1.2 练习

// 判断有多少水仙花数
        int count = 0;
        for (int i = 100; i < 1000; i++) {
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100 % 10;
            if (i == Math.pow(ge, 3) + Math.pow(shi, 3) + Math.pow(bai, 3)){
                count++;
            }
        }
        System.out.println("有" + count + "个水仙花数");

1.2 System类

System.exit(), 里面写0表示虚拟机正常停止, 写1表示虚拟机异常停止.

如果源数组和目的地数组都是基本数据类型, 那么两者的数据类型必须一致. 否则会报错.

源数组和目的地数组的长度也必须考虑, 如果超出则会报错.

如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型.

1.3Runtime

Runtime表示当前虚拟机的运行环境

1.4 Object

Object只有无参构造方法

1.4.1 常用方法

(1) toString

方法返回的字符串是: 包名+类名+@+地址值.

细节:

System.out.println和toString一样也能打印出地址值

system:类名out:静态变量
system.out:获取打印的对象println( ):方法
参数:表示打印的内容核心逻辑:
当我们打印一个对象的时候,底层会调用对象的toString方法,把对象变成字符串。然后再打印在控制台上,打印完毕换行处理。

如果不想打印地址值的话, 我们可以重写toString方法.(ptg插件可以在生成javabean的时候生成toString方法)

当sout中传递过来是一个对象时,会在底层使用toString方法

(2) equals()

只能比较地址值是否相同, 如果相比属性值, 可以重写equals方法. alt+insert中可以选择自动生成.

(3) clone

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

细节 : 我们不能直接使用clone, 因为它是protect的, 所以我们需要在封装的类中重写clone方法, 并且在开头要implements一个cloneable接口(该接口中不含抽象方法). 

Cloneable
如果一个接口里面没有抽象方法
表示当前的接口是一个标记性接口
现在Cloneable表示一旦了实现,那么当前类的对象就可以被克隆
如果没有实现,当前类的对象就不能克隆

实现clone的步骤:

1.重写0bject中的clone方法
2.让javabean类实现Cloneable接口
3.创建原对象并调用clone就可以了。

浅克隆

浅克隆是只克隆地址值, 缺点是当其中任一对象的字符串或数组中的值发生变化, 另一个也发生相应的变化.

深克隆

深克隆是直接创建一个新的数据, 将新的数组的地址值赋给新的对象. 字符串的地址值相同是因为串池复用.

object的clone方法是浅克隆.

想要实现深克隆需要用到第三方工具

1.5 objects

Objects是一个工具类,提供了一些方法去完成一些功能。

1.6 BigInteger

1.6.1 构造方法

(1) BigInteger(4, r), 表示[0, 15]中的随机数, 15 = 2^4 - 1.

(2) 第二个构造方法中的参数必须是整数

(3) 1.字符串中的数字必须是整数 2.字符串中的数字必须要跟进制吻合。比如二进制中,那么只能写0和1,写其他的就报错。

(4) 静态方法获取BigInteger的对象, 内部有优化
细节:
1.能表示范围比较小,只能在1ong的取值范围之内,如果超出1ong的范围就不行了。
2.在内部对常用的数字:-16~16进行了优化。提前把-16 ~ 16先创建好BigInteger的对象,如果多次获取不会重新创建新的。

1.6.2 基本使用

biginteger是对象, 是不能使用加减乘除的.

1.6.3 存储方式

将大整数对应的二进制数以32位进行分组, 再将3组的二进制值转为各自对应的十进制值, 最后再按照顺序放入数组当中.

signum表示大整数的正负, 为-1则是负数, 0则是0, 1则是正数.

 1.6.4 总结

1.7 BigDecima

1.7.1构造方法

二进制的整数部分我们知道是通过每一位的二进制数乘以2的次方后的数相加得到, 次幂从右往左递减, 小数也是如此, 次幂从右往左递减(-1, -2, -3...), 所以有些特定的小数部分很难表达出来, 需要占用很多字节. 但是long和double的字节数都有限, 所以会出现计算不准确的情况.

细节:
1.如果要表示的数字不大,没有超出double的取值范围, 建议使用静态方法
2.如果要表示的数字比较大,超出了double的取值范围,建议使用构造方法
3.如果我们传递的是0~10之间的整数,包含0,包含10,那么方法会返回已经创建好的对象,不会重新new

1.7.2基本使用

1.7.3 存储方式

先将String中每一个符号进行拆分, 然后查找对应的ASCII码表对应的数字放入数组当中.

1.7.4 总结

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

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

相关文章

代码随想录算法训练营九期第十三天 | 239. 滑动窗口最大值、347.前 K 个高频元素、总结

打卡第十三天&#xff0c;昨天休息&#xff0c;今天继续栈和队列&#xff0c;重新复习了单调队列&#xff0c;上次看ACwing的视频学了单调队列&#xff0c;没有完全学明白&#xff0c;重学之后比之前清晰多了 今日任务 滑动窗口最大值 347.前 K 个高频元素总结 239. 滑动窗口最…

【Ap AutoSAR入门与实战开发02】-【Ap_s2s模块01】: s2s的背景

总目录链接==>> AutoSAR入门和实战系列总目录 文章目录 1 s2s的背景?2 AUTOSAR 方法应支持车辆的无缝开发2.1 面向服务的ECU的解读2.2 面向信号的ECU的解读2.3 通过网关ECU实现转换1 s2s的背景? Cp AutoSAR基于传统的can,lin,flexray总线的通信,一般是面向信号设…

汽车网络安全需求分析方法综述

引言&#xff1a; 近年来&#xff0c;汽车的网络安全问题逐渐被重视&#xff0c;在汽车产品的全生命周期中&#xff0c;需要进行网络安全风险管理&#xff0c;其主要活动包括网络安全需求分析、安全策略设计与实施、运营阶段安全监控与应急响应等。 安全需求分析工作作为系统安…

信息安全概论之《密码编码学与网络安全----原理与实践(第八版)》

前言&#xff1a;在信息安全概论课程的学习中&#xff0c;参考了《密码编码学与网络安全----原理与实践&#xff08;第八版&#xff09;》一书。以下内容为以课件为主要参考&#xff0c;课本内容与网络资源为辅助参考&#xff0c;学习该课程后作出的总结。 一、信息安全概述 1…

【蓝桥杯集训9】单调栈、单调队列(模拟栈、模拟队列)专题(3 / 3)

目录 单调栈模板 1、模拟栈 单调队列模板 1、模拟队列 2、双端队列 135. 最大子序和 - 前缀和滑动窗口单调队列 单调栈模板 什么时候用单调栈&#xff1f; 求序列中每一个数左边或右边第一个比它大或小的数 1、单调递增栈 在保持栈内元素单调递增前提下&#xff08;如果…

Redis 主从库如何实现数据一致?

目录 1、主从库间如何进行第一次同步&#xff1f; 2、主从级联模式分担全量复制时的主库压力 3、主从库间网络断了怎么办&#xff1f; 总结 // 好的文章&#xff0c;值得反复去读 Redis 具有高可靠性&#xff0c;这里有两层含义&#xff1a;一是数据尽量少丢失&#xff0c;…

2023JAVA面试题全集超全面超系统超实用!早做准备早上岸

2022年我凭借一份《Java面试核心知识点》成功拿下了阿里、字节、小米等大厂的offer&#xff0c;两年的时间&#xff0c;为了完成我给自己立的flag&#xff08;拿下一线互联网企业offer大满贯&#xff09;&#xff0c;即使在职也一直在不断的学习与备战面试中&#xff01;——或…

【Spark分布式内存计算框架——Spark Streaming】6. DStream(下)流式应用状态 Kafka

3.3 流式应用状态 使用SparkStreaming处理实际实时应用业务时&#xff0c;针对不同业务需求&#xff0c;需要使用不同的函数。SparkStreaming流式计算框架&#xff0c;针对具体业务主要分为三类&#xff0c;使用不同函数进行处理&#xff1a; 业务一&#xff1a;无状态Statel…

【数电基础】——数制和码制

目录 1.概述 1.信号&#xff08;电路&#xff09;的功能 2.信号的分类&#xff1a; 3.数字信号的输入和输出的逻辑关系表示方法 2.数制 1.十进制&#xff08;D/d&#xff09; 2.二进制(B/b) 3.八进制&#xff08;O/o&#xff09; 4.十六进制&#xff08;H/h&#xff09;…

使用huggingface微调预训练模型

官方教程&#xff1a;https://huggingface.co/docs/transformers/training 准备数据集&#xff08;基于datasets库&#xff09; train.json 数据格式&#xff1a; {"source":"你是谁&#xff1f;", "target":"我是恁爹"} {"so…

FSP:Flow of Solution Procedure (CVPR 2017) 原理与代码解析

paper&#xff1a;A Gift From Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learningcode&#xff1a;https://github.com/HobbitLong/RepDistiller/blob/master/distiller_zoo/FSP.py背景深度神经网络DNN逐层生成特征。更高层的特征更接近…

内存数据库的设计与实现(已在大型项目中应用)

一、概况 1、设计总图 组成,由Redis集群缓存,普通缓存,传统数据库,各类数据驱动 2、内存数据库的增删改查,分页查询 组成,由数据查询,分页查询,数据存储,数据修改,数据删除 3、内存数据库的驱动 组成,由驱动适配器,普通缓存驱动,Redis缓存驱动 4、内存数据库与…

C++常见类型及占用内存表

GPS生产厂家在定义数据的时候都会有一定的数据类型&#xff0c;例如double、int、float等&#xff0c;我们知道它们在内存中都对应了一定的字节大小&#xff0c;而我在实际使用时涉及到了端序的问题&#xff08;大端序高字节在前&#xff0c;小端序低字节在前&#xff09;&…

redis主从同步:如何实现数据一致

Redis 提供了主从库模式&#xff0c;以保证数据副本的一致&#xff0c;主从库之间采用的是读写分离的方式。读操作&#xff1a;主库、从库都可以接收&#xff1b;写操作&#xff1a;首先到主库执行&#xff0c;然后&#xff0c;主库将写操作同步给从库。和mysql差不多。但是同步…

自动驾驶专题介绍 ———— 毫米波雷达

文章目录介绍工作原理特点性能参数应用厂家介绍 毫米波雷达是工作在毫米波波段探测的雷达&#xff0c;与普通雷达相似&#xff0c;是通过发射无线电信号并接收反射信号来测量物体间的距离。毫米波雷达工作频率为30~300GHz(波长为1 - 10mm)&#xff0c;波长介于厘米波和光波之间…

【数据挖掘实战】——家用电器用户行为分析及事件识别(BP神经网络)

项目地址&#xff1a;Datamining_project: 数据挖掘实战项目代码 目录 一、背景和挖掘目标 1、问题背景 2、原始数据 3、挖掘目标 二、分析方法与过程 1、初步分析 2、总体流程 第一步&#xff1a;数据抽取 第二步&#xff1a;探索分析 第三步&#xff1a;数据的预处…

为什么负责任的技术始于数据治理

每个组织都处理数据&#xff0c;但并非每个组织都将其数据用作业务资产。但是&#xff0c;随着数据继续呈指数级增长&#xff0c;将数据视为业务资产正在成为竞争优势。 埃森哲的一项研究发现&#xff0c;只有 33% 的公司“足够信任他们的数据&#xff0c;能够有效地使用它并从…

色环电阻的阻值如何识别

这种是色环电阻&#xff0c;其外表有一圈圈不同颜色的色环&#xff0c;现在在一些电器和电源电路中还有使用。下面的两种色环电阻它颜色还不一样&#xff0c;一个蓝色&#xff0c;一个土黄色&#xff0c;其实这个蓝色的属于金属膜色环电阻&#xff0c;外表涂的是一层金属膜&…

Qt新手入门指南 - 如何创建模型/视图(四)

每个UI开发人员都应该了解ModelView编程&#xff0c;本教程的目标是为大家提供一个简单易懂的介绍。Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff…

AJAX介绍及其应用

1.1 AJAX 简介 AJAX全称为 Asynchronous JavaScript and XML &#xff0c;就是异步的js和xml。通过AJAX可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势&#xff0c;无刷新获取数据。AJAX不是新的编程语言&#xff0c;而是一种现有的标准组合再一起使用的新方式 应…