【JavaSE】实用类——枚举类型、包装类、数学类

news2025/7/16 15:33:37

目录

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL-事务,properties文件解析,连接池

1.事务机制管理 1.1 Transaction事务机制管理 默认情况下是执行一条sql语句就保存一次,那么比如我们需要三条数据同时成功或同时失败就需要开启事务机制了。开启事务机制后执行过程中发生问题就会回滚到操作之前,相当于没有执行操作。 1.2 事务的特征 事…

【Python笔记-设计模式】责任链模式

一、说明 旨在将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。 (一) 解决问题 将请求的发送者和接受者解耦,并使请求随着处理对象链传递,优化系统内部处理逻辑 (二) 使…

springboot+vue前后端分离适配cas认证的跨域问题

0. cas服务搭建参考:CAS 5.3服务器搭建_cas-overlay-CSDN博客 1. 参照springsecurity适配cas的方式, 一直失败, 无奈关闭springssecurity认证 2. 后端服务适配cas: 参考前后端分离项目(springbootvue)接入单点登录cas_前后端分离做cas单点登录-CSDN博客 1) 引入maven依赖 …

shell的基本介绍

一. 什么是shell Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程 序设计语言。shell是解释执行的。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问…

[c 语言] 大端,小端;网络序,主机序

在网络编程中,特别是底层网卡驱动开发时,常常遇到字节序问题。字节序指的是多字节数据类型在内存中存放的顺序,高位保存在低地址还是高地址,以此来划分大端还是小端。 1 大端和小端 大端和小端指的是 cpu 的属性,常见…

视频如何无水印保存?这两个方法帮你一键保存

在互联网的浩瀚海洋中,我们时常会遇到那些令人心动、想要珍藏的视频。无论是教育资料、精彩瞬间,还是心仪的影片、综艺节目,我们都希望能够随时随地欣赏它们。然而,网络上的视频往往受到地域、平台、设备等多种限制,使…

数组指针。

数组指针:*先与数组名结合,后与方块结合。 指针数组:*先与方块结合。 int(*p)[5]和&arr的类型均为int(*)[5] &arr取出的是数组整个地址。&arr[0]与arr相同,是数组首地址。 一般在二维数组中使用数组指针 打印时要写…

StarRocks实战——多维分析场景与落地实践

目录 一、OLAP 系统历史背景 1.1 历史背景与痛点 1.2 组件诉求 二、StarRocks 的特点和优势 2.1 极致的查询性能 2.2 丰富的导入方式 2.3 StarRocks 的优势特点 三、多维分析的运用场景 3.1 实时计算场景 / 家长监控中心 3.2 实时更新模型选择 3.2.1 更新模型UNIQU…

动态规划的时间复杂度优化

作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 优化动态规划的时间复杂度,主要有如下几种: 一,不同的状态表示。 比如:n个人,m顶帽子。 第一种方式:dp[i][mask] ,i表示前i个人已经选择帽子&…

安防视频监控平台EasyNVR级联视频上云管理平台EasyNVS,出现报错“i/o deadline reached”该如何解决?

上云网关管理平台EasyNVS视频综合管理系统具备汇聚与管理EasyGBS、EasyNVR等平台的能力,系统可以将接入的视频资源实现视频能力统一输出,并能进行远程可视化运维等管理功能,还能解决设备现场没有固定公网IP却需要在公网直播的需求。 有用户反…

【数据结构】栈OJ题《用栈实现队列》(题库+解析+代码)

1. 前言 通过前面栈的实现和详解大家对队列应该有一定熟悉了,现在上强度开始做题吧 栈详解:http://t.csdnimg.cn/9Fsbs 本体的做题思路也可以参考上一篇文章,就是有一点点不同。 用队列实现栈:http://t.csdnimg.cn/V2qjW 2. …

Connection模块类功能联调(整合三)

目录 概要 tcp_cli.cc tcp_srv.cc server.hpp 测试结果 第三次整合 概要 本主要是将以下模块进行整合测试 Connection管理类实现(模块六)-CSDN博客 EventLoop整合与TimerWheel联合调试(整合二)-CSDN博客 tcp_cli.cc #include "../source/server.hpp"int main…

大开眼界的4款黑科技软件,功能强大,网友:越用越上瘾

作为一名热衷于探索软件的搞机爱好者,小蛙在各大软件论坛间游走,旨在帮助大家在纷繁复杂的Windows软件世界中,寻找到那些真正值得安装的神器。 在忙碌的现代生活中,我们的磁盘空间和时间都显得尤为宝贵,没必要下一些鸡…

web网站怎么做压力测试

Web网站性能体现在并发用户数已经网站的吞吐量和时延。 最简单的压力测试工具就是ab "Apache Benchmark" 下面将介绍ab的安装和使用: 1. ab的安装 ab的安装非常简单,安装了httpd,就自带ab。 CentOS下的安装: yum install -y httpd …

docker 常用指令(启动,关闭,查看运行状态)

文章目录 docker 常用指令启动 docker关闭 docker查看 docker的运行状态 docker 常用指令 启动 docker systemctl start docker关闭 docker systemctl stop docker查看 docker的运行状态 systemctl status docker如下图所示: 表示docker正在运行中

云呐智能生产线安装与运维是做什么的?需要学哪些内容?

能生产线安装与运维主要负责智能化生产线的组装、接线、调试、辅助生产和运维等工作。  智能生产线安装与运维工作的核心在于保证智能生产线的高效运转和持续优化。具体来说,这个领域的工作人员需要掌握机械、电工电子技术、工业机器人等基础知识和技能&#xff0…

如何进行Appium实现移动端UI自动化测试?

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 Appium是一个开源跨平台移动应用自动化测试框架。 既然只是想学…

亚信安慧AntDB助力全链路实时化

实时数据平台,快速实现企业全链路实时化 引入数据仓库、数据挖掘、HTAP等先进理念,通过实时数据应用平台来装载庞大的信息量,进行实时分析处理,克服数据处理过程中的困难,是当下各企事业单位、互联网、金融&#xff0c…

学习pybind11:Hello World例子

首先要明白pybind11是干啥的,对于一个C/C库,可以用pybind11封装它的接口为Python接口,这样得到一个python库,就可以把功能强大的库丢给使用python的boys & girls使用了~ 因此,使用pybind11做封装,是我…

Golang 实现 websocket 通讯(一个服务器,两个客户端)

运行客户端时首先要输入自己的名字,两个客户端输入的名字不能一样。 先上运行结果: 服务器端: 客户端1: 客户端2: 话不多说,直接上代码: 服务器端: package mainimport ("f…