百无聊赖之JavaEE从入门到放弃(十八)其他常用类

news2024/9/28 13:23:00

目录

一.Math 类

二.Random 类

三.File类

四.枚举


一.Math 类

java.lang.Math 提供了一系列静态方法用于科学计算;常用方法如下:
  • abs 绝对值
  • acos,asin,atan,cos,sin,tan 三角函数
  • sqrt 平方根
  • pow(double a, double b) a 的 b 次幂
  • max(double a, double b) 取大值
  • min(double a, double b) 取小值
  • ceil(double a) 大于 a 的最小整数
  • floor(double a) 小于 a 的最大整数
  • random() 返回 0.0 到 1.0 的随机数
  • long round(double a) double 型的数据 a 转换为 long 型(四舍五入)
  • toDegrees(double angrad) 弧度->角度
  • toRadians(double angdeg) 角度->弧度
【示例】Math 类的常用方法
public class TestMath {
    public static void main(String[ ] args) {
        //取整相关操作
        System.out.println(Math.ceil(3.2));
        System.out.println(Math.floor(3.2));
        System.out.println(Math.round(3.2));
        System.out.println(Math.round(3.8));
        //绝对值、开方、a 的 b 次幂等操作
        System.out.println(Math.abs(-45));
        System.out.println(Math.sqrt(64));
        System.out.println(Math.pow(5, 2));
        System.out.println(Math.pow(2, 5));
        //Math 类中常用的常量
        System.out.println(Math.PI);
        System.out.println(Math.E);
        //随机数
        System.out.println(Math.random());// [0,1)
    }
}

输出:

二.Random 类

Random 类: 专门用来生成随机数。

import java.util.Random;
public class TestRandom {
    public static void main(String[ ] args) {
        Random rand = new Random();
        //随机生成[0,1)之间的 double 类型的数据
        System.out.println(rand.nextDouble());
        //随机生成 int 类型允许范围之内的整型数据
        System.out.println(rand.nextInt());
        //随机生成[0,1)之间的 float 类型的数据
        System.out.println(rand.nextFloat());
        //随机生成 false 或者 true
        System.out.println(rand.nextBoolean());
        //随机生成[0,10)之间的 int 类型的数据
        System.out.print(rand.nextInt(10));
        //随机生成[20,30)之间的 int 类型的数据
        System.out.print(20 + rand.nextInt(10));
    }
}
注意
Random 类位于 java.util 包下。

三.File类

File 类的基本用法
java.io.File 类:代表文件和目录,用于:读取文件、创建文件、删除文件、修改文件。
【示例】使用 File 类创建文件
File 类的常见构造方法:public File(String pathname)
以 pathname 为路径创建 File 对象,如果 pathname 是相对路径,则默认的当前路径在系统属性 user.dir 中存储。
import java.io.File;
public class TestFile1 {
    public static void main(String[ ] args) throws Exception {
        System.out.println(System.getProperty("user.dir"));
        File f = new File("a.txt"); //相对路径:默认放到 user.dir 目录下面
        f.createNewFile();//创建文件
        File f2 = new File("d:/b.txt");//绝对路径
        f2.createNewFile();
    }
}
user.dir 就是本项目的目录。上面代码执行后,在本项目和 D 盘下都生成了新的文件。
通过 File 对象可以访问文件的属性:
【示例】使用 File 类访问文件或目录属性

输出:

通过 File 对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下)
【示例】使用 mkdir 创建目录
import java.io.File;
public class TestFile3 {
    public static void main(String[ ] args) throws Exception {
        File f = new File("d:/c.txt");
        f.createNewFile(); // 会在 d 盘下面生成 c.txt 文件
        f.delete(); // 将该文件或目录从硬盘上删除
        File f2 = new File("d:/电影/华语/大陆");
        boolean flag = f2.mkdir(); //目录结构中有一个不存在,则不会创建整个目录树
        System.out.println(flag);//创建失败
    }
}
【示例】使用 mkdirs 创建目录

import java.io.File;
public class TestFile4 {
    public static void main(String[ ] args) throws Exception {
        File f = new File("d:/c.txt");
        f.createNewFile(); // 会在 d 盘下面生成 c.txt 文件
        f.delete(); // 将该文件或目录从硬盘上删除
        File f2 = new File("d:/电影/华语/大陆");
        boolean flag = f2.mkdirs();//目录结构中有一个不存在也没关系;创建整个目录树
        System.out.println(flag);//创建成功
    }
}

 递归遍历目录结构和树状展现

【示例】使用递归算法,以树状结构展示目录树
import java.io.File;

public class Test {
    public static void main(String[] args) {
        File f = new File("D:\\BaiduNetdiskDownload");
        printFile(f, 0);
    }

    /**
     * 打印文件信息
     *
     * @param file  文件名称
     * @param level 层次数(实际就是:第几次递归调用)
     */
    static void printFile(File file, int level) {
        //输出层次数
        for (int i = 0; i < level; i++) {
            System.out.print("-");
        }
        //输出文件名
        System.out.println(file.getName());
        //如果 file 是目录,则获取子文件列表,并对每个子文件进行相同的操作
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (File temp : files) {
                //递归调用该方法:注意要+1
                printFile(temp, level + 1);
            }
        }
    }
}

四.枚举

JDK1.5 引入了枚举类型。枚举类型的定义包括枚举声明和枚举体。格式如下:
enum 枚举名 {
        枚举体(常量列表)
}

枚举体就是放置一些常量。我们可以写出我们的第一个枚举类型,如示例所示:  

【示例】创建枚举类型
enum Season {
    SPRING, SUMMER, AUTUMN, WINTER
}
所有的枚举类型隐性地继承自 java.lang.Enum。枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是 public static final 修饰的。可以直接通 过枚举类型名使用它们。
建议
  • 当你需要定义一组常量时,可以使用枚举类型。
  • 尽量不要使用枚举的高级特性,事实上高级特性都可以使用普通类来实现,没有必要 引入枚举,增加程序的复杂性!
【示例】枚举的使用
import java.util.Random;

public class Test {
    public static void main(String[ ] args) {
        // 枚举遍历
        for (Week k : Week.values()) {
            System.out.println(k);
        }
        // switch 语句中使用枚举
        int a = new Random().nextInt(4); // 生成 0,1,2,3 的随机数
        switch (Season.values()[a]) {
            case SPRING:
                System.out.println("春天");
                break;
            case SUMMER:
                System.out.println("夏天");
                break;
            case AUTUMN:
                System.out.println("秋天");
                break;
            case WINTER:
                System.out.println("冬天");
                break;
        }
    }
}

/**季节*/
enum Season {
    SPRING, SUMMER, AUTUMN, WINTER
}
/**星期*/
enum Week {
    星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日
}

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

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

相关文章

24年2月深度学习

参考&#xff1a; RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL 树结构检索方案。

Linux文件系统和磁盘的 I/O 常用性能工具指标详解

I/O 栈的全景图&#xff1a; 把 Linux 存储系统的 I/O 栈&#xff0c;由上到下分为三个层次&#xff0c;分别是文件系统层、通用块层和设备层。 文件系统层&#xff0c;包括虚拟文件系统和其他各种文件系统的具体实现。它为上层的应用程序&#xff0c;提供标准的文件访问接口&…

Redis(十一)单线程VS多线程

文章目录 概述为何选择单线程主要性能瓶颈多线程特性和IO多路复用概述Unix网络编程中的五种IO模型Blocking IO-阻塞IONoneBlocking IO-非阻塞IOIO multiplexing-IO多路复用signal driven IO-信号驱动IOasynchronous IO-异步IO 场景&#xff1a;引出epoll总结 开启Redis多线程其…

远EC600E-CN LTE Standard模块硬件设计手册

EC600E-CN是一款LTE-FDD、LTE-TDD无线通信模块&#xff0c;支持LTE-FDD和LTE-TDD数据连接&#xff0c;可为客户在特定场景应用中提供语音功能。 模块封装紧凑&#xff0c;仅为22.9mm21.9mm2.4mm&#xff0c;能满足大部分M2M应用需求&#xff0c;例如自动化领域、智能计量、跟踪…

ClickHouse为什么这么快(一)减少数据扫描范围

相信看过ClickHouse性能测试报告的同学都很震惊于他超高的OLAP查询性能。于是下一步开始搜索“ClickHouse性能为什么高”看到了例如&#xff1a;列存储、数据压缩、并行处理、向量化引擎 等等一些关键词&#xff0c;对于我们一般人来说&#xff0c;并没有解答心中的疑惑&#x…

【开源】JAVA+Vue+SpringBoot实现就医保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…

关于java的异常处理

关于java的异常处理 我们在上一篇文章中&#xff0c;对java中的异常有了一个初步的了解&#xff0c;本篇文章我们来了解一下异常的处理机制&#xff0c;如何抛出异常&#xff0c;如何捕捉异常&#x1f600; 关于java的异常 一、异常类型等级 二、关键字 trycatchfinallythr…

GmSSL - GmSSL的编译、安装和命令行基本指令

文章目录 Pre下载源代码(zip)编译与安装SM4加密解密SM3摘要SM2签名及验签SM2加密及解密生成SM2根证书rootcakey.pem及CA证书cakey.pem使用CA证书签发签名证书和加密证书将签名证书和ca证书合并为服务端证书certs.pem&#xff0c;并验证查看证书内容&#xff1a; Pre Java - 一…

【Uni-App】运行微信小程序时报错routeDone with a webviewId 2 that is not the current page

使用HBuilderX开发微信小程序&#xff0c;运行项目的时有可能会出现routeDone with a webviewId 1 that is not the current page的报错&#xff0c;但不影响运行。如果强迫症介意的话&#xff0c;可以考下面的方法进行修复。 产生原因 由于微信开发者工具的调试基础库处于灰度…

改进的 K-Means 聚类方法介绍

引言 数据科学的一个中心假设是&#xff0c;紧密度表明相关性。彼此“接近”的数据点是相似的。如果将年龄、头发数量和体重绘制在空间中&#xff0c;很可能许多人会聚集在一起。这就是 k 均值聚类背后的直觉。 我们随机生成 K 个质心&#xff0c;每个簇一个&#xff0c;并将…

阿里云搭建幻兽帕鲁游戏服务器

大家好&#xff0c;这里是七七&#xff0c;最近幻兽帕鲁很火&#xff0c;身边有很多人都在玩。有朋友想要自己搭建一个服务器&#xff0c;我就来帮帮他吧。 我参考了阿里云的搭建方式&#xff1a;1分钟畅玩&#xff01;一键部署幻兽帕鲁联机服务器 用他们提供的方案&#xff0…

20240202在Ubuntu20.04.6下使用whisper.cpp的CPU模式

20240202在Ubuntu20.04.6下使用whisper.cpp的CPU模式 2024/2/2 14:15 rootrootrootroot-X99-Turbo:~/whisper.cpp$ ./main -l zh -osrt -m models/ggml-medium.bin chs.wav 在纯CPU模式下&#xff0c;使用medium中等模型&#xff0c;7分钟的中文视频需要851829.69 ms&#xf…

Arduino控制器使用Udp网络对8路IO输出控制

一、实现功能 1、创建串口连接&#xff0c;将接收的Udp数据通过串口发送出去。 2、创建Udp连接&#xff0c;用以接收Udp数据和对发送数据的Udp机器反馈Udp数据 3、对接收到的Udp数据进行解析&#xff0c;然后对8路IO进行输出控制。 4、1对应IO输出低电平&#xff0c;‘0’对…

HiveSQL题——聚合函数(sum/count/max/min/avg)

目录 一、窗口函数的知识点 1.1 窗户函数的定义 1.2 窗户函数的语法 1.3 窗口函数分类 聚合函数 排序函数 前后函数 头尾函数 1.4 聚合函数 二、实际案例 2.1 每个用户累积访问次数 0 问题描述 1 数据准备 2 数据分析 3 小结 2.2 各直播间最大的同时在线人数 …

什么是ACL?

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; 厦门微思网络​​​​​​https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle OC…

CSC联合培养博士申请亲历|联系外导的详细过程

在CSC申报的各环节中&#xff0c;联系外导获得邀请函是关键步骤。这位联培博士同学的这篇文章&#xff0c;非常详细且真实地记录了申请过程、心理感受&#xff0c;并提出有益的建议&#xff0c;小编特推荐给大家参考。 2024年国家留学基金委公派留学项目即将开始&#xff0c;其…

低码大前端 - 混合云集群部署 PagePlug

前情提要 老师之前布置了什么作业&#xff0c;完全忘了&#xff0c;本来觉得写作业可能也就一两个小时的事情&#xff0c;结果搞了半天&#xff0c;有一半的作业题目都没找到&#xff0c;mmp, 之前拖延症&#xff0c;搞到心态都炸了&#xff0c;今天不管怎么说都要搞定&#x…

奠定基础:用于机器学习的微积分、数学和线性代数

一、说明 机器学习是一个引人入胜的领域&#xff0c;它使计算机能够从数据中学习并做出预测或决策&#xff0c;而无需明确编程。然而&#xff0c;在幕后&#xff0c;有一个坚实的数学和线性代数基础&#xff0c;构成了机器学习算法的支柱。在本文中&#xff0c;我们将探讨在深入…

C语言指针学习 之 指针变量

前言&#xff1a; 通过学习我们认识了什么是指针&#xff0c;就让我们一起来分析一个例子。 #include<stdio.h> int main() {int a100;int * hz; hz &a;printf("a%d \n",a);printf("*hz%d \n",*hz);return 0; }a100 *hz100 PS C:\csay\cyuya…

聊聊DoIP吧(一)

DoIP是啥? DoIP代表"Diagnostic over Internet Protocol",即互联网诊断协议。它是一种用于在车辆诊断中进行通信的网络协议。DoIP的目标是在现代汽车中实现高效的诊断和通信。通过使用互联网协议(IP)作为通信基础,DoIP使得诊断信息能够通过网络进行传输,从而提…