16从零开始学Java之Java里的输入与输出语句有哪些?

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦

CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者

前言

我们在前面的文章中,学习了如何创建Java文件,也学习了Java里的标识符、运算符、进制等内容。有些同学觉得还不够过瘾,给壹哥发来了好多私信,期待我能够把进度更新的再快一点。这不,新内容这就给大家安排上了。今天这篇文章,壹哥就给大家详细讲讲Java里的输入和输出语句,看看有哪些小细节需要我们掌握。

---------------------------------------------前戏已做完,精彩即开始-------------------------------------------

全文大约【3000】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富案例及配图视频,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考......

Java中其实有三个标准的“流”,他们被统称为standard streams:

标准输入:基于流的输入(stdin),Java中对应的API是System.in;

标准输出:基于流的输出(stdout),Java中对应的API是System.out;

标准错误:基于流的错误输出(stderr),Java中对应的API是System.err;

这三者之间的关系是,我们在命令行中输入各种指令,转到stdin的环境中运行处理,并在控制台中将处理好的结果,利用stdout和stderr进行输出显示为文本,还可以将结果重定向到对应的磁盘文件等。接下来壹哥就给大家详细地讲讲输入和输出。

一. 输出语句

我们在前面的文章和案例中,其实早就知道Java是如何实现输出功能的了。没错,就是利用System.out.println()语句来实现的!接下来壹哥就给大家详细解读一下这个语句的作用及其含义。

1. System

我们先来看看System是个什么东东。

System是Java自带的一个类,它代表着系统类。该类位于java.lang包中,很多有用的系统级别的属性、控制方法都在该类里面。

System类的构造方法是private(私有)修饰的,所以我们无法直接创建该类的对象,即无法实例化该类。关于这些对象的实例化,壹哥在后面讲解面向对象时会再详细讲解,大家先不要着急哦。System内部的成员变量和成员方法都是static的,我们可以很方便的直接进行调用。在System类里面,给我们提供了如下几个核心功能:

  • 标准输入输出:如out、in、err;
  • 外部定义的属性和环境变量的访问:如getenv()、setenv()、getProperties()和setProperties();
  • 加载文件和类库的方法:如load()和loadLibrary();
  • 快速拷贝数组的方法:arraycopy();
  • jvm操作:如gc()、runFinalization()、exit();
  • 获取时间方法:如System.nanoTime 和 System.currentTimeMillis。

2. out与err

out表示一种“标准”的输出流,它是System类中的静态成员,可以直接被我们调用,且这个成员变量是java.io.PrintStream类的引用。

另外还有一个与out功能类似的输出流err。err表示“标准”的错误输出流,此流可以打开并准备接受输出的数据。一般err流用于显示错误消息,或者用于显示需要引起用户特别注意的信息,在控制台中会显示红色的文字。

其实out和err的用法完全一样,功能也基本相同。out和err的唯一区别就是,out往往是带缓存功能的,而err没有缓存功能(默认设置,可以更改)。

3. print和println

print()和println()都是java.io.PrintStream类里的方法,它们的作用都是向控制台输出信息。两者的基本作用完全一样,只是print()方法不会产生换行,println()会产生换行,因为println是print line的缩写,表示输出并换行。

通过以上这3个API(应用程序接口)的讲解,我们可以总结出一个基本的规则:在Java中,被static关键字修饰的成员变量,可以直接通过"类名.成员名"的形式来引用,不用创建类的实例对象。所以我们可以直接调用System类里的静态成员out,即System.out。又因为System.out是java.io.PrintStream类的实例引用,所以又可以通过 System.out.println(); 的形式来调用。

以上这段话,如果你看着有点懵逼,请不用纠结。这属于面向对象的知识,我们暂时还没学到,在后面面向对象的章节中,壹哥会详细讲解!

4. 基本案例

以下是关于标准输出的代码案例,大家对着练习一下即可,很简单的哦。

/**
 * 千锋java
 * @author 一一哥Sun
 * QQ:2312119590
 * CSDN、掘金、知乎找我哦
 */
public class Demo01 {

	public static void main(String[] args) {
		//输出语句
		//不换行输出
		System.out.print("Hello");
		System.out.print(" World");
		
		//换行输出
		System.out.println("你好");
		System.out.println("一一哥");
		
		//标准的错误输出,控制台会用红色文字显示
		System.err.append("标准的错误输出,哈哈哈");
	}

}

运行效果如下图所示:

5. 格式化输出

5.1 概念

有时候,计算机默认输出的数据格式,并不一定能够满足我们的阅读需求,比如有的人想要保留小数点后两位,也有的人想要保留小数点后四位,大家的需求是个性化的,那么Java能不能针对特殊的需求,进行一些个性化的输出呢?这是可以实现的!这就需要用到格式化输出了!

利用格式化输出功能,可以把数据显示成我们期望的格式。我们可以使用System.out.printf()语句,并结合%与?这两个占位符来实现,printf()方法可以把后面的参数格式化成指定的格式。

5.2 占位符

Java为了实现格式化功能,给我们提供了多种占位符,可以把各种数据类型“格式化”成指定的字符串。常用的占位符有如下这些:

占位符

说明

%d

格式化输出整数

%x

格式化输出十六进制整数

%f

格式化输出浮点数

%e

格式化输出科学计数法表示的浮点数

%s

格式化输出字符串

这里我们要注意,在输出语句中,%表示占位符。如果连续使用两个%%,应该传入两个对应的数字,否则会把后面的%字符给原文输出。

如果我们想了解更详细的格式化参数,可以参考JDK文档:java.util.Formatter

5.3 案例

下面是壹哥设计的与本小节对应的代码案例,大家可以对照练习。

/**
 * 千锋Java
 * @author 一一哥Sun
 * QQ:2312119590
 * CSDN、掘金、知乎找我哦
 */
public class Demo01 {

	public static void main(String[] args) {
		//格式化输出
		
		//默认输出格式
		//double d = 88800000;
        //System.out.println(d); // 8.88E7
        
        double d = 3.1415926;
        System.out.printf("%.2f\n", d); // 保留2位小数3.14
        System.out.printf("%.4f\n", d); // 保留4位小数3.1416
        
        //占位符与格式化
        int n = 123456789;
        //%08x,输出16进制数据,如果不足8位,用0补齐
        System.out.printf("n=%d, hex=%08x", n, n); // 注意,两个%占位符应该传入两个数字
	}

}

二. 输入语句

1. 输入简介

壹哥在前面给大家讲过,Java中给咱们提供了有三个标准的“流”,他们被统称为standard streams。除了负责输出的流之外,还有一个负责输入的标准流,Java中对应的API是System.in。

与标准输出相比,标准输入则复杂的多。尤其是直接使用System.in时,虽然可以读取到用户的输入,但该方式特别的复杂,对咱们初学者来说很不友好。所以为了更方便地实现输入功能,壹哥给大家介绍一个更简单的Scanner类。

2. Scanner类

2.1 Scanner简介

Scanner类是Java 5中开始提供的,负责解析基本类型和字符串的简单文本扫描器。通过Scanner类,我们可以获取用户在控制台里的输入数据。Scanner类里常用API方法有如下几个:

nextInt():获取输入的整数;

nextDouble()获取输入的双精度浮点数;

nextLine():获取输入的字符串,包括单词里的空格和除回车以外的所有字符;

next()获取输入的字符串,只从有效字符计算。在有效字符之前遇到的空格键、Tab键、换行符或Enter键等结束符,next()方法会自动将其去掉。只有在输入有效字符之后,next()方法才会将其后面输入的空格键、Tab键或Enter键等都视为分隔符或结束符,并以空格结束。

2.2 使用步骤

我们要想使用Scanner,需要遵循以下步骤:

  1. 导入Scanner类;
  2. 创建Scanner对象;
  3. 使用Scanner对象扫描输入的内容。

接下来壹哥就给大家设计一个案例,讲解Scanner的具体使用。

3. 案例

本案例对初学者来说,具有一定的挑战性,大家要集中精力哦。

//1.import导包:导入Scanner类
import java.util.Scanner;

/**
 * 千锋Java
 * @author 一一哥Sun
 * QQ:2312119590
 * CSDN、掘金、知乎找我哦
 */
public class Demo03 {

	public static void main(String[] args) {
		//输入语句
		//2.创建一个从键盘录入的Scanner扫描对象 
        Scanner sc = new Scanner(System.in);

        //3.使用Scanner对象,扫描输入的内容(整数、小数、字符串、布尔)
        //在控制台或命令行输入数字,并点击回车键结束
        System.out.println("请输入一个数字");
        int num = sc.nextInt();
        System.out.println("你输入的数字为:"+num);

        System.out.println("请输入一个小数");
        double num2 = sc.nextDouble();
        System.out.println("你输入的数字为:"+num2);

        System.out.println("请输入一个字符串");
        String str = sc.next();
        System.out.println("你输入的字符串为:"+str);
	}

}

本案例效果如下:

----------------------------------------------​​​​​​​正片已结束,来根事后烟--------------------------------------------

三. 结语

至此,壹哥就把Java里的输入和输出语句给大家讲解完毕了,本节内容比较简单,大家把案例对照着练习一下吧。下一篇文章中,壹哥会给大家讲解分支语句里的if语句,敬请期待哦。

另外如果你独自学习觉得有很多困难,可以加入壹哥的学习互助群,大家一起交流学习。

四. 今日作业

1. 第一题

定义一个四位整数,分别输出其个位、十位和百位、千位。

2. 第二题

从键盘输入三角形的底和高等三边数据,并输出三角形的面积。

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

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

相关文章

iPhone手机小技巧:使用备忘录创建清单

手机备忘录是非常常用的软件之一,无论是iPhone手机还是安卓系统的手机都可以下载相应的APP进行使用。它可以帮助我们记录很多琐碎的事情,防止我们遗忘某事。 在记备忘录的时候,有的人是直接打字记录的,也没有什么具体的格式&…

Excel–如何区分大小写、精确匹配查找?

最近经常需要用到uuid来匹配数据,经常会遇到两个uuid 只是大小写的区别,数据库里使用是没问题的,因为mysql是可以区分大小写的,但是导出后通过excel处理数据匹配数据时就会出问题 如下图所示,通过vlookup匹配&#xf…

文心一言 VS chatgpt (3)-- 算法导论2.1

一、以图 2-2 为模型,说明INSERTION-SORT 在数组 A(31,41,59,26,41,58)上的执行过程。 文心一言: 以图 2-2 为模型,说明INSERTION-SORT 在数组 A(31,41,59&…

Java基础学习第二十四讲:Stream流

Stream流 一、什么是Stream流 Stream流操作是Java 8提供一个重要新特性,它允许开发人员以声明性方式处理集合,其核心类库主要改进了对集合类的 API和新增Stream操作。Stream类中每一个方法都对应集合上的一种操作。将真正的函数式编程引入到Java中&…

ROS功能包|mav_control_rw(基于MPC的无人机轨迹跟踪控制)---gazebo仿真测试

ROS功能包|mav_control_rw(基于MPC的无人机轨迹跟踪控制)---gazebo仿真测试gazebo仿真测试gazebo仿真测试 启动gazebo并加载无人机模型 $ roslaunch rotors_gazebo mav.launch mav_name:firefly启动 linear mpc 控制器 $ roslaunch mav_linear_mpc ma…

Win10安装MySql1.5.7

1)、下载安装包 地址:MySQL :: Download MySQL Community Server 或者: 链接:https://pan.baidu.com/s/1iSLiUo8ehqP6tfxGJ2ewfA 提取码:ctbr 2)、下载后解压到指定目录 我的是D:\Program Files\mysql-…

SCS【19】单细胞自动注释细胞类型 (Symphony)

单细胞生信分析教程桓峰基因公众号推出单细胞生信分析教程并配有视频在线教程,目前整理出来的相关教程目录如下:Topic 6. 克隆进化之 CanopyTopic 7. 克隆进化之 CardelinoTopic 8. 克隆进化之 RobustCloneSCS【1】今天开启单细胞之旅,述说单…

一图看懂 bz2 模块:处理压缩和解压缩文件, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 bz2 模块:处理压缩和解压缩文件, 资料整理笔记(大全)摘要模块图类关系图模块全展开【bz2】统计常量int模块4 io5 os6 warnings7 _compre…

数据结构与算法基础(王卓)(23):邻接表(链式存储结构)

顶点结点: //顶点的结点结构 typedef struct VNode {VertexType data; //顶点信息ArcNode* firstarc; //指向第一条依附该顶点的边的指针 }VNode, AdjList[MVNum]; //例如:VNode v[MVNum] 相当于 AdjList v 我觉得也可以改成这样写(存疑&…

基于数字孪生智慧污水厂Web3D可视化管理系统

城市水环境不仅关系到国民生活的质量,还对我国社会发展有着深入的影响。城市污水处理厂的存在不仅能够提升生态环保工作发挥的效用,还能够向城市居民宣传生态环保的重要性,使得更多的市民认识到节约、环保的意义,能够从自身出发&a…

UVM学习笔记2——验证基础知识(验证计划、验证方法)

文章目录前言一、覆盖率二、验证计划1、验证计划模板2、验证计划评估三、验证方法1、动态仿真/dynamic simulation2、静态检查/formal check3、虚拟模型4、硬件加速/hardware acceleration5、效能验证6、性能验证四、验证分类1、验证工具2、验证复杂度/可见度/透明度3、验证的芯…

Java设计模式(一)单例模式

设计模式是对软件设计中普遍存在的各种问题,提出解决方案 设计模式包含了面向对象的精髓,懂了设计模式,你就懂了面向对象分析和设计的精要。 设计模式的七大原则 1.单一职责原则 2.接口隔离原则 3.依赖倒置原则 4.里氏替换原则 5.开闭原则o…

大数据项目实战之数据仓库:用户行为采集平台——第2章 项目需求及架构设计

第2章 项目需求及架构设计 2.1 项目需求分析 1)采集平台 (1)用户行为数据采集平台搭建 (2)业务数据采集平台搭建 2)离线需求 主题 子主题 指标 流量主题 各渠道流量统计 当日各渠道独立…

pdf压缩文件怎么压缩最小?办公常备软件

PDF文件的大小有时会让人感到困扰,特别是在网络上传输和存储方面。为了解决这个问题,我们需要将PDF文件压缩至最小。 在进行压缩之前,需要检查PDF文件的分辨率和图形质量。通过降低分辨率和图形质量,可以显著减小文件的大小。此外…

springCloud学习【6】之分布式搜索引擎(3)

文章目录前言一 数据聚合1.1 DSL实现聚合1.1.1 Bucket聚合语法1.1.2 聚合结果排序1.1.3 限定聚合范围1.2 Metric聚合语法1.3 小结1.4 RestAPI实现聚合1.5 API语法1.7 案例二 自动补全2.1 拼音分词器的安装2.2 自定义分词器2.3 自动补全查询2.4 自动补全查询的JavaAPI三 数据同步…

Unity升级后打包AssetBundle变慢

1)Unity升级后打包AssetBundle变慢 ​2)打包使有些资源合成了一个资源data.unity3d,有些分开的原因 3)Unreal在移动设备中无法使用Stat命令获取到GPU Thread的耗时 4)Unity中如何看到相机视野范围内的剔除结果 这是第3…

【C++】迭代器

内容来自《C Primer(第5版)》9.2.1 迭代器、9.2.3 begin和end成员、9.3.6 容器操作可能使迭代器失效、10.4.3 反向迭代器 目录 1. 迭代器 1.1 迭代器范围 1.2 使用左闭合范围蕴含的编程假定 2. begin和end成员 3. 容器操作可能使迭代器失效 3.1 编…

【SQL基础笔记】

本文标签: SQL语法 SQL分类 DDL DML DQL DCL 目录 一、SQL语法 二、SQL的分类 三、DDL 1.DDL-数据库操作 2.DDL-表操作 3.DDL-数据类型 4.DDL-表操作 四、DML 五、DQL 1.DQL-基本查询 2.DQL-条件查询: 3.DQL-聚合函数 4.DQL-分组查询 5.DQL-排序查询 6.DQL-分页查询 7.综合案…

让ChatGPT在中断回答的时候自动输入「请接上文继续」并发送

一、脚本内容 让ChatGPT在中断回答的时候自动输入「请接上文继续」并发送 // UserScript // name ChatGPT自动接上文继续 // namespace http://tampermonkey.net/ // version 1.3 // description 让ChatGPT在中断回答的时候自动输入「请接上文继续」并发送 /…