知识库 知识库
首页
  • Hyperskill - Java

    • Java basic
    • Java OOP
    • 应知
    • 扩展
    • IO & Stream
    • Error & Exception
    • Algorithm & Data structure
    • Design pattern
    • Web
    • Spring boot
  • 练习题

    • 选择题 & 填空题
    • 代码题
  • Frank - Java与生活 (OOP)

    • 参考资料
    • Java基础
    • OOP上半部分
    • OOP下半部分
  • Frank - Java API进阶

    • Base API
    • Unit Test and main function
  • 学习笔记
  • 学习笔记

    • 数据库
  • Frank - MySQL删库跑路

    • 安装、连接、配置
    • 基本操作——数据库
    • 基本操作——表
    • 基本操作——数据
    • 数据类型
    • 列属性完整性
    • 数据库设计思维
    • 单表查询
    • 多表查询
  • 学习笔记

    • 其它
  • Frank - Linux现代方法

    • 必知
    • 命令
    • 技巧
  • 技术文档
  • Git
  • GitHub技巧
  • 前端
  • Khan Academy - 语法
  • Monthly
  • 阅读
  • Others
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 标签
  • 归档
GitHub (opens new window)

Jim FuckPPT

Java小学生
首页
  • Hyperskill - Java

    • Java basic
    • Java OOP
    • 应知
    • 扩展
    • IO & Stream
    • Error & Exception
    • Algorithm & Data structure
    • Design pattern
    • Web
    • Spring boot
  • 练习题

    • 选择题 & 填空题
    • 代码题
  • Frank - Java与生活 (OOP)

    • 参考资料
    • Java基础
    • OOP上半部分
    • OOP下半部分
  • Frank - Java API进阶

    • Base API
    • Unit Test and main function
  • 学习笔记
  • 学习笔记

    • 数据库
  • Frank - MySQL删库跑路

    • 安装、连接、配置
    • 基本操作——数据库
    • 基本操作——表
    • 基本操作——数据
    • 数据类型
    • 列属性完整性
    • 数据库设计思维
    • 单表查询
    • 多表查询
  • 学习笔记

    • 其它
  • Frank - Linux现代方法

    • 必知
    • 命令
    • 技巧
  • 技术文档
  • Git
  • GitHub技巧
  • 前端
  • Khan Academy - 语法
  • Monthly
  • 阅读
  • Others
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 标签
  • 归档
GitHub (opens new window)
  • Hyperskill - Java

  • 练习题

  • Frank - Java与生活

  • Frank - Java API进阶

    • Base API

      • Java API定义和用处
      • Number & Math
        • 包装类
        • java.lang.Number
        • java.lang.Math
      • Random
      • Date & Calendar
      • System
    • Unit Test and Main function

    • Throwable

  • 学习笔记

  • Java
  • Frank - Java API进阶
  • Base API
Jim
2022-09-22
目录

Number & Math

# 包装类

在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。

image-20220922175742964

包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。Boolean、Character 为 Object 的子类。

当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number 类属于 java.lang 包。

https://www.runoob.com/java/java-number.html

# java.lang.Number

int x = 1;
Integer y = 2;
1
2

x为原始数据类型,无方法调用。

y为一个包装类对象,可调用方法。

System.out.println(y.hashCode());
1

# java.lang.Math

java.lang.Math类下的方法基本都是 static。不用 new 对象,直接就可以调用方法。

打一个比方,Math类就相当于你家里的工具箱,你爸让你把螺丝刀递给他(假如他需要比较两个数找到小的那一个)

你说:“爸,你等一下,我去五金店买一个新的来(我先 new 一个对象)。”

你爸:你傻逼吧,工具箱里不是有吗。

你爸说完就从工具箱(Math)里拿了把螺丝刀(min())出来(Math.min())

int minNu = Math.min(number1, number2);
1

所以 Math 就是一个工具类。

如果,点到min()方法下面看它的源码。你会发现人家写的源码,多标准,多简洁。

public static int min(int a, int b) {
    return (a <= b) ? a : b;
}
1
2
3

另一个返回double类型的方法 Math.min() 又多了两个严谨(浮点数有关)的 if 判断。看人家这代码~

public static double min(double a, double b) {
    if (a != a)
        return a;   // a is NaN
    if ((a == 0.0d) &&
        (b == 0.0d) &&
        (Double.doubleToRawLongBits(b) == negativeZeroDoubleBits)) {
        // Raw conversion ok since NaN can't map to -0.0.
        return b;
    }
    return (a <= b) ? a : b;
}
1
2
3
4
5
6
7
8
9
10
11

如果是你来写,你可能会写成下面这样 ... 而人家一行搞定 😃

if (a <= b) {
    return a;
} else {
    return b;
}
1
2
3
4
5
编辑 (opens new window)
上次更新: 2022/10/04, 21:45:45
Java API定义和用处
Random

← Java API定义和用处 Random→

最近更新
01
《挪威的森林》
04-14
02
青钢影
04-14
03
Processing strings
02-18
更多文章>
Theme by Vdoing | Copyright © 2022-2023 Jim Frank | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式