0
点赞
收藏
分享

微信扫一扫

第七章 Java基础类库

caoxingyu 2022-03-10 阅读 100

前言:如果你真正学习到了这里,那么先容许我夸赞一下你,太棒了!哪怕你对前面六篇文章的掌握度达到50%也是非常了不起的了,关于后面的文章学习我只能说,非常简单,只是我们文章会非常详细的介绍实现原理和一些细节,但是真正的代码程序示范并不难,如果你现在再去看那些Java书籍或Java入门视频,光靠前六章文章的学习,你就可以完全轻松的掌握和明白,Java或者说计算机的学习就是一个慢慢积攒的过程,学到了就是自己的,学不会下次争取学会它!
因为文章还有12章属实多,而且内容并没有前六章重要,所以我会缩短部分内容,精挑内容
还有就是,大家可以尝试着自己每次在练习或跟着看文章的实例代码时去尝试创建包和名字符合的类,不要像我一样懒,很多实例的类名都一样,而且还最喜欢用Demo来命名,这个原因一个是图方便另一个是以前学习的习惯,不要做一个Demo战神,一定要多多试试模拟大型开发命名现场…
Oracle为Java提供了丰富的类库,Java8提供了4000多个基础类(包括下一章要将要介绍的集合框架),通过这些基础类库可以提供开发效率,降低开发难度。对于合格的Java程序员而言,至少要熟悉Java SE中70%以上的类(当然并不是让去背诵JavaAPI文档),但在反复查阅API文档的过程中,会自动记住大部分类的功能、方法,因此程序员一定要多练,多敲代码。
Java提供了String、StringBuffer和StringBuilder来处理字符串,它们之间存在差别本章会详细介绍,以及如何选择合适的字符串类、Java还提供了Date和Calendar来处理日期,其中Date是一个已经过时的API。
正则表达式是一个非常强大的的文本处理工具,通过正则表达式可以进行对文本内容的查找、替换、分割等操作。String也支持了正则表达式,增加了正则表达式的String类更为强大。

与用户互动

一个程序如果只是简单的按照既定的流程执行程序,无须用户进行任何处理,这个程序总是比较简单的。实际上绝对部分程序都是需要处理用户动作,包括接收用户键盘输入、鼠标动作等。因为现在还未涉及图形用户接口编程,故先演示如何获取用户键盘输入。

运行Java的参数

回忆一个Java的程序入口——main()方法的方法签名(形参列表):

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

下面将详细讲解为什么main()方法采用这个方法签名。

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

上面几乎是最简单的“HelloWorld程序,只是这个程序增加了输出args数组的长度,遍历args数组元素的代码。运行Demo类,看到程序仅仅输出了一个0,这表名args数组是一个长度为0的数组——这是合理的。因为计算机没有思考能力的,它只能忠实地执行用户交给它的人物,既然程序没有给args数组设定参数值,那么JVM就不知道args数组的元素,所以JVM将args数组设置成一个长度为0的数组”
改为如下命令来运行上面程序:

java Demo Java Spring

在这里插入图片描述
这里输出语句不要写成args了否则就会输出对象内存地址。
在这里插入图片描述
上图可以看出,如果运行Java程序时在类名后面紧跟一个或多个字符串(多个字符串之间以空格隔开),JVM就会把这些字符串依次赋值给args数组元素。运行Java程序中的参数与args的对应关系如上。
如果某参数本身包含了空格。则应该将该参数用双引号括起来,否则JVM会把这个空格当成参数分隔符,而不是参数本身。例如,采用如下命令运行上面程序。

java Demo "Java Spring"

cmd中 “cls”是清理cmd命令台内容、exit是关闭cmd
Win+R可以快速打开CMD
在这里插入图片描述
可以看到参数变成了一个,并且输出了完整的字符串。

使用Scanner获取键盘输入

这个类是一个比较简单的操作类,我的某个朋友(啥b)最近被这个类搞糊涂了,但是其实这个类并没有什么难的,只是创建对象参数,然后调用它的方法,并且如果它的运行结果有作用,就用变量来保存它的结果就行了。
运行Java程序时传入参数只能在程序开始之前就设定几个固定的参数。对于更复杂的情形,程序需要在运行过程中取得输入,例如,前面介绍的五子棋游戏需要在程序运行过程中获取用户输入的键盘输入。
使用Scanner类可以很方便地获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文件、输入流、字符串中解析出基本数字和字符串值。Scanner类提供了多个构造器,不同的构造器可以接收文件、输入流、字符串作为数据源,用于从文件、输入流、字符串中解析数据。
Scanner主要提供了两个方法来扫描输入。

  • hasNextXxx():是否有下一个输入项,其中Xxx可以是Int、Long等代表基本数据类型的字符串。如果只是判断是否包含下一个字符串,则直接使用hasNext()。
  • nextXxx():获取下一个输入项。Xxx的含义和前一个方法中的Xxx相同。
    在默认情况下,Scanner使用空白(包括空格、Tab空格、回车)作为多个输入项之间的分隔符。
    这里我做了一个比较有健壮性的程序。
import java.util.Scanner;

public class Demo{
    public static void main(String[] args) {
        System.out.println("请输入你的内容");
        var sc = new Scanner(System.in);
        //下面一行将只把回车符作为分隔符
        //sc.useDelimiter("\n");
        while (sc.hasNext()) {//判断是否还有下一个输入项
            //输出输入项
            System.out.println("键盘输入的内容是:"+sc.next());
            System.out.println("是否结束?(输入1结束程序,输入任意则继续运行)");
            if(sc.nextInt()==1){
                System.out.println("(1)检测到内容为1,程序即将结束....");
                //System.exit(0);这个方法也可以结束程序但是我们先用return
                return;//结束方法 退出
            }else{
                System.out.println("请继续输入:");
            }
        }
    }
}

在这里插入图片描述
这里如果你并没有添加什么关于这个程序的流程控制,则这个扫描仪几乎会一只直让你输入,除非你输入了会报错的内容,这明显是不人性化的,通过这个红色的小按钮可以结束程序的运行,但是我们是程序员,一旦要有属于程序封装内部的结束方法。
看上面的代码注意:
在这里插入图片描述
这里是我们进行流程控制判断的条件
在这里插入图片描述

这里也必须要有else语句来结束这次输入占用。
在这里插入图片描述
在这里插入图片描述
可以看到程序的红色按钮变黑表示成功结束程序。
如果希望改变Scanner的分隔符则使用:

sc.useDelimiter("\n");//这里仅表示回车
举报

相关推荐

第七章 类

第七章

Java学习第七章

Java第七章总结

java第七章总结

第七章:事务

第七章:集合

0 条评论