Java学习第七条内容:
1.API文档的使用
2.Scanner类
3.Random类
4.ArrayList集合
一、API的基本使用
在Java语言中,有很多个类已经在JDK官方的包中给我们提供好了,我们直接使用就可以。
这些类怎么使用官方给我们提供了一个文档(API文档),我们按照文档来用即可。
API文档的使用步骤
1.搜索想要查看的类
点击显示-->索引-->搜索想要的【类】
2.看包
java.lang包,不用导包
非java.lang包,需要导包
3.看类的描述信息
由于API是从英文翻译过来的,可能有些语句看起来不是那么好理解,理解一个大概就可以了。
能看懂就看-->看不懂就猜-->写代码尝试推测-->百度
查看API文档三步骤:
1.查看类的继承结构
2.查看类提供的构造器
3.查看类提供的方法
大致知道该类是干什么用的。
是对象的模板,提供特定功能的方法
4.看构造方法
有几个构造方法,就能用几种方式【创建对象】
5.方法摘要
每一个类都有很多个方法,每一个方法由他特定的含义和特定的功能实现
二、Scanner类
Scanner是用于做键盘录入的类
//1.在java.util包下,需要导包
import java.util.Scanner;
注意: 写在类名的上面
//2.创建Scanner对象
Scanner sc=new Scanner(System.in);
//3.获取键盘录入数据,通过对象调用Scanner类提供的nextInt()方法实现键盘录入一个int类型的数值
int num=sc.nextInt(); //获取键盘录入的int数据,(因为nextInt方法返回的是一个int类型的结果所以要用int类型的变量来接收)
int num1 = sc.nextDouble();//获取键盘录入的double类型的数据
String str=sc.next(); //获取键盘录入的字符串,如果遇到一个空格就会结束录入,这样空格后面的字符串就不会被录入
scanner.nextLine();//获取键盘录入的一行字符串(可含有空格)
package com.itheima.Test;
import java.sql.SQLOutput;
import java.util.Scanner;
//练习Scanner类
public class Train01 {
public static void main(String[] args) {
//1.创建Scanner类的对象
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
//2.通过对象调用类提供的方法
// int i1 = scanner.nextInt();
// int i2 = scanner.nextInt();//键盘录入一个int类型的整数并赋值给变量i
// System.out.println("合计:"+(i1+i2));
//键盘录入字符串
String str2 = scanner.nextLine();//录入一行字符串,以回车键作为录入结束
String str1 = scanner.next();//录入字符串,遇到空格结束录入(也可以以回车键作为录入结束)-即只录入空格前面的数据(相当于剪切的效果)
System.out.println("------");
System.out.println(str1);
System.out.println(str2);
}
}
运行结果:
请输入:
eweff hrefd
rerwer sf
------
rerwer
eweff hrefd
练习:键盘录入3个整数,求3个整数的最大值
实现方式:
1.if-else 语句(不推荐)
2.三元运算符
//1.创建键盘录入对象
Scanner sc=new Scanner(System.in);
//2.获取键盘录入的整数
System.out.println("请录入第一个整数:");
int a = sc.nextInt();
System.out.println("请录入第二个整数:");
int b = sc.nextInt();
System.out.println("请录入第三个整数:");
int c = sc.nextInt();
//求a,b和c的最大值
//先求a和b的最大值
int max=a>b?a:b;
//在让max和c进行比较,把较大的值重新赋值给max
max=max>c?max:c;
System.out.println("三个数的最大值为:"+max);
三、Random类
Random是用来生成随机数的类
//1.导包(自动完成)
import java.util.Random;
//2.创建Random对象
Random r=new Random();
//3.生成随机数,通过对象调用Random类提供的nextInt()方法实现生成一个随机数
int num1=r.nextInt(); //整个int范围内的随机数
int num2=r.nextInt(10); //[0,10)范围内的随机数,从0开始
int num2=r.nextInt(100)+1; //[0,100) +1 --> [1,100] 范围内的随机数
//生成范围在[51,100]中的随机数
int num3=r.nextInt(51)+50;
猜数字小游戏
猜数字小游戏
/*
步骤
1)使用Random随机生成一个[1,100]整数num(你要猜的那个数)
2)使用Scanner键盘录入数据myNum和num进行比较
if-else语句判断:
如果myNum>num: 猜大了
如果myNum<num: 猜小了
如果myNum==num: 猜中了
3)使用while循环把步骤2,循环执行,直到猜中了就break结束循环
*/
//1)使用Random随机生成一个范围在[1,100]整数num(你要猜的那个数)
Random r=new Random();
int num=r.nextInt(100)+1; //[1,100]
//2)使用Scanner键盘录入数据myNum和num进行比较
Scanner sc=new Scanner(System.in);
//3)循环猜数字
while(true){
int myNum=sc.nextInt(); //有阻塞效应,等待着你键盘录入
if(myNum>num){
System.out.println("猜大了");
}else if(myNum<num){
System.out.println("猜小了");
}else{
System.out.println("恭喜你,猜中了!!!");
break; //猜中了就结束循环
}
}
四、ArrayList类
数组和集合都是容器,对比如下
数组的弊端:【数组一旦创建,长度不可改变】
数组提供的方法(遍历元素)没有集合提供的方法(add,remove,get,set,clear…)多
ArrayList是一个集合:【集合可以存储任意多个元素】
ArrayList类提供的size()方法可以获取元素的个数,其底层实现还是基于length方法。
ArrayList的基本使用
//创建ArrayList对象
//<String> 表示元素类型为String类型
ArrayList<String> list=new ArrayList<>();
//调用add方法,添加元素
list.add("hello");
list.add("world");
list.add("java");
System.out.println(list);
ArrayList的常用能功能:增、删、改、查
public boolean add(E e)
添加元素到集合末尾
public void add(int index, E element)
添加元素到集合中指定索引的位置,所插入的元素位置后面的其他元素自动向后移位,size++
public E remove(int index)
移除指定索引位置的元素,把被移除的元素返回
public E set(int index,E element)
修改集合中指定索引的元素为新的元素
public E get(int index)
获取集合中指定索引的元素
public int size()
获取集合中元素的个数
public E remove(int index)
删除该列表中指定位置的元素。 将任何后续元素移动到左侧(从其索引中减去一个元素)。
public int clear()
清空集合中的所有元素
public boolean contains(Object o)//括号中是元素
判断集合中是否包含指定的元素
* 任何类的方法都按照下面的步骤来使用
* 1.创建对象
* //类名 对象名=new 类名();
* ArrayList<String> list=new ArrayList<>();
*
* 2.调用方法格式
* //对象名.方法名(); 通过IDEA的提示看参数写什么,返回值写什么。
* list.add("Java");
泛型:
在集合中加入泛型:指明集合存储数据的范围
如果不指定,那么同一个集合就能存储所有数据类型的数据,但是后期数据的维护或操作就不方便了
ArrayList支持存放引用数据类型
不支持存放基本数据类型
如果要存放基本数据类型要把基本数据类型转换为包装类
这样就可以给我们提供很多方法供我们使用,而基本数据类型的范围就被限制的很小就没有什么方法可供我们使用
基本类型–>包装类:自动装箱
包装类–>基本类型:自动拆箱
1.集合存基本类型问题
集合的元素只能是引用类型,不能是基本类型。
如果往集合中存储基本类型的元素,本质上存储进去的是包装类对象
集合练习:
代码如下:在集合中存储4个整数
//<Integer>表示集合中元素是整数
ArrayList<Integer> list=new ArrayList<>();
list.add(10); //10-->会自动转换为Integer对象(其实例)-->自动装箱
list.add(20);
list.add(40);
list.add(30);
//遍历集合
for (int i = 0; i < list.size(); i++) {
Integer e = list.get(i);
System.out.println(e);
}
2.随机生成6个1~33范围内的随机数,存储到ArrayList集合中
//创建Random对象
Random r=new Random();
//创建ArrayList集合,用于存储整数
ArrayList<Integer> list=new ArrayList<>();
for(int i=1;i<=6;i++){
int num=r.nextInt(33)+1;
//把生成的整数,添加到集合中
list.add(num);
}
//遍历集合中的元素
for (int i = 0; i < list.size(); i++) {
Integer e = list.get(i);
System.out.println(e);
}
3.在ArrayList集合中,存储5个学生对象并遍历
//创建一个ArrayList集合,存储Student对象
ArrayList<Student> list=new ArrayList<>();
//添加5个Student对象 【匿名对象】
list.add(new Student("马云",50));
list.add(new Student("马化腾",45));
list.add(new Student("雷军",40));
//遍历集合中的元素
for (int i = 0; i < list.size(); i++) {
//获取i索引位置的元素
Student stu = list.get(i);
System.out.println(stu.getName()+","+stu.getAge());
}
4.按照格式输出集合中的元素
格式:{元素1@元素2@元素3} 例如 {"hello"@"world"@"java"}
/*
1)创建一个集合,添加若干字符串元素
2)把集合中的元素按照格式输出
a: 先无条件打印一个 "{"
b:遍历集合获取元素
如果是最有一个元素,打印 【元素+"}"】
如果不是最后一个元素,打印 【元素+"@"】
*/
//1)创建一个集合,添加若干字符串元素
ArrayList<String> list=new ArrayList<>();
list.add("hello");
list.add("world");
list.add("java");
list.add("android");
//2)把集合中的元素按照格式输出
//先无条件打印一个 "{" 不换行
System.out.print("{");
//遍历集合获取元素
for(int i=0;i<list.size();i++){
String e=list.get(i);
//如果是最后一个元素
if(i==list.size()-1){
//打印 【元素+"}"】 换行
System.out.println(e+"}");
}else{
//【元素+"@"】
System.out.println(e+"@");
}
}
对象 数组内存分析图解:
集合练习1
写一个方法,把两个集合合并为一个集合 【自己做】
package com.itheima;
//集和的长度是可变的
import java.util.ArrayList;
public class Test08 {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();
list1.add("张三");
list1.add("李四 ");
list1.add("王五");
list1.add("赵六");
ArrayList<String> list2 = new ArrayList<>();
list2.add("小米");
list2.add("小明");
list2.add("小麦");
list2.add("小沫");
mergeArrayList(list1, list2);
System.out.println("\n----------------------------------------");
list1.addAll(list2);//把集合list2中的所有元素添加到集合list1中并通过循环打印出这个新的集合的元素
for (int i = 0; i < list1.size(); i++) {
System.out.print(list1.get(i)+" ");
}
}
public static void mergeArrayList(ArrayList<String> list1, ArrayList<String> list2) {
ArrayList<String> list3 = new ArrayList<>();
for (int i = 0; i < list1.size(); i++) {
list3.add(list1.get(i));
}
for (int i = 0; i < list2.size(); i++) {
list3.add(list2.get(i));
}
for (int i = 0; i < list3.size(); i++) {
String str = list3.get(i);
System.out.print(str+" ");
}
}
}
张三 李四 王五 赵六 小米 小明 小麦 小沫
----------------------------------------
张三 李四 王五 赵六 小米 小明 小麦 小沫
集合练习2
a:定义一个集合,键盘入10个字符串存入集合,打印集合
b:删除集合中元素长度>5的元素,再打印集合。
package com.itheima.Test;
import java.util.ArrayList;//自定义创建类的名字不要和Java中以定义的类的名字同名,会容易导错包
public class Train05 {
public static void main(String[] args) {
//1.创建集合对象
ArrayList<String> list = new ArrayList<>();
//2.通过该对象调用该类的add方法添加字符串
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("张飞");
list.add("关羽");
list.add("黄忠");
list.add("马超");
list.add("赵云");
list.add("魏延");
//3.打印元素
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i)+"-->"+i);
}
System.out.println("------------------------");
//4.移除集合中长度大于5的元素
//方法1,从集合末尾移除元素
// for(int i=list.size()-1;i>=5;i--){
// list.remove(i);
// }
// for (int i = 0; i < list.size(); i++) {
// System.out.println(list.get(i)+"-->"+i);
// }
//方法2
for (int i = 0; i <list.size(); i++) {
if(i>=5){
list.remove(i);
i--;//因为从集合中间删除某个元素,其后面的元素就会自动补上,利用这个特性就一直删除这个索引上的元素,直到全部移除
}else {
//5.再打印集合
System.out.println(list.get(i)+"-->"+i);
}
}
System.out.println(list);
}
}
运行结果:
张三-->0
李四-->1
王五-->2
赵六-->3
张飞-->4
关羽-->5
黄忠-->6
马超-->7
赵云-->8
魏延-->9
------------------------
张三-->0
李四-->1
王五-->2
赵六-->3
张飞-->4
[张三, 李四, 王五, 赵六, 张飞]