1:API 概述
1.1 API概述和课程安排
我们在讲解面向对象的时候,提到了学习面向对象重点就是学习两块内容:
- 学习如何自己设计对象并使用
- 学习获取已有对象并使用
第一块:学习如何自己设计对象并使用
第二块:学习获取已有对象并使用
而关于第一块知识:学习如何自己设计对象并使用,我们现在已经有一些基础了。
通过前面的学习呢,我们知道了如何定义类,并通过构造方法创建对象,然后通过对象使用成员变量和成员方法。
接下来,我们要学习的是第二块知识:获取已有对象并使用。而获取已有对象并使用呢,在Java中我们习惯称之为常用API的学习。
所以下面我们来学习常用API。首先,我们来说一下什么是API:
- API(Application Programming Interface) :应用程序编程接口
那如何理解应用程序编程接口呢?这里我们通过下面的场景给大家解释一下。
看这里,我想编写一个机器人踢足球的程序,那么程序就要向机器人发出向前跑、向后跑、射门、抢球等各种命令。
如果我自己来编写呢,就会比较麻烦,因为机器人不是我设计的。所以,为了方便其他的开发者使用机器人,
机器人厂商会提供一些用于控制机器人的类,这些类中会定义好操作机器人各种动作的方法。
有了这些类之后,开发一个机器人踢足球的程序就会非常的方便了。
其实,这些类就是机器人厂商提供给开发者的应用程序编程接口,而这些类我们称之为:API
知道了什么是API之后呢,我们来说一下,Java 的 API。
- Java API :指的就是 JDK 中提供的各种功能的 Java类。
这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,
为了帮助我们使用这些类,Java 还提供了对应的帮助文档。我们可以通过帮助文档来学习这些API如何使用
下面呢,我们一起来学习一下帮助文档的使用:
要想使用帮助文档,首先我们得有一个帮助文档:我们这里有一个帮助文档。
这个文档对应的是 JDK11
版本的,是目前比较新的中文版的帮助文档。
有了文档之后呢,我们来打开帮助文档。
文档打开后,找到索引这里,下面有一个输入框,在这个框框里输入我们要学习的API。
这里,我们拿字符串类做一个说明:在这个框框里面我们输入:String
,然后一回车,看到一个新的界面
这个界面中,就是关于String相关的知识了。
接着,我们来说一下,在学习一个API的时候,我们重点要看四个地方:
第一个地方:看类所在的包
为什么要看这里呢,因为java.lang包下的类,我们是可以直接使用的,不需要导包。
其他包下的类,我们都是要导包后才能使用的,至于如何导包,下个知识我们会讲解。
很明显,String类在使用的时候,我们是不需要导包的。
第二个地方:看类的描述
也就是看这里,这里一般描述了类是干什么的。
比如说:String类表示字符串。 Java程序中的所有字符串文字(例如"abc" )都实现为此类的实例。
告诉了我们String就是用来表示字符串的类,直接写一个字符串数据:abc就是String类的一个对象。
第三个地方:看类的构造方法
往下滑,这就是String类的构造方法,为什么要看构造方法呢?因为我们在使用一个类的时候,其实使用的是该类的对象,
而创建对象,我们是需要通过构造方法实现的,所以,我们得看看它提供了哪些构造方法。
这里的构造方法提供的比较多,至于用哪个,后面我们用到的时候再讲解,目前知道看哪里就行了
第四个地方:看类的成员方法
这是我们学习一个API的重点,我们之所以学习一个API,重点就是为了使用该API来完成某些功能。
而API的功能,都是通过一个个方法实现的,所以我们重点得看看类的成员方法。往下滑,这就是String提供的成员方法,有很多。
而一个方法,我们重点又看什么呢?回到第一个方法,我们说一下:
返回值类型 方法名和参数 方法功能的描述
先看描述,通过描述,我们就知道了方法是干什么的。
再看方法名和参数,这样我们就知道调用哪个方法,以及参数的类型和个数。
最后,我们看返回值类型,这样我们就知道调用该方法后,最终给我们返回了一个什么类型结果
通过这些步骤,我们就知道了所学习的API该如何使用了,然后就可以到IDEA中去使用API了。
知道了帮助文档的使用步骤后,回到资料我们总结一下帮助文档的使用流程:
① 打开帮助文档
② 找到索引选项,输入要学习的API,然后回车
③ 看类所在包:因为java.lang包下的类在使用的时候不需要导包
④ 看类的描述:这样我们就知道了类是干什么的
⑤ 看类的构造方法:这样我们就可以创建对象了
⑥ 看类的成员方法:这样我们就可以通过这些方法完成某些功能了
首先,我们学习一下包和导包的基本概念和操作,为API的使用做一个基础铺垫
接着我们来学习两个API:Scanner 和 Random
Scanner:是用来实现键盘录入数据的
Random:是用来产生随机数的
通过这两个 API 的学习,可以让我们熟悉帮助文档的使用
1.2 包和导包
来,继续啊,下面我们来学习一下,包和导包。
那什么是包呢?
- 包其实就是文件夹
- 作用:对类进行分类管理
包的定义格式:
- 格式:package 包名;
- 注意:包名一般是公司域名反写,并且多级包用.分开
- 举例:www.csdn.com
- 范例:package com.csdn;
知道了如何定义包之后,下面我们来定义两个包,并且在不同包下定义同名的类。
package com.csdn; public class Student { public void study() { System.out.println("好好学习天天向上"); } }
package com.csdn; public class StudentTest { public static void main(String[] args) { Student s = new Student(); s.study(); } }
package com.csdn; public class StudentTest { public static void main(String[] args) { com.csdn.Student s = new com.csdn.Student(); s.study(); com.csdn.Student s2 = new com.csdn.Student(); s2.study(); } }
在这里我们讲解了同一个包下类的使用,以及不同包下类的使用。发现不同包下类的使用太麻烦了,所以,这个时候,我们就要学习一下导包了。
使用不同包下的类时,使用的时候要写类的全路径,写起来太麻烦了。
为了简化带包的操作,Java就提供了导包的功能。
导包的格式:
- 格式:import 包名;
- 范例:import com.itheima.Student;
知道了如何导包后,我们再来修改一下不同包下类的使用代码:
package com.csdn; import com.csdn.Student; //Alt+Enter 快捷键导包 public class StudentTest { public static void main(String[] args) { Student s = new Student(); s.study(); Student s2 = new Student(); s2.study(); // com.csdn.Student s = new com.csdn.Student(); // s.study(); // // com.csdn.Student s2 = new com.csdn.Student(); // s2.study(); } }
在这里我们讲解了导包的三种方式:
- 手动导包
- 快捷键导包
- 写一个类,写一部分的时候,如果给出了对应的提示,回车后会自动导包
2:Scanner
2.1 Scanner基本使用
了解了API相关的知识后,下面我们来学习一下Scanner的使用。
通过查看帮助文档,我们知道了如下的信息:
Scanner:
- 一个简单的文本扫描程序,可以获取基本类型数据和字符串数据
构造方法:
- Scanner(InputStream source):创建 Scanner 对象
- System.in:对应的是InputStream类型,可以表示键盘输入
- Scanner sc = new Scanner(System.in);
成员方法:
- int nextInt():获取一个int类型的数据
- int i = sc.nextInt();
知道了Scanner的构造方法和成员方法后,我们到IDEA中去使用一下:
import java.util.Scanner; /* Scanner的基本使用 */ public class ScannerDemo { public static void main(String[] args) { //Scanner(InputStream source):创建 Scanner 对象 Scanner sc = new Scanner(System.in); //int nextInt():获取一个int类型的数据 System.out.println("请输入一个整数:"); int i = sc.nextInt(); //输出获取到的数据 System.out.println("你输入的数据是:" + i); } }
2.2 练习(数据求和)
需求:键盘录入两个整数,求两个数据和,并在控制台输出求和结果
首先,我们来简单的分析一下:
分析:
① 创建键盘录入数据对象
② 通过键盘录入数据对象调用 nextInt()
方法获取数据
③ 对获取的两个整数求和
④ 在控制台输出求和结果
分析完毕后,我们到 IDEA 中去实现一下:
/* 需求:键盘录入两个整数,求两个数据和,并在控制台输出求和结果 分析: 1:创建键盘录入数据对象 2:通过键盘录入数据对象调用nextInt()方法获取数据 3:对获取的两个整数求和 4:在控制台输出求和结果 */ public class ScannerTest { public static void main(String[] args) { //创建键盘录入数据对象 Scanner sc = new Scanner(System.in); //通过键盘录入数据对象调用nextInt()方法获取数据 System.out.println("请输入第一个整数:"); int firstNumber = sc.nextInt(); System.out.println("请输入第二个整数:"); int secondNumber = sc.nextInt(); //对获取的两个整数求和 int sum = firstNumber + secondNumber; //在控制台输出求和结果 System.out.println("求和结果是:" + sum); } }
3:Random
3.1 Random基本使用
来,继续啊,下面我们来学习一下Random的使用。
通过查看帮助文档,我们知道了如下的信息:
Random:
- 该类的实例用于生成随机数
构造方法:
- Random():创建一个新的随机数生成器
成员方法:
- int nextInt(int bound):获取一个int类型的随机数,参数bound表示获取到的随机数在[0,bound)之间
知道了Random的构造方法和成员方法后,我们到IDEA中去使用一下:
import java.util.Random; /* Random的基本使用 */ public class RandomDemo { public static void main(String[] args) { //Random():创建一个新的随机数生成器 Random r = new Random(); //int nextInt(int bound):获取一个int类型的随机数,参数bound表示获取到的随机数在[0,bound)之间 // int i = r.nextInt(10); // System.out.println(i); // for (int i=1; i<=10; i++) { // int j = r.nextInt(10); // System.out.println(j); // } //需求:如何获取1-100之间的随机数呢? // int number = r.nextInt(100);//0-99 // int number = r.nextInt(101);//0-100 int number = r.nextInt(100) + 1; System.out.println(number); } }
3.2 练习(猜数字游戏)
需求:系统自动产生一个1-100之间的整数,使用程序实现猜这个数字是多少?
猜的时候根据不同情况给出相应的提示 如果猜的数字比真实数字大,提示你猜的数据大了 如果猜的数字比真实数字小,提示你猜的数据小了 如果猜的数字与真实数字相等,提示恭喜你猜中了
首先,我们来简单的分析一下:
分析:
① 使用Random获取一个1-100之间的整数
② 使用Scanner实现键盘录入猜的数据值
③ 使用if…else if…else 的格式实现猜数字,并给出对应的提示
分析完毕后,我们到IDEA中去实现一下:
import java.util.Random; import java.util.Scanner; /* 需求:系统自动产生一个1-100之间的整数,使用程序实现猜这个数字是多少? 猜的时候根据不同情况给出相应的提示 如果猜的数字比真实数字大,提示你猜的数据大了 如果猜的数字比真实数字小,提示你猜的数据小了 如果猜的数字与真实数字相等,提示恭喜你猜中了 分析: 1:使用Random获取一个1-100之间的整数 2:使用Scanner实现键盘录入猜的数据值 3:使用if…else if…else 的格式实现猜数字,并给出对应的提示 */ public class RandomTest { public static void main(String[] args) { //使用Random获取一个1-100之间的整数 Random r = new Random(); int number = r.nextInt(100) + 1; System.out.println("系统已经产生了一个1-100之间的整数"); while (true) { //使用Scanner实现键盘录入猜的数据值 Scanner sc = new Scanner(System.in); System.out.println("请输入你要猜的数字:"); int guessNumber = sc.nextInt(); //使用if…else if…else 的格式实现猜数字,并给出对应的提示 if (guessNumber > number) { System.out.println("你猜的数据" + guessNumber + "大了"); } else if (guessNumber < number) { System.out.println("你猜的数据" + guessNumber + "小了"); } else { System.out.println("恭喜你猜中了"); break; } } } }