【Java从0到1学习】10 Java常用类汇总
1. System类
System类对读者来说并不陌生,因为在之前所学知识中,需要打印结果时,使用的都是“System.out.println();”语句,这句代码中就使用了System类。System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类调用即可。System类的常用方法如下表所示。
1.getProperties()方法
System类的getProperties()方法用于获取当前系统的全部属性,该方法会返回一个Properties对象,其中封装了系统的所有属性,这些属性是以键值对形式存在的。
package cn.itcast.chapter05.example09;
import java.util.*;
/*** System类的getProperties()方法*/
public class Example09 {public static void main(String[] args) {// 获取当前系统属性Properties properties = System.getProperties();// 获得所有系统属性的key,返回Enumeration对象Enumeration propertyNames = properties.propertyNames();while (propertyNames.hasMoreElements()) {// 获取系统属性的键keyString key = (String) propertyNames.nextElement();// 获得当前键key对应的值valueString value = System.getProperty(key);System.out.println(key + "--->" + value);}}
}
2.currentTimeMillis()
currentTimeMillis()方法返回一个long类型的值,该值表示当前时间与1970年1月1日0点0分0秒之间的时间差,单位是毫秒,通常也将该值称作时间戳。
package cn.itcast.chapter05.example10;
/*** 计算程序在进行求和操作时所消耗的时间*/
public class Example10 {public static void main(String[] args) {long startTime = System.currentTimeMillis();// 循环开始时的当前时间int sum = 0;for (int i = 0; i < 100000000; i++) {sum += i;}long endTime = System.currentTimeMillis();// 循环结束后的当前时间System.out.println("程序运行的时间为:" + (endTime - startTime) + "毫秒");}
}
3.arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
arraycopy()方法用于将一个数组中的元素快速拷贝到另一个数组。其中的参数具体作用如下:
- src:表示源数组。
- dest:表示目标数组。
- srcPos:表示源数组中拷贝元素的起始位置。
- destPos:表示拷贝到目标数组的起始位置。
- length:表示拷贝元素的个数。
package cn.itcast.chapter05.example11;
/*** 数组元素的拷贝*/
public class Example11 {public static void main(String[] args) {int[] fromArray = { 101, 102, 103, 104, 105, 106 }; // 源数组int[] toArray = { 201, 202, 203, 204, 205, 206, 207 }; // 目标数组System.arraycopy(fromArray, 2, toArray, 3, 4); // 拷贝数组元素// 打印目标数组中的元素for (int i = 0; i < toArray.length; i++) {System.out.println(i + ": " + toArray[i]);}}
}
4.SystemClock.uptimeMillis()
2. Runtime类
Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程。每次使用java命令启动虚拟机都对应一个Runtime实例,并且只有一个实例,因此该类采用单例模式进行设计,对象不可以直接实例化。若想在程序中获得一个Runtime实例,只能通过以下方式:
案例代码
由于Runtime类封装了虚拟机进程,因此,在程序中通常会通过该类的实例对象来获取当前虚拟机的相关信息。
package cn.itcast.chapter05.example12;
/*** Runtime类的使用*/
public class Example12 {public static void main(String[] args) {Runtime rt = Runtime.getRuntime(); // 获取System.out.println("处理器的个数: " + rt.availableProcessors() + "个");System.out.println("空闲内存数量: " + rt.freeMemory() / 1024 / 1024 + "M");System.out.println("最大可用内存数量: " + rt.maxMemory() / 1024 / 1024 + "M");}
}
案例代码
Runtime类中提供了一个exec()方法,该方法用于执行一个dos命令,从而实现和在命令行窗口中输入dos命令同样的效果。例如,通过运行“notepad.exe”命令打开一个Windows自带的记事本程序
package cn.itcast.chapter05.example13;
import java.io.IOException;
/*** 使用exec()方法打开记事本*/
public class Example13 {public static void main(String[] args) throws IOException {Runtime rt = Runtime.getRuntime(); // 创建Runtime实例对象rt.exec("notepad.exe"); // 调用exec()方法}
}
打开记事本并在3秒后自动关闭
package cn.itcast.chapter05.example14;
/*** 打开的记事本并在3秒后自动关闭*/
public class Example14 {public static void main(String[] args) throws Exception {Runtime rt = Runtime.getRuntime(); // 创建一个Runtime实例对象Process process = rt.exec("notepad.exe");// 得到表示进程的Process对象Thread.sleep(3000); // 程序休眠3秒process.destroy(); // 杀掉进程}
}
Runtime.getRuntime().availableProcessors(); // 获取CPU核心数
Runtime.getRuntime().maxMemory(); // 获取应用被分配的最大内存
3. Math类
Math类是数学操作类,Math类提供了常用的一些数学函数,如:三角函数、对数、指数等。一个数学公式如果想用代码表示,则可以将其拆分然后套用Math类下的方法即可。
Math类中有两个静态常量PI和E,分别代表数学常量π和e。
Math.abs(12.3); //12.3 返回这个数的绝对值
Math.abs(-12.3); //12.3 Math.copySign(1.23, -12.3); //-1.23,返回第一个参数的量值和第二个参数的符号
Math.copySign(-12.3, 1.23); //12.3 Math.signum(x); //如果x大于0则返回1.0,小于0则返回-1.0,等于0则返回0
Math.signum(12.3); //1.0
Math.signum(-12.3); //-1.0
Math.signum(0); //0.0 //指数
Math.exp(x); //e的x次幂
Math.expm1(x); //e的x次幂 - 1 Math.scalb(x, y); //x*(2的y次幂)
Math.scalb(12.3, 3); //12.3*2³ //取整
Math.ceil(12.3); //返回最近的且大于这个数的整数13.0
Math.ceil(-12.3); //-12.0 Math.floor(12.3); //返回最近的且小于这个数的整数12.0
Math.floor(-12.3); //-13.0 //x和y平方和的二次方根
Math.hypot(x, y); //√(x²+y²) //返回概述的二次方根
Math.sqrt(x); //√(x) x的二次方根
Math.sqrt(9); //3.0
Math.sqrt(16); //4.0 //返回该数的立方根
Math.cbrt(27.0); //3
Math.cbrt(-125.0); //-5 //对数函数
Math.log(e); //1 以e为底的对数
Math.log10(100); //10 以10为底的对数
Math.log1p(x); //Ln(x+ 1) //返回较大值和较小值
Math.max(x, y); //返回x、y中较大的那个数
Math.min(x, y); //返回x、y中较小的那个数 //返回 x的y次幂
Math.pow(x, y);
Math.pow(2, 3); //即2³ 即返回:8 //随机返回[0,1)之间的无符号double值
Math.random(); //返回最接近这个数的整数,如果刚好居中,则取偶数
Math.rint(12.3); //12.0
Math.rint(-12.3); //-12.0
Math.rint(78.9); //79.0
Math.rint(-78.9); //-79.0
Math.rint(34.5); //34.0
Math.rint(35.5); //36.0 Math.round(12.3); //与rint相似,返回值为long //三角函数
Math.sin(α); //sin(α)的值
Math.cos(α); //cos(α)的值
Math.tan(α); //tan(α)的值 //求角
Math.asin(x/z); //返回角度值[-π/2,π/2] arc sin(x/z)
Math.acos(y/z); //返回角度值[0~π] arc cos(y/z)
Math.atan(y/x); //返回角度值[-π/2,π/2]
Math.atan2(y-y0, x-x0); //同上,返回经过点(x,y)与原点的的直线和经过点(x0,y0)与原点的直线之间所成的夹角 Math.sinh(x); //双曲正弦函数sinh(x)=(exp(x) - exp(-x)) / 2.0;
Math.cosh(x); //双曲余弦函数cosh(x)=(exp(x) + exp(-x)) / 2.0;
Math.tanh(x); //tanh(x) = sinh(x) / cosh(x); //角度弧度互换 360°角=2π弧度
Math.toDegrees(angrad); //角度转换成弧度,返回:angrad * 180d / PI Math.toRadians(angdeg); //弧度转换成角度,返回:angdeg / 180d * PI Math.PI
package cn.itcast.chapter05.example15;
/*** Math类中比较常见的方法*/
public class Example15 {public static void main(String[] args) {System.out.println("计算绝对值的结果: " + Math.abs(-1));System.out.println("求大于参数的最小整数: " + Math.ceil(5.6));System.out.println("求小于参数的最大整数: " + Math.floor(-4.2));System.out.println("对小数进行四舍五入后的结果: " + Math.round(-4.6));System.out.println("求两个数的较大值: " + Math.max(2.1, -2.1));System.out.println("求两个数的较小值: " + Math.min(2.1, -2.1));System.out.println("生成一个大于等于0.0小于1.0随机值: " + Math.random());}
}
4. Random类
在JDK的java.util包中有一个Random类,它可以在指定的取值范围内随机产生数字。在Random类中提供了两个构造方法,具体如下表所示。
表中列举了Random类的两个构造方法,其中第一个构造方法是无参的,通过它创建的Random实例对象每次使用的种子是随机的,因此每个对象所产生的随机数不同。如果希望创建的多个Random实例对象产生相同序列的随机数,则可以在创建对象时调用第二个构造方法,传入相同的种子即可。
相对于Math的random()方法而言,Random类提供了更多的方法来生成各种伪随机数,不仅可以生成整数类型的随机数,还可以生成浮点类型的随机数,表中列举了Random类中的常用方法。
表中,列出了Random类常用的方法,其中,Random类的nextDouble()方法返回的是0.0和1.0之间double类型的值,nextFloat()方法返回的是0.0和1.0之间float类型的值,nextInt(int n)返回的是0(包括)和指定值n(不包括)之间的值。
package cn.itcast.chapter05.example16;
import java.util.Random;
/*** 使用构造方法Random()产生随机数*/
public class Example16 {public static void main(String args[]) {Random r = new Random(); // 不传入种子// 随机产生10个[0,100)之间的整数for (int x = 0; x < 10; x++) {System.out.println(r.nextInt(100));}}
}
package cn.itcast.chapter05.example17;
import java.util.Random;
/*** 使用构造方法Random(long seed)产生随机数*/
public class Example17 {public static void main(String args[]) {Random r = new Random(13); // 创建对象时传入种子// 随机产生10个[0,100)之间的整数for (int x = 0; x < 10; x++) {System.out.println(r.nextInt(100));}}
}
package cn.itcast.chapter05.example18;
import java.util.Random;
/*** Random类中的常用方法*/
public class Example18 {public static void main(String[] args) {Random r1 = new Random(); // 创建Random实例对象System.out.println("产生float类型随机数: " + r1.nextFloat());System.out.println("产生0~100之间int类型的随机数:" + r1.nextInt(100));System.out.println("产生double类型的随机数:" + r1.nextDouble());}
}
5. 日期
求当前时间100天后的时间日期,格式化为xxxx年xx月xx日
Date
方法声明 | 功能描述 |
---|---|
getTime() | |
setTime() |
SimpleDateFormat
返回值 | 方法声明 | 功能描述 |
---|---|---|
Stirng | format() | 格式化日期 |
Date | parse() |
Calendar
方法声明 | 功能描述 |
---|---|
get(int field) | 返回给定日历字段的值 |
getInstance() | |
add(int field,int amount) | 根据给定的日历字段和对应的时间,来对当前的日历进行操作 |
set(int year,int month,int date) | 设置当前日历的年月日 |
Calendar rightNow = Calendar.getInstance(); // 子类对象public void add(int field,int amount); //根据给定的日历字段和对应的时间,来对当前的日历进行操作。public final void set(int year,int month,int date); //设置当前日历的年月日// 三年前的今天
c.add(Calendar.YEAR, -3);
相关文章:

【Java从0到1学习】10 Java常用类汇总
1. System类 System类对读者来说并不陌生,因为在之前所学知识中,需要打印结果时,使用的都是“System.out.println();”语句,这句代码中就使用了System类。System类定义了一些与系统相关的属性和方法,它所提供的属性和…...

第三届人工智能与智能制造国际研讨会(AIIM 2023)
第三届人工智能与智能制造国际研讨会(AIIM 2023) The 3rd International Symposium on Artificial Intelligence and Intelligent Manufacturing 第三届人工智能与智能制造国际研讨会(AIIM 2023)将于2023年10月27-29日在成都召开…...

层次分析法
目录 一:问题的引入 二:模型的建立 1.分析系统中各因素之间的关系,建立系统的递阶层次结构。 2.对于同一层次的各元素关于上一层次中某一准则的重要性进行两两比较,构造两两比较矩阵(判断矩阵)。 3.由判…...
Error Handling
有几个特定的异常类允许用户代码对与CAN总线相关的特定场景做出反应: Exception (Python standard library)+-- ...+-- CanError (python-can)+-- CanInterfaceNotImplementedError+-- CanInitializationError...

leetcode:字符串相乘(两种方法)
题目: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: num1 "2", nu…...

【爬虫练习之glidedsky】爬虫-基础2
题目 链接 爬虫往往不能在一个页面里面获取全部想要的数据,需要访问大量的网页才能够完成任务。 这里有一个网站,还是求所有数字的和,只是这次分了1000页。 思路 找到调用接口 可以看到后面有个参数page来控制页码 代码实现 import reques…...
03.有监督算法——决策树
1.决策树算法 决策树算法可以做分类,也可以做回归 决策树的训练与测试: 训练阶段:从给定的训练集构造出一棵树(从根节点开始选择特征,如何进行特征切分) 测试阶段:根据构造出来的树模型从上…...

网络协议详解之STP
目录 一、STP协议(生成树) 1.1 生成树协议核心知识点: 1.2 生成树协议与导致问题: 生成树含义: 1.3 802.1D 规则: 802.1D 缺点: 1.4 PVST cisco私有 1.5 PVST 1.6 快速生成树 快速的原…...

Eltima USB Network Gate 10.0 Crack
USB Network Gate -通过网络共享USB 设备 USB Network Gate (前身为以太网USB控制器USB) 轻松的通过网络(Internet/LAN/WAN)分享您的一个或者多个连接到您计算机的USB设备。 无论您身处异国还是近在隔壁办公室,您都可以轻松使用远程扫描仪、打印机、摄像头、调制解…...
SpringCloudGateway网关实战(一)
SpringCloudGateway网关实战(一) 目前对cloud的gateway功能还是不太熟悉,因此特意新建了对应的应用来尝试网关功能。 网关模块搭建 首先我们新建一个父模块用于添加对应的springboot依赖和cloud依赖。本模块我们的配置读取使用的是nacos&a…...

django中使用ajax发送请求
1、ajax简单介绍 浏览器向网站发送请求时 是以URL和表单的形式提交的post 或get 请求,特点是:页面刷新 除此之外,也可以基于ajax向后台发送请求(异步) 依赖jQuery 编写ajax代码 $.ajax({url: "发送的地址"…...

C++之std::list<string>::iterator迭代器应用实例(一百七十九)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...

VSCode好用的插件
文章目录 前言1.Snippet Creator & easy snippet(自定义代码)2.Indent Rainbow(代码缩进)3.Chinese (Simplified) Language Pack(中文包)4.Path Intellisense(路径提示)5.Beauti…...
js实现滚轮滑动到底部自动加载(完整版)
这里我们用vue实现(原生js相似), 这里我们用一个div当作一个容器; <div class="JL" @scroll="onScroll" ref="inin"> <div v-for="(item,index) in this.list" :key="index" > ....…...

如何限制PDF打印?限制清晰度?
想要限制PDF文件的打印功能,想要限制PDF文件打印清晰度,都可以通过设置限制编辑来达到目的。 打开PDF编辑器,找到设置限制编辑的界面,切换到加密状态,然后我们就看到 有印刷许可。勾选【权限密码】输入一个PDF密码&am…...
python计算模板图像与原图像各区域的相似度
目录 1、解释说明: 2、使用示例: 3、注意事项: 1、解释说明: 在Python中,我们可以使用OpenCV库进行图像处理和计算机视觉任务。其中,模板匹配是一种常见的方法,用于在一幅图像中识别出与给定…...

阿里云云解析DNS核心概念与应用
文章目录 1.DNS解析基本概念1.1.DNS基本介绍1.2.域名的分层结构1.3.DNS解析原理1.4.DNS递归查询和迭代查询的区别1.5.DNS常用的解析记录 2.使用DNS云解析将域名与SLB公网IP进行绑定2.1.进入云解析DNS控制台2.2.添加域名解析记录2.3.验证解析是否生效 1.DNS解析基本概念 DNS官方…...

计算机竞赛 垃圾邮件(短信)分类算法实现 机器学习 深度学习
文章目录 0 前言2 垃圾短信/邮件 分类算法 原理2.1 常用的分类器 - 贝叶斯分类器 3 数据集介绍4 数据预处理5 特征提取6 训练分类器7 综合测试结果8 其他模型方法9 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 垃圾邮件(短信)分类算…...
compositionAPI
面试题:composition api相比于option api有哪些优势? 不同于reactivity api,composition api提供的函数很多是与组件深度绑定的,不能脱离组件而存在。 1. setup // component export default {setup(props, context){// 该函数在…...
vscode配置调试环境-windows系统
1. 下载Vscode 下载网址code.visualstudio.com 2. 安装vscode 直打开下载好的.exe文件进行安装即可 3.安装插件 4下载mingw编译器 4.1下载 下载网址sourceforge.net/projects/mingw-w64/files/ 下拉找到该位置,下载圈中的版本。下载速度有点慢 临时下载地址 htt…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
32位寻址与64位寻址
32位寻址与64位寻址 32位寻址是什么? 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元(地址),其核心含义与能力如下: 1. 核心定义 地址位宽:CPU或内存控制器用32位…...