目录

与用户互动

1、 运行Java程序的参数

2. 使用Scanner获取键盘输入

系统相关

1.System类

2.RunTime类

BigDecimal类


与用户互动

1、 运行Java程序的参数

 Java程序的入口——main()方法的方法签名:

public static void main(String[] args)    { }

下面详解为什么用这个方法签名:

  • public修饰符:因为Java类由JVM(java虚拟机)调用,为了让JVM可以自由调用这个main()方法,所以用public进行修饰。

  • static修饰符:JVM调用这个方法时,不会先创建该主类的对象,然后通过对象调用这个主方法,JVM直接通过调用这个类来调用这个主方法(之前说道过,static修饰的方法是类方法,可以通过类或者对象进行调用)。

  • void:JVM调用主方法,主方法的返回值要返回给JVM,但是这没有任何意义,所以就不要返回值就好了。

  • String[] args:字符数组形参。根据方法调用原则,谁调用了方法,谁就提供形参的值,也就是说,JVM调用了主方法,所以由它为形参赋值。

    但是JVM怎么知道如何为这个数组赋值?

    看下面代码:

    结果如下:

这是是意料之中的结果,因为没有给数组赋什么值,长度当然为0;

但是如果运行Java程序时(控制台运行)在类名后面紧跟一个或者多个字符串(多个字符之间通过空格分开),JVM就会把这些字符串依次赋值给args数组元素。

如果某参数本身包含了空格,则应该将参数用双引号(“”)括起来,否则java会把这个空格单座参数分隔符,而不是参数本身。

是不是很神奇,没想到一个以为是套路的东西含义这么深刻。

2. 使用Scanner获取键盘输入

(1)Scanner主要提供了两个方法来扫描输入:

1)hasNextXXX():是否还有下一个输入项,其中XXX可以是int,long等代表基本数据类型的字符串;如果只是判断是否包含下一个字符串,则直接使用hasNext()。

2)nextXXX():获取下一个输入项。

代码如下:

结果如下:

这里需要了解一下,Scanner默认的是通过空白(空格,Tab空白,回车)作为分隔符,如果不想将空白作为分隔符,例如想输入一行数据,无论有没有空格,都看作一个输入项,如果是这种需求,可以把Scanner的分隔符设置成只回车。  为Scanner设置分隔符使用useDelimiter(String pattern)方法即可。该方法的参数应该是一个正则表达式。(后文会介绍)

看一下栗子:

结果为:

可以看到这次在一行输入三个数据,空白是没有分界符的作用的。

实际上,Scanner提供了两个简单的方法进行逐行读取:

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

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

下面演示个用Scanner获取输入源中整型的输入项:

结果为:

可以看到的是,它将数字(整数或者浮点数均变成了浮点数进行输出),但是第二个输入数据,因为输入了字符,不是数字,所以没有输出结果,此时,Scanner的读取操作被阻塞。这也是其不如上一个程序所在,适应性不强。

 Scanner不仅能够读取用户的键盘输入,还能对文件进行读入。

举个栗子:

这个大体上写法类似于上面的,要注意两点,一个是文件的载入的写法,一个是上面的异常处理(这个程序会自动提示生成)。

系统相关

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

1.System类

System类作为当前运行平台时,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法。

System类提供了代表标准输入、标准输出和错误输出的类变量,并提供了一些静态方法用于访问环境变量、系统属性的方法,还提供了加载文件和动态链接库的方法(这个我不清楚,了解一下而已)。System类还有两个获取当前系统时间的方法,currentTimeMillis()和nanoTime(),它们都返回一个long型整数,这里必须指出的是,这两个方法返回的时间粒度取决于底层操作系统,可能所在的操作系统根本不支持以毫秒和纳秒作为计时单位。

2.RunTime类

    Runtime类代表Java程序的运行环境时,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,但可以通过getRuntime()方法获取

与之关联的Runtime对象Runtime作为运行环境时,可以访问JVM的相关信息,

如处理器数量,内存信息等。

举个栗子:

结果如下:

此外,Runtime类还有一个功能:直接单独启动一个进程来运行操作系统的命令:

感觉好厉害的样子哦!

BigDecimal类

1. 为了能精确表示、计算浮点数,Java提供了BigDecimal类,该类提供了大量的构造器用于创建BigDecimal 对象,包括把所有的基本数值型变量转换成一个BigDecimal对象,也包括利用数字字符串、数字字符数组来创建BigDecimal对象。

2. 在BigDecimal类的构造器中,BigDecimal(double val)构造器有一定的不可预知性,当程序使用new BigDecimal(0.1)来创建一个BigDecimal对象时,它的值并不是0.1,它实际上等于一个近似0.1的数,因为0.1无法准确表示为double浮点数。但是使用BigDecimal(String val)构造器的结果是可预知的,因此通常优先使用基于String的构造器。如果必须使用double浮点数作为BigDecimal 构造器的参数时,通过BigDecimal.valueOf(double value)静态方法来创建BigDecimal对象。

END

《疯狂Java讲义》8相关推荐

  1. 《zabbix用户权限分配管理》-8

    登陆zabbix 默认账号:Admin,密码:zabbix,这是一个超级管理员.登陆之后在右下角可以看到"connected as Admin"(中文版:连接为Admin). za ...

  2. Windows Server 2003成员服务器基准用户权限分配策略

    本文出自 "王达博客" 博客,转载请与作者联系! 作者已授权本博客转载 以下内容是摘自笔者编著,最新出版的<网管员必读--网络安全>(第2版)一书. 10.5.2  W ...

  3. 本地策略和组策略,更改安全设置和用户权限分配兼容性问题

    如果您更改安全设置和用户权限分配,则可能会导致客户端.服务和程序问题发生 适用于: Microsoft Windows Server 2003 Standard Edition (32-bit x86 ...

  4. 用户权限的管理与提权

    用户权限的管理与提权 用户权限的管理: 提示:权力越大,责任越大 环境变量的设置: 1. bash shell 配置文件 PS: 如果全局配置和个人配置产生冲突,以个人配置为准. 2.登陆系统后,环境 ...

  5. mysql用户权限重置_mysql中重置密码与新用户权限分配的方法介绍

    本篇文章给大家带来的内容是关于mysql中重置密码与新用户权限分配的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一.重置root密码 1.修改配置文件,免密登陆 输入命令 ...

  6. vue后台系统管理项目-角色权限分配管理功能

    vue后台系统管理项目: 技术选型:vue + element-ui 菜单权限管理模块功能 角色列表查询,通过(角色名称:角色编号:状态:启用.禁用)进行角色数据搜索. 查询.重置.新建角色功能 角色 ...

  7. oracle用户常用权限,Oracle用户权限分配的具体方法【常用财务软件使用教程】

    Oracle用户权限分配的具体方法 这里我们将介绍Oracle用户权限分配和Oracel从服务器导出数据的方法,希望能对大家有所帮助. 对于Oracle用户权限分配,很多人觉得不是很困难,但是要做好O ...

  8. mysql %用户域_MySQL运维---用户权限及管理

    一.mysql创建用户 1.创建用户 mysql> create user test@'%' identified by '123456'; 创建了用户,但是没有任何权限 Query OK,0 ...

  9. oracle用户权限的管理

    概述:创建的新用户是没有任何权限,甚至连登陆数据库的权限都没有.因此对于新创建的用户,需要为其制定 权限.用于给用户赋予权限的命令为grant,会搜权限的命令是revoke 1.        授予权 ...

  10. centos7 安装vsftpd和配置以及虚拟用户权限分配

    系统环境 centos7.3 版本 ftp 根目录 : /data/ftp ftp 配置文件目录:/etc/vsftpd ftp 虚拟用户权限配置文件目录:/etc/vsftpd/vuser_conf ...

最新文章

  1. pandas使用resample进行不同粒度下的时间特征重构实战:构建时间维度统计特征
  2. PostgreSQL 数据库多列复合索引的字段顺序选择原理
  3. python对文件的读写操作方式-python 文件读写操作
  4. aspx ttf文件加载不出来_加载页面信息,刷不出来心态都崩了
  5. 数据中台是下一代大数据_全栈数据科学:下一代数据科学家群体
  6. iOS - UITextField
  7. 混合知识实例-本地GIS定位系统Web版(Java、vue、Geoserver)
  8. [Linux] rpm 与 dpkg 用法比较
  9. 有史以来最容易理解的控制反转(IoC)与注入依赖(DI)
  10. 【计算机网络】物理层
  11. NRF52832-USB-Dangle-DIY笔记
  12. 【一分钟解决】Matplotlib 中英文混排多字体设置问题
  13. 我以前的痛苦,你也拥有吗?
  14. Operation CREATE USER failed for 'lin'@'host'
  15. 算法学习-素数与合数小结
  16. 支付宝芝麻分701,花呗借呗额度提升明显,网友:三年没涨一分
  17. 计算机毕业设计android的云南旅游,美食攻略,产品预订app(源码+系统+mysql数据库+Lw文档)
  18. 硕盟HDMI转VGA适配器|HDMI口连接VGA显示器转接头
  19. table.on('tool(test) test值是什么
  20. Oracle索引技术pdf

热门文章

  1. Ubuntu 16.04.6 LTS 发布:紧急修复 APT 漏洞
  2. 使用@functools.wraps的理由
  3. centos5.4 安装配置oracle10g
  4. .net转换关键字:operator、explicit与implicit
  5. 自考总结--2020年10月份
  6. 传说中的CAFEBABE到底在哪儿?
  7. 微服务架构下,静态数据通用缓存机制!
  8. 绝了!Dataway让 SpringBoot 变得更强大!
  9. 一个线程池 bug 引发的 GC 思考!
  10. 咖啡馆的故事:FTP, RMI , XML-RPC, SOAP, REST一网打尽