今日内容
- API概述
- Scanner类
- Random类
- ArrayList类
- static关键字
- String类
- Arrays类
- Math类
学习目标
-
能够明确API使用的步骤
-
能够使用Scanner类获取键盘录入数据
-
能够使用Random类生成随机数
-
能够使用数组存储自定义类型并且遍历
-
能够使用ArrayList集合的构造方法创建ArrayList集合对象
-
能够使用ArrayList集合存储数据
-
能够使用ArrayList集合中的常用方法
-
能够使用ArrayList集合中存储字符串并遍历
-
能够使用ArrayList集合存储自定义的对象并且遍历
-
能够使用ArrayList类作为形式参数和返回值类型
-
能够使用String类的构造方法创建字符串对象
-
能够使用String类的构造方法创建对象和直接赋值创建字符串对象的区别
-
能够使用文档查询String类的判断方法
-
能够使用文档查询String类的获取方法
-
能够使用文档查询String类的转换方法
-
能够理解static关键字
-
能够写出静态代码块的格式
-
能够使用Arrays类操作数组
-
能够使用Math类进行数学运算。
API概述
概述:
API(Application Programming Interface) 应用程序编程接口。java的api对于程序员来说就是一本可以检索查找的【字典】。是JDK官方提供给程序开发者使用类的说明文档。这些类将底层的代码封装起来,我们不需要关注这些类底层是如何实现的,我们只需要知道这些类是如何使用的。平常开发使用JDK类库的时候,通过查阅API的方式进行的。
API的使用步骤
- 打开帮助文档
- 点击显示,找到索引,找到输入框
- 在输入框中输入你要查找的类,然后回车,(双击类,点击显示)
- 看该类的所在包,对于java.lang包下面的类不需要导包,其他都需要
- 看该类的解释说明和类结构
- 学习该类的构造方法和成员方法(构造方法摘要和方法摘要(成员方法和静态方法))ctrl+f 查找方法
Scanner类
什么是scanner类
一个可以使用正则表达式来解析基本数据类型和字符串类型的简单文本扫描器。
例如:系统扫描用户输入的int类型的值
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
备注:System.in代表系统输入,此时指的是通过键盘录入数据
引用类型使用步骤
导包:
使用import关键字导包,在类的所有代码之前导包,引入要使用的类型。java.lang包下面所有类不需要导入
导入的格式为:
import 包名.类名
如:import java.util.Scanner;
创建对象:
数据类型 变量名 = new 数据类型(参数列表);
调用方法:
变量名.方法名();
Scanner类的使用步骤
-
查看类
java.util.Scanner:需要导入java.util包
-
查看构造方法
public Scanner(InputStream source):构造一个新的Scanner对象,他生成的值是从指定的输入流中扫描的
-
查看成员方法
public int nextInt():将输入的信息的下一个标记扫描为一个int类型值。
练习:通过键盘录入两个int类型的数值,进行累加和
import java.util.Scanner;
public class ScannerDemo{
public static void main(String[] args){
//创建对象
Scanner sc = new Scanner(System.int);
//接收系统录入的数据
int num0 = sc.nextInt();
int num1 = sc.nextInt();
int num2 = num1 + num2;
System.out.println(sum)
}
}
练习:通过键盘录入三个数据,并且展示三个数据中的最大值。
import java.util.Scanner;
public class ScannerDemo02{
public static void main(String[] args){
//创建对象
Scanner sc = new Scanner(System.int);
//接收系统录入的数据
int num0 = sc.nextInt();
int num1 = sc.nextInt();
int num3 = sc.nextInt();
//判断获取三个数据的最大值
int max = num0 > num1 ? num0 : num1;
System.out.println(max > num2 ? max : num2;)
}
}
匿名对象【了解】
概念:
匿名对象:没有变量名的对象
格式:
数据类型 变量名 = new 数据类型(参数列表);//有名对象
new 数据类型(参数类型);//匿名对象
举例:
public class AnonymousDemo {
public static void main(String[] args) {
// 传统的写法
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
// 匿名对象的方式
int num02 = new Scanner(System.in).nextInt();
int num03 = new Scanner(System.in).nextInt();
Sysstem.out.println(num02);
// 开发中 使用匿名对象进行参数的传递
checkInput(new Scanner(System.in));
// 获取一个Scanner类对象
Scanner sc02 = getScanner();
}
public static void checkInput(Scanner sc) {
int num = sc.nextInt();
System.out.println(num);
}
public static Scanner getScanner() {
return new Scanner(System.in);
}
}
备注:匿名对象只能使用唯一的一次,下次再使用再次创建
使用建议:如果在程序当中你确定有一个对象只会使用唯一的一次,建议使用匿名对象。
Random类
什么是Random类
此类的实例主要是用于生成伪随机数
例如:使用户能得到一个随机整数
Random ran = new Random();
int i = ran.nextInt();//int的取值范围
Random类的使用步骤
-
查看类
java.util.Random包:该类需要导包才能使用
-
查看构造方法
public Random():创建一个新的随机数生成器
-
查看成员方法
public int nextInt(int n):返回一个伪随机数,范围在[0,n-1]
public double nextDouble():反hi一个伪随机小数,范围在[0.0,1.0)
练习:使用Random类随机生成10个10以内的随机整数
//1.导包
import java.util.Random;
public class Demo02Random{
public static void main(String[] args){
//2.构建Random类对象
Random r = new Random();
//3.调用类中的方法,nextInt(int n)
for(int i = 0; i < 10; i++){
int num = r.nextInt(10);
SysTEM.out.println(num)
}
}
}
练习:获取1-n之间的随机数,包含n
//1.导包
import java.util.Random;
public class Demo02Random{
public static void main(String[] args){
//构建一个n的范围
int n = 50;
//2.构建Random类对象
Random r = new Random();
//3.调用类中的方法,nextInt(int n)+1
int num = r.nextInt(n)+1;
System.out,println(num);
}
}
}
作业:石头剪子布游戏:游戏一开始,系统会随机生成一个“石头”、“剪子”、”布“,游戏参与者需要往系统输入“石头”、“剪子”、”布“。游戏规则按照常规。如果系统赢了,就输出”你太菜了“,判断是否要“继续/结束”,如果输入继续,游戏开始下一句,如果输入结束,则输出“欢迎下次光临”,游戏结束。如果你赢了,游戏继续。
ArrayList类
引入----对象数组
//需求:把三个People类型的对象存入到容器中。数组
public static void main(String[] args){
//创建对象数组
People[] arr = new People[3];
//创建3个People对象
People p1 = new People("小明",15);
People p2 = new People("小花",26);
People p3 = new People("小刘",19);
arr[0] = p1;
arr[1] = p2;
arr[2] = p3;
//使用循环
//for(int i = 0;i < 3; i++){
//arr[i] = new People();//匿名方式存入,不用关注对象名,根据下标。但是初始值若使用全参构造方法赋初值,值都一样了
//}
//遍历学生数组 展示对象中的成员变量信息 name age
for(int i = 0;i <+ arr.length-1; i++){
System.out.println(arr[i].getName() +","+ arr[i].getAge());
}
}
备注:对象数组,长度是固定的。如果在程序中需要对对象进行中惊醒增加或者删除等数量操作时,非常不方便。
java又提供了一个容器,java.util.ArrayList集合类,这个类可以让我们的存储和操作对象更方便
什么是ArrayList类
java.util.ArrayList类是一个【大小可变的数组】的实现,里面存储的数据成为元素。该类提供的而一些常用到的api方法来操作内部存储的元素。
ArrayList类的使用步骤
-
查看类
java.util.ArrayList:该类也是需要import导入后才能使用
,表示一种指定的数据类型,叫做【泛型】。E,取自Element(元素)的首字母。在程序中yudao【E】的地方,我们需要使用一种【引用的数据类型】,将其替换掉即可。表示我们将存储哪种数据类型的元素。
例如:
ArrayList<People> peoples;
ArrayList<String> strs;
ArrayList<int> nums;//不正确的写法,
-
查看构造方法
public ArrayList():构造一个初始容量为10的空列表
public ArrayList(int initialcapacity)构造一个制定初始容量的空列表
基本格式:
ArrayList<引用数据类型> 变量名 = new ArrayList<引用数据类型>();
//JDK1.7之后,右侧的泛型尖括号里面的数据类型可以选择省略不写,但是<>要保留。
查看成员方法
public boolean add(E e):将指定的元素添加到此列表的【尾部】。
public void add(int index, E element):将指定的元素插入此列表中的指定位置。
public void clear(): 移除此列表中的所有元素。
public boolean contains(Object o):判断此列表是否包含指定的元素,如果包含返回true,否则返回false。
public E get(int index): 返回指定位置的元素。
public int indexOf(Object o): 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。
public boolean isEmpty(): 如果此列表中没有元素,则返回 true
public E remove(int index): 移除指定位置的元素,并把移除的元素返回
public E set(int index,E e):用指定的元素替代此列表中指定位置上的元素。
public int size():返回此列表中的元素个数。
遍历【重点】
使用for循环,定义的循环变量就是ArrayList容器中的索引,循环次数就是容器的元素个数size();
//需求:往ArrayList容器当中存入5个学生对象,遍历容器查找小丽的这位同学,如果查到就把小丽的信息输出
//学生对象包含姓名、年龄、学号。
ArrayList<Class> strs = new ArrayList<>();
strs.add();
strs.add();
strs.add();
strs.add();
strs.add();
for(i=0;i<5;i++){
if(strs[i].getName.contains == "小丽"){
System.out,println(strs[i].getName+strs[i].getAge+strs[i].getNum)
}
}
如何存储基本数据类型值
ArrayList类对象不能存储基本类型,只能存储引用类型的数据,类似不支持的,但是java中提供了基本数据类型对应的包装类型,包装类型是可以在ArrayList容器中指定,所以我们如果想要存储基本数据类型值,首先需要把基本数据类型转换为包装类型。
基本类型 | 基本类型包装类 | |
---|---|---|
byte | Byte | |
short | Short | |
int | Interger【重点】 | |
long | Long | |
float | Float | |
double | Double | |
char | Character【重点】 | |
boolean | Boolean |
备注:我们需要对int额char进行特殊记忆,其他类型只需要记住首字母大写即可。
练习:存储基本数据类型值
//需求1:存入5个人的考试成绩到ArrayList容器中,如果成绩低于60,就额外奖励4000行代码。
//需求2:存入5个人的身高到ArrayList容器中,如果有身高大于1.80,就踢出去
//需求3:生成10个1-10之间的随机数,添加到ArrayList集合中
//需求4:用一个大集合存入30个随机数字[1,100],然后筛选其中的偶数元素放到小集合中。要求使用自定义方法进行筛选
// 最后展示小集合中的偶数元素,并且打印出偶数元素的个数。
作业:定义制定格式方法打印输出集合当中的元素,要求使用ArryList作为参数,使用{}包含集合中的元素,使用—作为元素的而分隔符,格式参照{元素1–元素2–元素3–元素n}
String类【重点】
String类的概述
概述
java.lang.String 类代表字符串,java程序中的所有字符串文字,如”abc“都可以看作是String类的实例。
程序当中的所有双引号字符串,都是String类的对象。(没有new,也是对象)
字符串的特点:
-
字符串的内容永远不可改变,【重点】
-
正是因为字符串的内容永远不可改变,所以字符串可以共享使用的
-
字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组
//第二点
String str1 = "abc";
String str2 = "abc";//同一个 在常量池
//内存当中”abc“,”abc“对象会被创建出来,而且”abc“对象只会被创建一次,内存当中只有一个”abc“对象会被创建,
//此时str1和str2可以共享同一个”abc“对象
String str3 = new String("abc");
String str4 = new String("abc");
备注:JDK1.7之后的JVM将【运行时常量池】从方法区移除了,在java的堆(heap)中开辟空间,用来存储运行时常量池
JDK1.8开始,取消了java方法区(method area),取而代之的是元空间(meter space)
JDK1.8中字符串常量池和运行时常量池逻辑上属于方法区,实际上存储在堆内存当中,
创建数组的三种方式
static关键字
public class Student{
private String name;//姓名
private int age;//年龄
private String id;//学号
static String room;//教室
}