Java(二十)——Java基础类库之main()、Scanner类、System类

使用Java的Runtime类获取可用的处理器数量 通过使用Java的Runtime类的方法,我们可以方便地获取当前系统中可用的处理器数量。这对于需要根据处理器数量进行并行处理或优化算法的应用程序来说非常有用。我们可以根据这个数量来决定线程池的大小、任务的分配等。希望本文对你理解如何使用Runtime类获取可用的处理器数量有所帮助! 阅读详情

一、与用户互动

绝大部分程序需要处理用户动作,包括接收用户的键盘输入、鼠标动作等。

1.运行Java程序的参数

// Java程序入口:main()方法
public static void main(String[] args){...}

那main()方法为什么采用这个方法签名呢?

  • public修饰符:Java类有JVM调用,为了让JVM可以自由调用这个main()方法,所以使用public修饰符把这个方法暴露出来。
  • static修饰符:JVM调用这个主方法时,还没有该类的对象,因此只能通过该类直接调用主方法,因此使用static修饰该主方法。
  • void返回值:因为主方法被JVM调用,该方法的返回值将返回给JVM,这没有任何意义,因此main()方法没有返回值。
    上面的方法中还包括一个字符串数组形参,根据方法调用的规则:谁调用方法,谁负责为形参赋值。也就是说,main()方法有JVM调用,即args形参应该由JVM负责赋值。但JVM怎么知道如何为args数组赋值呢?先看下面的程序。
public class ArgsTest
{
	public static void main(String[] args)
	{
		// 输出args数组的长度
		System.out.println(args.length);
		// 遍历args数组的每个元素
		for(String arg : args)
		{
			System.out.prinln(arg);
		}
	}
}

在cmd编译后执行java ArgsTest命令,看到程序仅仅输出一个0,这表明args数组是一个长度为0的数组。
改为如下命令来运行上面程序:
java ArgsTest Java Spring 将看到如下运行结果:
这里写图片描述
从上图可以看出,如果运行Java程序时在类名后紧跟一个或多个字符串(多个字符串之间以空格隔开),JVM就会把这些字符串依次赋给args数组元素。运行Java程序时的参数与args数组之间的对应关系如下:
这里写图片描述
如果某参数本身包含了空格,则应该将该参数用双引号(“”)括起来,否则JVM会把这个空格当成参数分隔符,而不是当成参数本身。

2.使用Scanner获取键盘输入

Scanner类可以很方便地获取用户的键盘输入,是一个基于正则表达式的文本扫描器,它可以从文件、输入流、字符串中解析出基本类型值和字符串值。Scanner类提供了多个构造器,不同的构造器可以接受文件、输入流、字符串作为数据源,用于从文件、输入流、字符串中解析数据。
Scanner主要提供了两个方法来扫描输入。

  • **hasNextXxx()😗*是否还有下一个输入项,其中Xxx可以是Int、Long等代表基本数据类型的字符串。如果只是判断是否包含下一个字符串、则直接使用hasNext()。

  • **nextXxx()😗*获取下一个输入项。Xxx的含义与前一个方法中的Xxx相同。
    在默认情况下,Scanner使用空白(包括空格、Tab空白、回车)作为多个输入项之间的分隔符。
    为Scanner设置分隔符使用userDelimiter(String pattern)方法即可,例如使用sc.useDelimiter("\n");将只把回车作为分隔符,sc是一个Scanner对象。
    事实上,Scanner提供了两个简单的方法来逐行读取。

  • boolean hasNextLine(): 返回输入源中是否还有下一行。

  • String nextLine(): 返回输入源中下一行的字符串。

Scanner不仅能读取用户的键盘输入,还可以读取文件输入。只要在创建Scanner对象时传入一个File对象作为参数,就可以让Scanner读取该文件的内容。
Scanner sc = new Scanner(new File("filepath"));

二.系统相关

Java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特定功能。Java提供了System类和Runtime类来与程序的运行平台进行交互。

1.System类

System类代表当前Java程序的运行平台,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法。
System类提供了代表标准输入、标准输出和错误输出的类变量,并提供了一些静态方法用于访问环境变量、系统属性的方法,还提供了加载文件和动态链接库的方法,以及通知系统进行垃圾回收的方法、通知系统进行资源清理的方法。getenv(); getProperties(); getProperty(); gc(); runFinalization()
System类还有两个获取系统当前时间的方法:currentTimeMillis()和nanoTime()。他们都返回一个long型整数。实际上他们都返回当前时间与UTC 1970年1月1日午夜的时间差,前者以毫秒作为单位,后者以纳秒作为单位。必须指出的是,这两个方法返回的时间粒度取决于底层操作系统,可能所在的操作系统根本不支持以毫秒、纳秒作为计时单位。
除此之外,System类的in、out、err分别代表系统的标准输入(通常是键盘)、标准输出(通常是显示器)和错误输出流,并提供了setIn(); setOut(); setErr()方法来改变系统的标准输入、标准输出和标准错误输出流。
System类还提供了一个identityHashCode(Object x)方法,该方法返回指定对象的精确hashCode值,也就是根据该对象的地址计算得到的hashCode值。当某个类的hashCode()方法被重写后,该类实例的hashCode()方法就不能唯一地标识该对象;但通过identityHashCode()方法返回的hashCode值,依然是根据该对象的地址计算得到的hashCode值。所以如果两个对象的identityHashCode值相同,则两个对象绝对是同一个对象。

2.Runtime类

Runtime类代表Java程序的运行时环境,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,但可以通过getRuntime()方法获取与之关联的Runtime对象。
与System类似的是,Runtime也提供了gc()方法和runFinalization()方法来通知系统进行垃圾回收、清理系统资源,并提供了load(String filename)和load(String libname)方法来加载文件和动态链接库。
Runtime类代表Java程序的运行时环境,可以访问JVM的相关信息,如处理器数量、内存信息等。
除此之外,Runtime类还有一个功能——它可以直接单独启动一个进程来运行操作系统的命令。Runtime提供了一系列exec();方法来运行操作系统命令。

晶体管的 栅极gate 材料选用 多晶硅polysilicon,并采用 自对准工艺 self-aligned IC后端版图 【VLSI】 本文为了解决为什么要使用多晶硅作栅极触点的问题,先介绍了MOS管的工作原理是通过栅极上所加的电压控制漏极与源极之间电流,然后解释了栅极的材料为什么选用多晶硅,然后介绍了晶体管里栅极的自对准工艺(Self-Aligned Gate )。 阅读详情

相关推荐

sklearn2pmml xgboost缺失值(missing)处理的坑

sklearn2pmml xgboost缺失值(missing)如何处理 今天同事在部署xgboost pmml模型时遇到了大坑,线上spark预测和本地python预测结果怎么都不对应,记录一下处理过程。 看了下同事的代码,貌似也没有问题 from sklearn2pmml import PMMLPipeline from sklearn2pmml import sklearn2pmml fro...

Skycrab 8969

Java 基础——Scanner 类

本文介绍了 Scanner 类相关的知识。

代码星辰的博客 3万+

Ai数字人直播系统源码部署

虚拟形象定制,直播内容智能生成,多语言支持,智能互动,声音克隆,24 小时不间断直播,多平台直播,智能数据分析,实时情感识别,视频合成,Ai数字人直播系统源码出售,Ai数字人直播系统源码部署实现 AI 数字人 24 小时不间断直播功能是一个较为复杂的任务,涉及到多个方面,如直播流的推送、内容的持续生成、系统的稳定性保障等。以下为你提供一个简化的实现思路和示例代码,借助 Python 结合 FFmpeg 工具来模拟 24 小时不间断直播。

weixin_ggwwsscc的博客 1256

System Scanner简介

System Scanner简介System Scanner系统扫描器是一个基于主机的安全评估系统。它和网络扫描器有所区别,它提供基于主机的安全评估,分析安全弱点。网络扫描器是在网络层扫描各种设备来发现安全漏洞,系统扫描器是在系统层上通过依附于网络设备上的扫描器代理侦测主机内部的漏洞。这些扫描器代理策略可以通过企业的某个控制台进行集中管理和配置。系统扫描器在相当严格的基础上对...

weixin_34337381的博客 510

通过ssh进行宇树g1机器人进行连接

原因:就是g1机器人输出接口损坏,无法连接外部显示器。前期准备:本文电脑是联想Y7000p(windows)2.进入页面后:3.出现是一个压缩包,解压后:4.安装时:要注意,需要在文件夹中找到这个文件目录,然后在此鼠标右键开启终端进行安装:接着按照提示next下去即可,可以自定义安装路径。

m0_72207463的博客 1288

走马观碑组智能车竞赛:目标板识别算法优化与实战技巧(基于OpenCV)

本文针对智能车竞赛走马观碑组别的核心挑战,深入探讨了基于OpenCV的目标板识别算法优化与实战技巧。文章系统分析了PVC赛道环境下的光照、运动模糊等干扰因素,详细拆解了从红色矩形定位、透视校正到特征提取与分类的完整流程,并提供了工程优化、速度提升及现场调试的实用策略,旨在帮助参赛队伍构建一套在高速运动中既准又快的鲁棒识别系统。

life6的博客 733

Java笔记(Runtime类的使用):

1.Runtime类 1.案例: public class RunTimeDemo { public static void main(String[] args) throws IOException { //创建当前运行环境的实例 Runtime runtime = Runtime.getRuntime() ; //获取计算机cpu的处理器数量 //public int availableProcessors()

weixin_46657047的博客 313

Matlab中eig内置函数转为C语言

本文记录一下如何将MATLAB中的eig函数转为C语言,即通过C语言求解矩阵的特征值与特征向量。[V,D]=eig(Rx)中V为矩阵Rx的特征向量,D为矩阵的特征值。其中Rx维度为12*12的复矩阵。 首先在MATLAB端创建入口函数保存为eigvalue.m: 打开MATLAB Coder,添加入口函数: 3.在定义输入类型窗口中,需要添加输入数据来训练...

u011441044的博客 3516

Java中Scanner详细用法

Scanner用法

hailuochaofan的博客 5万+

基于matlab的心电信号预处理

这是前段时间做的一个课程设计,做的比较简单,没有考虑到太细,只是初步地达到了想要的效果。这次设计主要是对心电信号进行预处理,将其信号中包含的一些干扰滤除或者抑制掉。 一、心电信号 (1)心电信号的特性   人体心电信号是非常微弱的生理低频电信号,通常最大的幅值不超过5mV,信号频率在0.05~100Hz之间。心电信号是通过安装在人体皮肤表面的电极来拾取的。由于电极和皮肤组织之间会发生极化现象

i_weimoli的博客 6万+

[系统安全] 十七.Windows PE病毒概念、分类及感染方式详解

作者前文介绍了PE文件格式,熟悉各种PE编辑查看工具,针对目标EXE程序新增对话框等;这篇文章将介绍Windows PE病毒, 包括PE病毒原理、分类及感染方式详解,并通过案例进行介绍。这些基础性知识不仅和系统安全相关,同样与我们身边的APP、常用软件及操作系统紧密联系,希望这些知识对您有所帮助,更希望大家提高安全意识,安全保障任重道远。本文参考了《软件安全》视频、安全网站和参考文献中的文章,并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。

杨秀璋的专栏 1万+

Java 基础类库

主要是为了时间类做笔记,后来看到基础类库的时候也顺带做了一些

Gracener的博客 607

【机器学习概率统计】11 贝叶斯统计推断:最大后验

这一节,我们来介绍另外一种统计推断方法:贝叶斯统计推断方法。 1.回顾贝叶斯定理 首先,我们先来复习一下贝叶斯定理: p(Θ∣X)=p(X∣Θ)p(Θ)p(X)p(\Theta|X)=\frac{p(X|\Theta)p(\Theta)}{p(X)}p(Θ∣X)=p(X)p(X∣Θ)p(Θ)​ 在这个简简单单的式子当中,蕴含了我们要掌握的很多重要内容: 贝叶斯定理当中的四个概率表达式,他们都非常重要,在这一节的内容中将反复出现,我们来一一解析一下: p(Θ)p(\Theta)p(Θ):先验分布。 反映的是在

机器学习数学基础系列专栏 3271

第七章Java基础类库

Java学习笔记 第七章——Java基础类库 与用户互动 运行Java程序的参数 mian函数的方法签名如下: public static void main(String[] args){...} public:Java类由JVM调用,为了让JVM可以自由调用这个方法,使用该修饰符把它暴露出来 static:JVM调用这个主方法时,不会创建对象,而是通过该类来调用,故使用static void:将该方法的返回值返回给JVM没有任何意义 String[] args形参:在调用该程序时,在主类名称后增

qq_39079631的博客 196

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【JAVA】基础类库

基础类库一、用户相关1.1 Java程序入口:main()方法1.2 Scanner三级目录二、系统相关一、用户相关一、用户相关 一、用户相关 1.1 Java程序入口:main()方法 public static void main(String[]args){…} public修饰符:Java类由JVM调用,为了让JVM可以自由调用main()方法,用public修饰符把这个方法暴露出来。 . static修饰符:JVM调用这个主方法时,JVM直接通过该类来调用主方法,因此使用static修饰该主方法

李漂亮的博客 197

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

疯狂Java讲义_Chapter07Java基础类库

Java基础类库 1.与用户互动 1.运行Java程序的参数 public static void main(String[] args): public:为了让JVM可以自由调用main方法; static:JVM直接通过类来调用main方法; void返回值:main方法没有返回值; args形参是JVM在调用main时传递的参数,由JVM根据命令行的输入参数执行; public class Test{ publi

工程师学徒AYG 254

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java 类确定运行时间_Java 基础类库:System、Runtime、Object、Math、日期、时间

与用户互动运行Java程序的参数//Java程序入口:main()方法public static void main(String[] args){...}public修饰符:Java类由JVM调用,为了让JVM可以自由调用这个main()方法,所以使用public修饰符把这个方法暴露出来static修饰符:JVM调用这个主方法时,不会先创建该主类的对象,然后通过对象来调用该主方法。JVM直接通过...

weixin_39595164的博客 221

java中Scanner类的用例

System.out.println("你输入的整数是: " + num);System.out.println("你输入的双精度浮点数是: " + d);System.out.println("你输入的单词是: " + word);System.out.println("你输入的文本是: " + line);System.out.println("你输入的整数是: " + num);System.out.print("请输入一个整数: ");System.out.print("请输入一个整数: ");

2301_78420173的博客 898

第7章 Java基础类库

1.Java程序参数 (1)运行Java程序的入口: main()方法 Public static void main(String[] args) {…} (2)使用Scanner获取键盘输入,两种方法: 1)hasNextXxx():是否还有下一个输入项,Xxx可以是int,long等。若只判断是否包含下一个字符串,则直接使用hasNext()。 2)nextXxx():获取下一个输...

泽阳Alex的博客 292

java 中的Scanner类

什么是Scanner类? Scanner类–一个可以解析基本类型和字符串的简单文本扫描器。 例如;一下代码使用户能够从 System.In 中读取一个数。 Scanner sc = new Scanner(System.In) ; int i = sc.nextInt(); 备注; System.In 系统输入指的是通过键盘录入数据。 什么叫打印输出 ---是程序当中的数据在屏幕当中显示出。 什么叫键盘输入 —是通过双手打字把数据从键盘录入程序中。 引用类型的一般使用步骤 1.导包 你想用的这个人,他在

weixin_50212958的博客 447

Java 控制台输入流System.in和Scanner

System.out 是常用的在控制台输出数据的 System.in 可以从控制台输入数据 步骤1:System.in步骤2:Scanner读取字符串步骤3:Scanner从控制台读取整数步骤4:练习-自动创建类步骤5:答案-自动创建类 步骤1:System.in packagestream; importjava.io.IOException; importjava.io.InputStream; publicclassTest...

qq_27139689的博客 502

java中system类详细解读

java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。它不能被实例化。 system类的三大成员变量,in(标准输入流)、out(标准输出流)、err(标准错误输出流),分析他们的作用以及用法,了解system类的常用方法

m0_74956866的博客 718

java中Scanner类的简单用法分享

Scanner是SDK1.5新增的一个类,可使用该类创建一个对象。       Scanner reader=new Scanner(System.in);        然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型         next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),ne

YuWei_lu的博客 839

【Java】Scanner 输入类

通过 Scanner 类来获取用户的输入。 下面是创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); 接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串 next() 与 nextLine() 区别 next(): 1、一定要读取到有效字符后才可以结束输入。 ...

weixin_44131010的博客 257

import java.util.scanner,从方法内部使用java.util.Scanner会导致运行时错误

Why would the following code give me a runtime error? It gives me a NoSuchElementException when the method is called the second time. It works fine if I delete the call to stdin.close(), but then Ecli...

weixin_35607083的博客 1639

疯狂java笔记(五) - 系统交互、System、Runtime、Date类

一、程序与用户交互(Java的入口方法-main方法):  运行Java程序时,都必须提供一个main方法入口:public static void main(String[] args){}   public:因为main方法里边可能包含同一包内或其他类的方法,为了保证能够正常执行该方法所以只能用该方法;   static:调用主方法的时候不会先创建该主类的对象,而是直接通过该类...

monkey_怡宝的博客 315
上一篇: Java(十九)——对象与垃圾回收
下一篇: Java(二十一)——Java基础类库之常用类(Object、String、Math、BigDecimal类)
Undergoer_TW
博客等级 码龄11年 185粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值