【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);
    }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设备管理系统解决方案

软件资料获取:软件项目开发全套文档下载_软件项目文档-CSDN博客 1.系统概述 1.1.需求描述 建立设备信息库,对设备相关档案的登录、整理。通过建立完善的设备档案,将设备的各类原始信息进行信息化管理,使设备档案查询工作方便快…

NoReturn与None的区别

问题来源: class xx:def __init__(self) -> NoReturn:passpycharm编译器提示如下问题: init should return None 根因探索: None 是Python的一个特殊的数据类型,用于表示空值或者没有值。当一个函数没有显式返回值时&#x…

模型预测控制MPC算法的讲解-案例(C语言代码)

目录 一、模型预测控制MPC的基本原理 1.1 建立模型 1.2 设定目标和约束条件 1.3 求解优化问题 1.4 应用控制输入 1.5 重复优化 二、模型预测控制MPC的特点 三、应用场景 四、应用案例 一个MPC算法的简化版框架: 4.1 案例系统模型 4.2 控制目标和当前状态…

【JavaWeb】

Javaweb 数据库相关概念MySQL数据库MySQL数据模型SQLDDL--操作数据库图形化客户端工具DML--操作数据DQL数据库约束 数据库设计多表查询事务 数据库相关概念 数据库 存储数据的仓库,数据是有组织的进行存储 英文:DataBase,简称DB 数据库管理系…

自然语言:信息抽取技术在CRM系统中的应用与成效

一、引言 在当今快速变化的商业环境中,客户关系管理(CRM)已成为企业成功的关键因素。CRM系统的核心在于有效地管理客户信息,跟踪与客户的每一次互动,以及深入分析这些数据以提升客户满意度和忠诚度。在我最近参与的一个…

SpringBoot+Vue全栈开发-刘老师教编程(b站)(一)

课堂内容 Java EE企业级框架:SpringBootMyBatisPlusWeb前端核心框架:VueElementUI公共云部署:前后端项目集成打包与部署 B/S(Browser/Server):浏览器/服务器架构模式 C/S(Client/Server):客户端/服务器架构模式 Maven是一个项目管理工具&…

【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)

目录 1、锁的策略 1.1、乐观锁和悲观锁 1.2、轻量级锁和重量级锁 1.3、自旋锁和挂起等待锁 1.4、普通互斥锁和读写锁 1.5、公平锁和非公平锁 1.6、可重入锁和不可重入锁 2、synchronized 内部的升级与优化过程 2.1、锁的升级/膨胀 2.1.1、偏向锁阶段 2.1.2、轻量级锁…

为什么会造成服务器丢包?

随着云服务器市场的发展和网络安全问题,服务器丢包问题成为了一个普遍存在的现象。服务器丢包是指在网络传输过程中,数据包由于各种原因未能到达目标服务器,导致数据传输中断或延迟。那么,为什么会造成服务器丢包呢?下…

naive-ui-admin 表格去掉工具栏toolbar

使用naive-ui-admin的时候,有时候不需要显示工具栏,工具栏太占地方了。 1.在src/components/Table/src/props.ts 里面添加属性 showToolbar 默认显示,在不需要的地方传false。也可以默认不显示 ,这个根据需求来。 2.在src/compo…

在SAP HANA中使用OData(二)

通常有两种方式通过OData来暴露SAP HANA中的数据库对象,一是直接使用Database Object,比如前一篇和本篇文章介绍的例子,这种方式针对于数据已经存在于SAP HANA中,在Repository中没有对应的设计时对象(Design-time Object)&#xf…

基于 LVGL 使用 SquareLine Studio 快速设计 UI 界面

目录 简介注册与软件获取工程配置设计 UI导出源码板级验证更多内容 简介 SquareLine Studio 是一款专业的 UI 设计软件,它与 LVGL(Light and Versatile Graphics Library,轻量级通用图形库)紧密集成。LVGL 是一个轻量化的、开源的…

Redis String 类型底层揭秘

目录 前言 String 类型低层数据结构 节省内存的数据结构 前言 Redis 的 string 是个 “万金油” ,这么评价它不为过. 它可以保存Long 类型整数,字符串, 甚至二进制也可以保存。对于key,value 这样的单值,查询以及插…

[足式机器人]Part2 Dr. CAN学习笔记-Ch00-2 - 数学知识基础

本文仅供学习使用 本文参考: B站:DR_CAN 《控制之美(卷1)》 王天威 《控制之美(卷2)》 王天威 Dr. CAN学习笔记-Ch00 - 数学知识基础 Part2 4. Ch0-4 线性时不变系统中的冲激响应与卷积4.1 LIT System:Linear Time Invariant4.2 卷积 Convolution4.3 单位冲激 Unit Impulse—…

Linux安装Nginx详细步骤

1、创建两台虚拟机,分别为主机和从机,区别两台虚拟机的IP地址 2、将Nginx素材内容上传到/usr/local目录(pcre,zlib,openssl,nginx) 附件 3、安装pcre库   3.1 cd到/usr/local目录 3.2 tar -zxvf pcre-8.36.tar.gz 解压 3.3 cd…

matlab 方向向量约束的PCA快速粗配准

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的GPT爬虫。 一、算法原理 该方法由本人原创,目前尚未见有相关论文用到。具体原理看代码即可。 二、代码实现 clc;clear; %% ------…

在Arcgis中删除过滤Openstreetmap道路属性表中指定highway类型道路

一、导出道路类型并分析 1. 导出道路类型 选中highway属性列,选择汇总→确定 2. 分析 用Excel打开输出表,包含的道路类型如下 0.空值’’ 车辆可行驶道路(和bfmap的并集) 空值(无定义道路) 二、…

数据分析(二):学生成绩预测分析报告

目录 摘要 一、引言 二、 数据源介绍 三、 数据清洗和预处理 3.1 缺失值处理 3.2 异常值处理 3.3 数据编码 四、 探索性数据分析 4.1 可视化相关统计量 4.2 目标数据的分布情况 4.3 Pearson 相关性分析 五、 特征工程 5.1 特征构造 5.1.1 总饮酒量 5.1.2 整体关…

【前端知识点】

虚拟 dom: 虚拟 dom 就是 vue 通过 js 对象渲染虚拟 dom 的,虚拟 dom 的 js 对象包含节点的类型、属性、子节点等信息,这些虚拟 dom 节点会构成一棵树形结构,用来表示整个页面的结构。 当 vue 组件更新时,会通过 diff…

牛客前端八股文(每日更新)

1.说说HTML语义化? 得分点:语义化标签、利于页面内容结构化、利于无CSS页面可读、利于SEO、利于代码可读 1,标签语义化是指在开发时尽可能使用有语义的标签,比如header,footer,h,p&#xff0c…

Linux学习之system V

目录 一,system V共享内存 快速认识接口 shmget(shared memory get) shmat(shared memory attach) shmdt(shared memory delete) shmctl (shared memory control) 编写代码 综上那么共享内存与管道通信有什么区别? system v消息队列 system v信号…