当前位置: 首页 > news >正文

【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异常

包装类的常用方法

  1. 所有包装类都有如下方法:public static Type valueOf(type value)
Integer i=Integer.valueOf(520);
  1. 除Character类外,其他包装类都有如下方法:public static Type valueOf(String value)
Integer i=Integer.valueOf(“520”);
  1. XXXValue()方法:包装类转换成基本类型
	Integer num=new Integer(20);int age=num.intValue();

在这里插入图片描述

  1. 所有包装类都有如下方法(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()方法的作用:把字符串转换为相应的基本数据类型数据

  1. 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高德地图初始化定位并显示小蓝点

&#x1f4d6;第3章 初始化定位并显示小蓝点 ✅第1步&#xff1a;配置AndroidManifest.xml✅第2步&#xff1a;设置定位蓝点✅第3步&#xff1a;初始化定位✅完整代码 ✅第1步&#xff1a;配置AndroidManifest.xml 在application标签下声明Service组件 <service android:n…...

继电器测试中需要注意的安全事项有哪些?

继电器广泛应用于电气控制系统中的开关元件&#xff0c;其主要功能是在输入信号的控制下实现输出电路的断开或闭合。在继电器测试过程中&#xff0c;为了确保测试的准确性和安全性&#xff0c;需要遵循一定的安全事项。以下是在进行继电器测试时需要注意的安全事项&#xff1a;…...

Java向ES库中插入数据报错:I/O reactor status: STOPPED

Java向ES库中插入数据报错&#xff1a;java.lang.IllegalStateException: Request cannot be executed; I/O reactor status: STO 一、问题问题原因 二、解决思路 一、问题 在使用Java向ES库中插入数据时&#xff0c;第一次成功插入&#xff0c;第二次出现以下错误&#xff1a…...

vue3实现页面跳转

有需求是在vue项目中实现点击按钮完成页面跳转。这里不适用a标签&#xff0c;而是用vue自带的vue-router。 首先看一下项目结构 src │ App.vue │ main.js │ ├─router │ index.js │ └─views index.vue content.vue 可以看到&…...

【Linux运维系列】vim操作

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Centos服务器部署前后端项目

目录 准备工作1. 准备传输软件2. 连接服务器 部署Mysql1.下载Mysql(Linux版本)2. 解压3. 修改配置4. 启动服务另一种方法Docker 部署后端1. 在项目根目录中创建Dockerfile文件写入2. 启动 部署前端1. 在项目根目录中创建Dockerfile文件写入2. 启动 准备工作 1. 准备传输软件 …...

【初始RabbitMQ】延迟队列的实现

延迟队列概念 延迟队列中的元素是希望在指定时间到了之后或之前取出和处理消息&#xff0c;并且队列内部是有序的。简单来说&#xff0c;延时队列就是用来存放需要在指定时间被处理的元素的队列 延迟队列使用场景 延迟队列经常使用的场景有以下几点&#xff1a; 订单在十分…...

spark为什么比mapreduce快?

spark为什么比mapreduce快&#xff1f; 首先澄清几个误区&#xff1a; 1&#xff1a;两者都是基于内存计算的&#xff0c;任何计算框架都肯定是基于内存的&#xff0c;所以网上说的spark是基于内存计算所以快&#xff0c;显然是错误的 2;DAG计算模型减少的是磁盘I/O次数&…...

Unity通过XXpermission插件获取MANAGE_EXTERNAL_STORAGE权限

最近公司准备用Unity做一个安卓端的文件管理器功能&#xff0c;文件管理器已经做完了。刚开始的时候想要申请一下所有文件权限&#xff0c;发现在Unity里面申请所有文件权限(android.permission.MANAGE_EXTERNAL_STORAGE)相对来说比较麻烦。所以准备写一下文章记录一下如何申请…...

「连载」边缘计算(二十一)02-26:边缘部分源码(源码分析篇)

&#xff08;接上篇&#xff09; DeviceTwin struct组成剖析 该部分对DeviceTwin struct的组成进行剖析。接着devicetwin struct调用链剖析的实例化DeviceTwin struct&#xff08;dt : DeviceTwin{}&#xff09;往下剖析&#xff0c;进入DeviceTwin struct的定义&#xff0c;…...

QuickLook OfficeViewer-Native:基于原生Office组件的文档预览解决方案

QuickLook OfficeViewer-Native&#xff1a;基于原生Office组件的文档预览解决方案 【免费下载链接】QuickLook.Plugin.OfficeViewer-Native View Word, Excel, and PowerPoint files with MS Office and WPS Office components. 项目地址: https://gitcode.com/gh_mirrors/q…...

ComfyUI-Impact-Pack架构揭秘:AI图像生成中的模块化与可扩展性设计

ComfyUI-Impact-Pack架构揭秘&#xff1a;AI图像生成中的模块化与可扩展性设计 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地…...

生成式AI伦理测试:偏见检测——软件测试从业者的专业视角与实战指南

随着生成式人工智能在内容创作、代码生成、测试用例设计等领域的深度应用&#xff0c;其潜在的伦理风险&#xff0c;尤其是偏见问题&#xff0c;已成为软件测试从业者必须正视的核心挑战。偏见并非简单的功能缺陷&#xff0c;而是深植于数据、算法及交互过程中的系统性不公平现…...

LILYGO T-FPGA开发套件:ESP32-S3与FPGA协同开发指南

1. LILYGO T-FPGA开发套件概览LILYGO T-FPGA开发套件是一款将ESP32-S3无线微控制器与Gowin GW1NSR-4C FPGA集成在一起的创新硬件平台。这个M.2规格的模块设计非常巧妙&#xff0c;通过标准接口可以轻松插入配套的扩展底板&#xff0c;为开发者提供了完整的物联网可编程逻辑开发…...

3步实现本地分屏游戏:NucleusCoop让单机游戏变多人同屏神器

3步实现本地分屏游戏&#xff1a;NucleusCoop让单机游戏变多人同屏神器 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 你是否曾经想过和朋友们在同…...

SCP单细胞分析终极指南:5步快速掌握完整分析流程

SCP单细胞分析终极指南&#xff1a;5步快速掌握完整分析流程 【免费下载链接】SCP An end-to-end Single-Cell Pipeline designed to facilitate comprehensive analysis and exploration of single-cell data. 项目地址: https://gitcode.com/gh_mirrors/sc/SCP SCP单细…...

保研面试避坑指南:为什么我刷了两个月408和OJ,导师却只问我的大创项目?

保研面试的认知突围&#xff1a;为什么导师更关注你的项目而非专业课&#xff1f; 每年保研季&#xff0c;总有一批计算机专业的学生陷入同样的困境——他们刷遍了408四门专业课的习题集&#xff0c;在LeetCode上解决了上百道算法题&#xff0c;却在面试现场被导师连续追问一个…...

用逻辑分析仪抓波形,手把手教你调试AT24C08的I2C读写时序(附代码避坑点)

用逻辑分析仪精准调试AT24C08的I2C通信&#xff1a;从波形捕获到代码优化的完整指南 当你在深夜调试一块无法正常读写的AT24C08 EEPROM芯片时&#xff0c;是否曾盯着示波器上那些跳动的波形感到无从下手&#xff1f;I2C通信作为嵌入式开发中最常见的协议之一&#xff0c;其看似…...

STK覆盖分析进阶:如何用Python创建多层高度网格,评估低轨星座对空域的多维度覆盖?

STK覆盖分析进阶&#xff1a;Python实现低轨星座三维空域覆盖评估实战指南 在低轨星座系统设计中&#xff0c;覆盖性能评估是核心环节。传统二维平面分析已无法满足对无人机、高空气球等不同高度目标的精细化服务评估需求。本文将深入探讨如何利用STK与Python联合仿真&#xff…...

避坑指南:ESP32 MicroPython读写SD卡,为什么你的代码总报错?

ESP32 MicroPython SD卡读写避坑实战&#xff1a;从报错到稳定运行的深度解析 当你在ESP32上尝试用MicroPython操作SD卡时&#xff0c;是否遇到过这些令人抓狂的场景&#xff1f;明明按照教程连接了硬件&#xff0c;代码却抛出OSError: no SD card&#xff1b;或者文件系统挂载…...