JavaSE 笔记【八】Java常用类之比较器、System类、Math类、BigInteger、BigDecimal

视频链接:Java零基础教程

Java比较器

Java 中的对象,正常情况下,只能进行比较: == 或 != 。不能使用 > 或 < 的。但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小。如何实现?使用两个接口中的任何一个:Comparable(自然排序) 或 Comparator(定制排序)

java.util.Comparable接口的使用举例:
  1. 像String、包装类等实现了Comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式
  2. 像String、包装类重写compareTo()方法以后,进行从小到大的排列
  3. 重写compareTo()的规则:
    如果当前对象this大于形参对象obj,则返回正整数
    如果当前对象this小于形参对象obj,则返回负整数
    如果当前对象this等于形参对象obj,则返回零
  4. 对于自定义类来说,如果需要排序,我们可以让自定义类实现Comparable接口,重写compareTo()方法,在compareTo(obj)方法中指明如何排序
java.util.Comparator
  1. 背景
    当前元素类型没有实现java.util.Comparable接口而又不方便修改代码,或者实现了java.util.Comparable接口的排序规则不适合当前的操作,那么可以考虑使用Comparator的对象来排序,强行对多个对象进行整体排序比较
  2. 重写compare(Object o1, Object o2)方法,比较o1和o2的大小:如果方法返回正整数,则表示o1大于o2;如果返回0,表示相等;如果返回负整数,表示o1小于o2
  3. 可以将Comparator传递给sort方法(如Collections.sort或Arrays.sort),从而允许在排序顺序上实现精准控制
    还可以使用Compatator来控制某些数据结构(如有序set或有序映射)的顺序,或者为哪些没有自然顺序的对象collection提供排序

Comparable接口 与 Comparator接口 的使用对比

Comparable接口的方式一旦给定,保证Comparable接口实现类的对象在任何位置都可以比较大小
Comparator接口属于临时性的比较

System

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包
由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用

  • 成员变量
    System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)
  • 成员方法
    native long currentTimeMillis() :该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1日0时0分0秒所差的毫秒数
    void exit(int status) :该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能
    void gc() :该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况
    String getProperty(String key):该方法的作用是获得系统中属性名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示:
属性名属性说明
java.versionJava运行时环境版本
java.homeJava安装目录
os.name操作系统的名称
os.version操作系统的版本
user.name用户的账户名称
user.home用户的主目录
user.dir用户的当前工作目录
Math类

java.lang.Math提供了一系列静态方法用于科学计算。其方法的参数和返回值类型一般为double型

方法名说明
abs绝对值
acos,asin,atan,cos,sin,tan三角函数
sqrt平方根
pow(double a, double b)a的b次幂
log自然对数
expe为底指数
max(double a, double b)-
min(double a, double b)-
random()返回0.0到1.0的随机数
long round(double a)double型数据a转化为long型(四舍五入)
toDegrees(double angrad)弧度 ->角度
toRadians(double angdeg)角度->弧度
BigInteger

Integer类作为int的包装类,能存储的最大整形值为2^31 - 1,Long类也是有限的,最大为2^63 - 1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类都无能为力,更不用说进行运算了
java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger提供了所有Java的基本整数操作符的对应物,并提供java.lang.Math的所有相关方法。另外,BigInteger还提供一下运算:模算术、GCD计算、质数测试、素数生成、位操作以及一些其他操作

构造器
BigInteger(String val) :根据字符串构建BigInteger对象

常用方法

方法名说明
public BigInteger abs()返回此BigInteger的绝对值的BigInteger
BigInteger add(BigInteger val)返回其值为 (this + val) 的BigInteger
BigInteger subtract(BigInteger val)返回其值为 (this - val) 的BigInteger
BigInteger multiply(BigInteger val)返回其值为 (this * val) 的BigInteger
BigInteger divide(BigInteger val)返回其值为 (this / val) 的BigInteger。整数相除只保留整数部分
BigInteger remainder(BigInteger val)返回其值为 (this % val) 的BigInteger
BigInteger[] divideAndRemainder(BigInteger val)返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger的数组
BigInteger pow(int exponent)返回其值为 (this ^ exponent) 的 BigInteger
BigDecimal

一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类
BigDecimal类支持不可变类、任意精度的有符号十进制定点数

构造器
public BigDecimal(double val)
public BIgDecimal(String val)

常用方法
public BigDecimal add(BigDecimal augend)
public BigDecimal subtract(BigDecimal subtrahend)
public BigDecimal multiply(BigDecimal multiplicand)
public BIgDecimal divide(BigDecimal divisor, int scale, int roundingMode)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值