【JavaSE】实用类——枚举类型、包装类、数学类
目录
- Java API
- 枚举
- 优势
- 代码示例
- 包装类
- 作用
- 包装类和基本数据类型的对应关系
- 包装类的构造方法
- 包装类的常用方法
- 装箱和拆箱
- 留一个问题大家猜猜看
- 包装类的特点
- Math类
- Random类
- 代码示例
Java API
- Java API(Java Application Programming Interface)
即Java应用程序编程接口,它是运行库的集合,预先定义了一些接口和类,程序员可以直接使用已经打包的接口和类做具体的应用。 - 除了“应用程序编程接口”的意思外,API也称为帮助文档
Java语言的强大之处在于它提供了多种多样的类库,从而大大提高了程序编程的效率和质量。

枚举
优势
- 枚举可以使代码易于维护,保证类型安全
- 枚举易于输入,使用枚举赋值,只需要输入枚举名,然后输入点操作符就能将所有的值显示出来。
- 枚举使代码更清晰,允许使用描述性的名称表示数据,使用时直观方便
相当于给了你固定几个选项,从中选择一个,而不让你随意给变量赋值,随意给方法传参,这样保证数据的安全性、准确性和合法性
代码示例
一周的索引、名称、状态
public enum WeekEnum {Mon(1,"星期一","忙Day"),Tue(2,"星期二","求死Day"),Wed(3,"星期三","未死Day"),Thur(4,"星期四","社死Day"),Fri(5,"星期五","福来Day"),Sat(6,"星期六","塞车Day"),Sun(7,"星期日","丧Day");private int index;private String name;private String value;WeekEnum(int index, String name, String value) {this.index = index;this.name = name;this.value = value;}public int getIndex() {return index;}public String getName() {return name;}public String getValue() {return value;}
}
根据传入的星期几获取当天的状态
public class WeekDemo {private String day;private String status;public WeekDemo(WeekEnum weekEnum) {this.day = weekEnum.getName();this.status = weekEnum.getValue();}public void showStatus(){System.out.println(day+":"+status);}
}
测试
WeekDemo weekDemo = new WeekDemo(WeekEnum.Sun);weekDemo.showStatus();
包装类
- Java语言是面向对象的,但是Java中的基本数据类型却不是面向对象的,这在实际开发中存在很多的不便。为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类,称为包装类。
- 每个基本类型在java.lang包中都有一个相应的包装类
作用
- 提供了一系列实用的属性和方法,方便对象的操作。
- 集合不允许存放基本数据类型数据,存放数字时,要用包装类型。
包装类和基本数据类型的对应关系

包装类的构造方法
- 所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例
- 包装类的构造方法有两种形式
1.public Type(type value),Type表示包装类,参数type为基本数据类型。Integer i=new Integer(520);
2.public Type(String value),除Character类外其他包装类可将一个字符串作为参数构造它们的实例,Type表示包装类,参数type为基本数据类型。Integer i=new Integer(“520”); - Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
- 当包装类构造方法参数为String 类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译通过,运行时NumberFormatException异常
包装类的常用方法
- 所有包装类都有如下方法:public static Type valueOf(type value)
Integer i=Integer.valueOf(520);
- 除Character类外,其他包装类都有如下方法:public static Type valueOf(String value)
Integer i=Integer.valueOf(“520”);
- XXXValue()方法:包装类转换成基本类型
Integer num=new Integer(20);int age=num.intValue();

- 所有包装类都有如下方法(Character类除外!)
public static 基本数据类型 parseXXX(String value)
byte b=Byte.parseByte("125");
short s=Short.parseShort("3256");
int num=Integer.parseInt("36");
long l=Long.parseLong("123456789");
float f=Float.parseFloat("3.14");
final double PI=Double.parseDouble("3.14159");
boolean bool=Boolean.parseBoolean("false");
parseXXX()方法的作用:把字符串转换为相应的基本数据类型数据
- toString()方法:以字符串形式返回包装对象表示的基本类型数据
byte bt=12;
String b=Byte.toString(bt);
short sh=25;
String s=Short.toString(sh);
String num=Integer.toString(520);
String l=Long.toString(123456789l);
String f=Float.toString(3.14f);
String PI=Double.toString(3.1415926d);
String bool=Boolean.toString(false);
装箱和拆箱
Java 5.0版本以后,程序员不需要编码实现基本数据类型和包装类之间的转换,编译器会自动完成
- 装箱:基本类型转换为包装类的对象
- 拆箱:包装类对象转换为基本类型
Integer intObj=5; //装箱
int intValue=intObj; //拆箱
留一个问题大家猜猜看
Integer c = 100;Integer d = 100;System.out.println(c == d);Integer a = 128;Integer b = 128;System.out.println(a == b);
输出结果是什么呢?
包装类的特点
- 所有包装类都是final类型,不能创建它们的子类
- Java 5.0版本以后,程序员不需要编码实现基本数据类型和包装类之间的转换,编译器会自动完成。
- JDK1.5后,允许基本数据类型和包装类型进行混合数学运算。
- 包装类并不是用来取代基本数据类型的,在基本数据类型需要用对象表示时使用
Math类
Math类提供了常用的数学运算方法和两个静态常量E(自然对数的底数)和PI

Random类
Random类:用于生成伪随机数流

代码示例
public class Lucky {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String numStr = null;String patten = "[0-9]+";Random random = new Random();int randomNum = random.nextInt(10);do {System.out.println("请输入四位会员号:");numStr = sc.nextLine();if (!Pattern.matches(patten, numStr) || numStr.length() != 4) {System.out.println("您输入的字符不合法,请重新输入:");}} while (!Pattern.matches(patten, numStr) || numStr.length() != 4);int num = Integer.parseInt(numStr);int centenary = (num / 100) % 10;System.out.println("您" + ((centenary == randomNum) ? "是" : "不是") + "幸运会员,随机数字为:" + randomNum + ",您的会员号百位为:" + centenary);}
相关文章:
【JavaSE】实用类——枚举类型、包装类、数学类
目录 Java API枚举优势代码示例 包装类作用包装类和基本数据类型的对应关系包装类的构造方法包装类的常用方法装箱和拆箱 留一个问题大家猜猜看包装类的特点 Math类Random类代码示例 Java API Java API(Java Application Programming Interface) 即Java应用程序编程接口&#…...
Qt中常见的JS类和函数(二): 全局对象
相关系列文章 Qt中字符串转换为JS的函数执行 Qt中常见的JS类和函数(一): 全局对象 Qt中常见的JS类和函数(二): 全局对象 目录 2.3.构造函数属性 2.3.1.Object 2.3.2.Function 2.3.3.Array 2.3.4.ArrayBuffer 2.3.5.String 2.3.6.Boolean 2.3.7.Number 2.3.8.DataView …...
mysql 安装 与 使用
1.安装地址(社区免费版本) https://dev.mysql.com/downloads/mysql/ 2.查看端口 ****是否被占用(例子 3306端口) netstat -an | find "3306" 3.配置环境 系统变量名 变量名:MYSQL_HOME 变量值&#…...
2月26日做题总结(C/C++真题)
今天是2024年2月16日,新学期开学第一天。在大三这个重要阶段,我决定参加24年秋招。在准备项目的同时,也先做一些入门的笔试题吧,慢慢积累。如果你也是处于这个阶段,欢迎来找我交流讨论! 今天是做题第一天&a…...
创作纪念日:记录我的成长与收获
机缘 一开始是在我深入学习前端知识的Vue.js框架遇到了一个问题,怎么都解决不了,心烦意乱地来csdn上找解决方法。开心的是真被我找到了,真的很感恩,也意识到在这个平台上分享自己的经验是多么有意义的事情,可能随便的…...
全志H713/H618方案:调焦电机(相励磁法步进电机)的驱动原理、适配方法
一、篇头 全志H713平台,作为FHD投影的低成本入门方案,其公板上也配齐了许多投影使用的模组,本文即介绍投影仪调焦所用的步进电机,此模组的驱动原理、配制方法、调试方法。因为条件限制,本文采用的是H618香橙派Z3平台&…...
excel数据导入到数据库的方法
背景:最近在做和HW对接的某项目,需要将第三方接口提供的数据进行展示;在对方提供了详细的excel后,觉得也挺简单的就是将excel数据导入到数据库中。 方案一: 普通的初学者肯定会想,那我读取excel数据&…...
Runaway Queries 管理:提升 TiDB 稳定性的智能引擎
在数字化系统扮演重要角色的今天,数据库稳定性成为企业关注的核心问题。对于重要计算机系统而言,突发的性能下降可能对业务造成不可估量的损失。为了稳定数据库性能,用户可以从管理流程入手规范变更的测试,或者利用产品手段减少预…...
K8S部署Java项目(Gitlab CI/CD自动化部署终极版)
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
对Redis锁延期的一些讨论与思考
上一篇文章提到使用针对不同的业务场景如何合理使用Redis分布式锁,并引入了一个新的问题 若定义锁的过期时间是10s,此时A线程获取了锁然后执行业务代码,但是业务代码消耗时间花费了15s。这就会导致A线程还没有执行完业务代码,A线程…...
【高德地图】Android高德地图初始化定位并显示小蓝点
📖第3章 初始化定位并显示小蓝点 ✅第1步:配置AndroidManifest.xml✅第2步:设置定位蓝点✅第3步:初始化定位✅完整代码 ✅第1步:配置AndroidManifest.xml 在application标签下声明Service组件 <service android:n…...
继电器测试中需要注意的安全事项有哪些?
继电器广泛应用于电气控制系统中的开关元件,其主要功能是在输入信号的控制下实现输出电路的断开或闭合。在继电器测试过程中,为了确保测试的准确性和安全性,需要遵循一定的安全事项。以下是在进行继电器测试时需要注意的安全事项:…...
Java向ES库中插入数据报错:I/O reactor status: STOPPED
Java向ES库中插入数据报错:java.lang.IllegalStateException: Request cannot be executed; I/O reactor status: STO 一、问题问题原因 二、解决思路 一、问题 在使用Java向ES库中插入数据时,第一次成功插入,第二次出现以下错误:…...
vue3实现页面跳转
有需求是在vue项目中实现点击按钮完成页面跳转。这里不适用a标签,而是用vue自带的vue-router。 首先看一下项目结构 src │ App.vue │ main.js │ ├─router │ index.js │ └─views index.vue content.vue 可以看到&…...
【Linux运维系列】vim操作
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
Centos服务器部署前后端项目
目录 准备工作1. 准备传输软件2. 连接服务器 部署Mysql1.下载Mysql(Linux版本)2. 解压3. 修改配置4. 启动服务另一种方法Docker 部署后端1. 在项目根目录中创建Dockerfile文件写入2. 启动 部署前端1. 在项目根目录中创建Dockerfile文件写入2. 启动 准备工作 1. 准备传输软件 …...
【初始RabbitMQ】延迟队列的实现
延迟队列概念 延迟队列中的元素是希望在指定时间到了之后或之前取出和处理消息,并且队列内部是有序的。简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列 延迟队列使用场景 延迟队列经常使用的场景有以下几点: 订单在十分…...
spark为什么比mapreduce快?
spark为什么比mapreduce快? 首先澄清几个误区: 1:两者都是基于内存计算的,任何计算框架都肯定是基于内存的,所以网上说的spark是基于内存计算所以快,显然是错误的 2;DAG计算模型减少的是磁盘I/O次数&…...
Unity通过XXpermission插件获取MANAGE_EXTERNAL_STORAGE权限
最近公司准备用Unity做一个安卓端的文件管理器功能,文件管理器已经做完了。刚开始的时候想要申请一下所有文件权限,发现在Unity里面申请所有文件权限(android.permission.MANAGE_EXTERNAL_STORAGE)相对来说比较麻烦。所以准备写一下文章记录一下如何申请…...
「连载」边缘计算(二十一)02-26:边缘部分源码(源码分析篇)
(接上篇) DeviceTwin struct组成剖析 该部分对DeviceTwin struct的组成进行剖析。接着devicetwin struct调用链剖析的实例化DeviceTwin struct(dt : DeviceTwin{})往下剖析,进入DeviceTwin struct的定义,…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
