Java中的实用类讲解(上篇)

如果想观看更多Java内容 可上我的个人主页关注我,地址子逸爱编程-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/a15766649633?spm=1000.2115.3001.5343

使用工具 IntelliJ IDEA Community Edition 2023.1.4

使用语言 Java8 

代码能力快速提升小方法,看完代码自己敲一遍,十分有用

目录

1.Java API介绍

1.1 Java语言的强大之处

1.2 Java API常用的包

2.枚举 

2.1 枚举概述

2.1.1 枚举的语法 

2.1.2 枚举值遍历

2.1.3 枚举基础贯穿案例 

2.1.4 使用枚举时注意 

2.2 枚举的方法

2.2.1 枚举的常用方法

2.2.2 使用枚举方法贯穿案例


1.Java API介绍

Java API(Java Application Programming Interface)即Java应用程序编程接口,它是运行库的集合,预先定义了一些接口和类,程序员可以直接使用这些已经被打包的接口和类开发具体的应用来节约大量的时间和精力。API除了有"应用编程接口"的意思,还特指API的说明文档,也被称为API帮助文档。

1.1 Java语言的强大之处

Java语言的强大之处在于提供了多种多样的类库,从而大大提高了程序的编程效率和质量。

1.2 Java API常用的包

java.lang
    编写java程序时使用最广泛的包,自动导入所有的程序中,包含了Java程序的基础类和接口。包装类、String类等常用的类都被包含在此包中。java.lang包还提供了用于管理类的动态加载、外部进程创建、主机环境查询和安全策略实施等系统操作的类。
java.util
    包含了系统辅助类,特别是Collection、List和Map等集合类。
java.time
    包含了对日期时间进行处理的类,如创建日期对象、格式化日期等。
java.io
    包含了对输入/输出有关的类,如文件操作等类。
java.net
    包含了与网络有关的类,如Socket、ServerSocket等类。
java.sql
    包含了与数据库相关的类,如Connection、Statement等类。

本总章节主要学习java.lang、java.util、java.time三个包中的常用类。

2.枚举 

2.1 枚举概述

在之前的内容中学习了Java有两种方式定义新类型:类和接口。对于开发大部分的情况来说,这两种方式已经足够了,但是在一些特殊情况下,这些方式就不适合了。例如,定义果树的生长状态,包括"生长期""采摘期""已死亡",需要定义一个Contants类,在其中定义三个静态常量分别记录三种状态。

但如果遇到以下需求,还需继续完善,进行烦琐的处理。

  • 需要为每个常量分配一个整型值,以便向数据库中录入数据。

在实际开发中,状态值以整型数据形式存储到数据库中效率更高,在程序中执行状态判断时使用整型效率更高。例如,生长期——0,采摘期——1,已死亡——2。 

  • 如果还是使用静态常量来定义的话,非常容易出错,例如,整型的常量值出现重复,编译器也不会给出任何提示。
  • 如果需要更强大的数据展示和处理功能,则需要自行编写。
  • 例如,遍历所有的果树生长状态信息,或者需要自动获取果树状态的个数等。
  • 自从Java1.5引入了枚举类型,这些问题得以解决。

2.1.1 枚举的语法 

在枚举中可以定义多个常量,表示不同的枚举值,即枚举元素,之间用逗号隔开;
在枚举中可以定义其他成员,包括构造方法等,置于枚举常量之后;
可以使用"枚举名.常量名"的形式取出枚举中的指定内容;

访问修饰符 enum 枚举名{
  常量1[,常量2...[;]]
  //[其他成员]
}

2.1.2 枚举值遍历

使用枚举类型的values()方法可以实现对枚举值的遍历操作,可以看以下示例来进行剖析理解:

2.1.3 枚举基础贯穿案例 

枚举类型

public enum Week {
    MON,TUE,WED,THU,FRI,SAT,SUN;
}

运行类代码

/**
 * 日程安排运行类
 */
public class WeekTest {
    /**
     * 查看日程安排方法
     * @param day 星期几
     */
    public void doWhat(Week day){
        switch (day){
            case MON:
            case TUE:
            case WED:
            case THU:
            case FRI:
                System.out.println("工作日,努力写代码!");
                break;
            case SAT:
                System.out.println("星期六,休息!看电影");
                break;
            case SUN:
                System.out.println("星期日,休息!打篮球!");
                break;
            default:
                System.out.println("地球上一个星期就7天。");
        }
    }
 public static void main(String[] args) {
        WeekTest weekTest=new WeekTest();
        System.out.println("foreach遍历枚举元素");
        for (Week day:Week.values()){
            weekTest.doWhat(day);//doWhat(Week day)方法里面是用来判断枚举类型然后打印内容的
        }
    }
}

运行结果

  • 以上的代码中,枚举类型Week可存储表示一周七天的枚举常量,使用"Week.THU"可输出表示星期四的枚举值。switch结构传入的变量day是Week类型,即枚举类型;case关键字后的常量要与之匹配,必须是Week中定义的枚举常量。
  • 在以上代码中,Week.values()方法表示取得枚举中全部内容,返回一个对象数组,这是枚举本身支持的一个方法。除此之外,关于Enum类的其他用法,此处不深入讲解,以后用到时可自行查看API帮助文档。

2.1.4 使用枚举时注意 

  1. 在switch结构中可以使用枚举类型作为判断变量,此时需注意,case关键字后一定不能在枚举值前加枚举类型名,如Week.THU,否则会出现编译错误。
  2. enum关键字表示的是java.lang.Enum类型,即使用enum声明的枚举类型,就相当于定义一个类,此类默认继承java.lang.Enum类,因此可使用其中定义的所有方法。此处不再深入讲解,以后用到时可自行查看API帮助文档。 

2.2 枚举的方法

每一个枚举类型成员都可被看作Enum对象。所有枚举实例都可以调用Enum类的方法,实现枚举的遍历、比较等操作,枚举的常用方法如下: 

2.2.1 枚举的常用方法

T[] values
    以数组形式返回枚举类型的所有成员;
T valueOf()
    将普通字符串转换为枚举实例;
int compareTo()

  •     比较两个枚举成员在定义时的顺序,结果为负整数。零或正整数,表示当前对象小于、等于或大于指定对象;
  •     比较同一枚举常量的序数差,如果相同就返回0,如果在方法后面的参数之前就返回负数,在方法后面的参数之后就返回正数;

int ordinal()
    获取枚举成员的索引位置 ;

2.2.2 使用枚举方法贯穿案例

枚举类型

public enum Week {
    MON,TUE,WED,THU,FRI,SAT,SUN;
}

运行类代码

/**
 * 日程安排运行类
 */
public class WeekTest {
    /**
     * 查看日程安排方法
     * @param day 星期几
     */
    public void doWhat(Week day){
        switch (day){
            case MON:
            case TUE:
            case WED:
            case THU:
            case FRI:
                System.out.println("工作日,努力写代码!");
                break;
            case SAT:
                System.out.println("星期六,休息!看电影");
                break;
            case SUN:
                System.out.println("星期日,休息!打篮球!");
                break;
            default:
                System.out.println("地球上一个星期就7天。");
        }
    }
 public static void main(String[] args) {
        WeekTest weekTest=new WeekTest();
        System.out.println("foreach遍历枚举元素");
        for (Week day:Week.values()){
            weekTest.doWhat(day);//doWhat(Week day)方法里面是用来判断枚举类型然后打印内容的
        }
    }
}

运行结果

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

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

相关文章

python 实现阿里云OSS文件上传

因为我们出口的带宽限制,测试经常找我给他上传个包到阿里云的对象存储,虽然传起来也不是很费事,但是出于运维的职业素养,特意写了一个自动上传的接口,代码如下: # -*- coding: UTF-8 -*- from flask imp…

【保姆及教程】简直不要太爽了!md文件图床工具picgo配合typora和阿里云oss存储,实现文md文件的复制转贴

md文件图床工具picgo的安装和使用、配合阿里云面向对象oss 一、网址 官方网址:https://molunerfinn.com/PicGo/ github地址:https://github.com/Molunerfinn/picgo/releases 选择对应的版本下载即可 但也可以提供我给你的下载的地址: 方…

前端学习之css选择器--基本选择器、关系选择器、属性选择器、复合选择器、伪类选择器

目录 基本选择器 结果 关系选择器 结果 父子关系 祖先后代关系 相邻兄弟关系 兄弟关系 ​编辑 属性选择器 结果 复合选择器 结果 伪类选择器 结果 伪类选择器-操作标签 结果 未访问 访问后 悬停 基本选择器 <!DOCTYPE html> <html lang"en"…

Java-PriorityQueue源码分析

PriorityQueue 源码分析 Java中的PriorityQueue采用的是堆这种数据结构来实现的,而存储堆采用的则是数组。 堆是一个完全二叉树,堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值,对于每个节点的值都大于等于子树中每个节点值的堆&#xff0c;我们叫做大顶…

数学建模--MATLAB基本使用

1.线性方程组 这个是一个线性方程组&#xff08;属于线性代数的范畴&#xff09;&#xff0c;Axb类型的方程&#xff0c;如果使用MATLAB进行求解&#xff0c;就需要分别表示A矩阵&#xff08;线性方程组未知数前面的系数&#xff09;&#xff0c;b矩阵&#xff08;表示等式右边…

探索Docker:原理、安装与基础应用

进程: 一旦“程序”被执行起来&#xff0c;它就从磁盘上的二进制文件&#xff0c;变成了计算机内存中的数据、寄存器里的值、堆栈中的指令、被打开的文件&#xff0c;以及各种设备的状态信息的一个集合。像这样一个程序运行起来后的计算机执行环境的总和称为进程 静态表现&am…

数据结构:基于数组实现简单的数据缓存区(简单队列)

1 前言 在我们使用CAN或者以太网调试时&#xff0c;经常需要缓存最近n次收到的数据&#xff0c;以便于我们对数据进行分析。 实现这一想法我们很容易就会想到队列&#xff0c;队列就是一种先进先出的数据结构&#xff0c;之前在《数据结构&#xff1a;基于数组的环形队列&…

win10 + cpu + pycharm + mindspore

MindSpore是华为公司自研的最佳匹配昇腾AI处理器算力的全场景深度学习框架。 1、打开官网&#xff1a; MindSpore官网 2、选择以下选项&#xff1a; 3、创建conda 环境&#xff0c;这里python 选择3.9.0&#xff0c;也可以选择其他版本&#xff1a; conda create -c conda-…

xray问题排查,curl: (35) Encountered end of file(已解决)

经过了好几次排查&#xff0c;都没找到问题&#xff0c;先说问题的排查过程&#xff0c;多次确认了user信息&#xff0c;包括用户id和alterid&#xff0c;都没问题&#xff0c;头大的一逼 问题排查过程 确保本地的xray服务是正常的 [rootk8s-master01 xray]# systemctl stat…

【力扣白嫖日记】1934.确认率

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1934.确认率 表&#xff1a;Signups 列名类型user_idinttime_stampdatetime User_id是该表的主键。每一行都…

人工智能原理:探索智能的奥秘

人工智能&#xff08;Artificial Intelligence&#xff09;&#xff0c;英文缩写为AI。是新一轮科技革命和产业变革的重要驱动力量&#xff0c;是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是智能学科重要的组成部分&a…

XXE漏洞原理和pikachu靶场实验

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、XXE漏洞原理 XXE全称&#xff1a;XML External Enti…

YOLOv9更换iou|包含CIoU、DIoU、MDPIoU、GIoU

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 一、改进点介绍 更换YOLOv9中使用的Iou计算方式&#xff0c;目前支持CIoU、DIoU、MDPIoU、GIoU。 二、Iou模块详解 2.1 模块简介 Iou的主要思想&…

【Poi-tl Documentation】自定义行删除标签

前置说明&#xff1a; <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version> </dependency>模板样式&#xff1a; 删除行表格测试.docx 实现思路&#xff1a;通过定制占位…

ctfshow(WEB AK赛)

目录 web-观己 web1-观字 web2-观星 web3-观图 web4-观心 过程and分析 web-观己 没啥难的有include 想着伪协议 但是过滤了php 那就是用file为协议读取本地文件 全靠猜 <?php if(isset($_GET[file])){$file $_GET[file];if(preg_match(/php/i, $file)){die(error);}…

win下 VirtualBox 自动启动脚本脚本

文章目录 一、找到VBoxManage二、测试脚本1、打开cmd2、输入命令 (直接把上面找到的VBoxManage.exe 拖入到cmd中&#xff0c;这样就不用输入路径了)3、效果展示 比如虚拟机中的系统名称叫“centos-mini” 三、设置自动启动脚本1、复制刚才测试好的命令到新建文本中2、修改文本名…

SpringBoot整合Seata注册到Nacos服务

项目引入pom文件 <!-- SpringCloud Seata 组件--> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-seata</artifactId><version>${alibaba.seata}</version><exclusions><exc…

Vintage账龄分析表计算底层逻辑(Python实操)

大家好&#xff0c;我是东哥。 信贷风控领域中&#xff0c;经常用到账龄Vintage报表&#xff0c;这是入门初学者的难点之一&#xff0c;因为它涉及到用户还款、逾期等多种行为以及业务上的多种统计口径&#xff0c;因此很多朋友一直无法将逻辑梳理清楚。本次来给大家详细介绍V…

计算机系统基础 2 Intel 中央处理器

Intel微处理器的发展史 INTegrated ELectronics&#xff08;集成电子&#xff09;的缩写 先后推出的中央处理器&#xff1a; Intel4004、Intel8008、Intel8080/8085、8086/8088、80186、80286、i386、i486 Pentium&#xff08;奔腾&#xff09;、Pentium II、Pentium III、Pen…

布局Uniswap(UNI)的基本逻辑和bitget钱包使用教程

我们都知道&#xff0c;牛市里板块轮动是很明显的&#xff0c;这个概念涨完下一个概念涨&#xff01; 背后本质是场内的筹码在交换的过程&#xff0c;抓住这种交换的规律&#xff0c;可以大大提高资金的使用效率和总体收益&#xff01; 目前行情继续稳中有进&#xff0c;大饼也…