标准输入和参数的区别-刚入门建议别看,我怕你学会了再也不想用Windows

标准输入和参数的区别-刚入门建议别看,我怕你学会了再也不想用Windows

在这里,不解释什么是标准输入和参数(不知道的自己百度,学过C语言等语言的可以对比Scanf等输入函数和函数中的传递的参数概念),我们只解决实际问题。

将其对应到管道符 ‘|’、文件重定向符号 ’ > ’ , ’ < '的应用以及$()的应用。

首先,我们引入一个场景:当我们要查找系统中一个文件,并且要将其删除,而且作为一名程序员,我肯定想在别人面前耍波帅,尽量少操作键盘。那该怎么办?

对于稍微熟悉Linux的程序员来说,他可能就想到了管道符,他的操作思路是通过管道符将搜索结果作为删除命令的输入。

find / -name test.sh | rm 

然后马上这个程序员就要装x失败了。大家快鼓掌:

查看源图像

image-20210603000200823

但是,其实他的想法是正确的。下面给出正确答案:

rm -f $(find / -name test.sh)

image-20210603000248090

话不多说,老师要敲黑板了!!!

查看源图像

前者试图将find命令的结果连接到rm命令中作为标准输入,而后者则是将find的结果作为命令行参数传入。

注意了:

管道符和重定向符号是将数据作为标准输入的,这里我们举个例子:

ps -ef | grep xxx这个命令相信大家都很清楚(不知道的老哥请重修Linux),这里就是讲ps出来的进程数据作为标准输入,然后grep命令来查找符合xxx条件的进程。这就是一个作为标准输入的例子。

而$()将数据作为参数

好吧,这里我们还是举个例子吧,方便大家理解;这里就用一个echo today is $(date "+%Y-%m-%d")

这个例子就是输出当前日期。而$()就是当前日期作为了一个参数传入echo 输出命令中。

总结一下,rm命令肯定是不能将数据作为标准输入的,而是应该讲输入作为参数传入,然后进行删除。换言之,就是rm命令不接受标准输入,而是接受命令行参数。

下面是吃一堑长一智的环节,大家要记清楚了!

一本正经图片 的图像结果

下次遇到这样的情况我们怎么辨别哪些命令是接受标准输入,哪些命令接受命令行参数?

答案是:如果命令能够让终端阻塞,说明该命令接收标准输入,反之就是不接受,比如你只运行cat命令不加任何参数,终端就会阻塞,等待你输入字符串并回显相同的字符串。

最后说明一下,我不是大佬,我是个 菜鸟,这些都是我自己在学习过程中,一点点总结出来的,如果有总结不到位或者有错误的地方,还希望大佬们能够指教。不管写得好不好都希望各位大佬能指点指点,或者扩展一下。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基本输入是指在Java程序中获取用户输入的基本方法。可以使用Scanner类来实现基本输入。Scanner类提供了多种方法来读取不同类型的输入,例如nextInt()用于读取整数,nextDouble()用于读取浮点数,nextLine()用于读取字符串等。在使用Scanner类之前,需要先创建Scanner对象并将其与标准输入流(System.in)关联起来。例如: Scanner scanner = new Scanner(System.in); 然后就可以使用Scanner对象的方法来读取用户输入了。例如: int num = scanner.nextInt(); double d = scanner.nextDouble(); String str = scanner.nextLine(); 需要注意的是,读取完整数或浮点数后,输入缓冲区中可能还有一个回车符,需要使用nextLine()方法将其读取并丢弃。 ### 回答2: jmu-java-01入门课程的基本输入是指在Java程序中获取用户输入的一种方式。在Java中,可以使用标准输入流System.in和Scanner类来实现基本输入操作。 使用标准输入流System.in获取用户输入时,需要创建一个Scanner对象,然后使用next()、nextInt()等方法来读取用户输入的字符串、整数等类型数据。例如下面的代码: ```Java Scanner scanner = new Scanner(System.in); System.out.print("请输入您的姓名:"); String name = scanner.next(); System.out.print("请输入您的年龄:"); int age = scanner.nextInt(); System.out.println("您的姓名是:" + name + ",年龄是:" + age); ``` 上述代码中,先使用Scanner读取用户输入的姓名和年龄,然后分别用String和int类型的变量保存。最后,使用System.out.println()输出用户输入的姓名和年龄。 除了使用Scanner类,还可以使用BufferedReader类实现基本输入。BufferedReader类是一个高级的字符输入流,可以从字符输入流中读取一行或多行文本。例如: ```Java BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.print("请输入您的地址:"); String address = reader.readLine(); System.out.println("您的地址是:" + address); ``` 上述代码中,先创建一个BufferedReader对象,并使用InputStreamReader将标准输入流System.in转换成字符输入流。然后读取一行用户输入的地址,最后输出用户输入的地址。 以上就是jmu-java-01入门课程基本输入的相关内容。在实际Java开发中,基本输入操作是非常常用的,需要掌握基本的输入方法才能更好地开发Java应用程序。 ### 回答3: jmu-java-01入门-基本输入是Java编程语言中的重要部分,它涉及到了Java程序中如何进行基本的输入操作。在Java中,我们可以通过使用Scanner类来实现基本输入操作。 Scanner类是Java中最常用的输入方式,它可以读取标准输入流或者文件流中的数据,并将其转换为相应的Java类型。需要注意的是,在进行基本输入操作时,我们需要首先导入java.util.Scanner类,然后创建Scanner对象,才能利用其提供的方法来进行输入操作。 Scanner类中最常用的输入方法为next、nextInt、nextDouble,其中next用于读取字符串,nextInt用于读取整数,nextDouble用于读取浮点数。这些方法可以通过Scanner对象来调用,例如: Scanner scanner = new Scanner(System.in); System.out.println("请输入一个整数:"); int num = scanner.nextInt(); System.out.println("你输入的整数是:" + num); 除了基本的输入方法外,Scanner类还提供了一些其他的输入方法,例如hasNext、hasNextInt、hasNextDouble等,这些方法可以判断输入流中是否还有可读取的数据。 除了使用Scanner类进行输入之外,Java还支持从控制台中读取输入,我们可以通过System.in对象来获取控制台输入流。利用控制台输入流,我们可以实现基本的输入操作,例如: Scanner scanner = new Scanner(System.in); System.out.println("请输入一个字符串:"); int c; StringBuilder sb = new StringBuilder(); while ((c = System.in.read()) != '\n') { sb.append((char) c); } String str = sb.toString(); System.out.println("你输入的字符串是:" + str); 在进行基本输入操作时,我们需要注意避免空指针异常、类型转换异常等错误。因此,我们需要对输入进行合理的验证和异常处理。同时,在进行输入操作时,我们还需要注意输入数据的范围和类型,以保证程序的稳定性和安全性。 总之,jmu-java-01入门-基本输入是Java编程语言中的重要知识点。熟练掌握基本输入操作可以帮助开发者更好地实现Java程序的输入功能,提高程序的稳定性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值