API
概述:API(Application Programming Interface),应用程序编程接口。Java API 是一本程序员的字典,是JDK中提供给我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不用关心这些类是如何实现的,只需要学习这些类如何使用。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它。
API使用步骤:
- 打开帮助文档。
- 点击显示,找到索引,看到输入框。
- 你要找谁?在输入框里输入,然后回车。
- 看包。java.lang下的类不需要导包(导包,指的是使用import+包路径),其他需要。
- 看类的解释和说明。
- 学习构造方法。
- 使用成员函数。
引用类型(除了基本数据类型)的一般使用步骤:
- 导包。import 包路径.类名称; 如果需要使用的目标类,和当前位于同一个包下,则可以省略导包语句不写。只有java.lang包下的内容不需要导包,其他的包都需要import语句。
- 创建。类名称 对象名 = new 类名称();
- 使用。对象名.成员方法名()
目录
2.包装类-----ArrayList集合存储基本数据类型。
Scanner类
Scanner的三个步骤:导包,创建,使用。
package demo3;
import java.util.Scanner;
//import java.util.Scanner; // 1.导包。
public class Demo01Scanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 2.创建。 System.in代表从键盘进行输入
/*3.使用
获取键盘输入的一个int数字使用Scanner中的nextInt()方法
获取键盘输入的一个字符串使用Scanner中的next()方法
*/
System.out.println("请输入数字:");
int num = sc.nextInt();
System.out.println("请输入字符串:");
String str = sc.next();
System.out.println("输入的数字是:"+num+" 输入的字符串是:"+str);
}
}
匿名对象
新创建的对象没有名字,那么这个对象就是匿名对象。
创建对象的标准格式:类名称 对象名 = new 类名称();
匿名对象就是只有右边的对象,没有左边的名字和赋值运算符。即 new 类名称()
注意:匿名对象只能使用唯一的一次,下次再用时不得不再创建一个新对象。
使用建议:如果确定有一个对象只需要使用唯一的一次,就可以使用匿名对象。
匿名对象作为方法的参数和返回值。
package demo3;
import java.util.Scanner;
public class Anonymous {
public static void main(String[] args) {
Person one = new Person();
one.name = "高圆圆";
one.showName(); // 你好,高圆圆
new Person().name = "赵又廷"; // 匿名对象
new Person().showName(); // 你好,null 重新创建了一个新的对象
//普通方式
// Scanner sc = new Scanner(System.in);
// int num = sc.nextInt();
// 匿名对象的方式
// int num = new Scanner(System.in).nextInt();
// System.out.println("输入的是:"+num);
// 使用一般写法传入参数
// Scanner sc = new Scanner(System.in);
// methodParam(sc);
// 使用匿名对象传入参数
// methodParam(new Scanner(System.in));
// 使用匿名对象作为返回值
Scanner sc = methodReturn();
int num = sc.nextInt();
System.out.printf("输入的是:"+num);
}
public static void methodParam(Scanner sc){
int num = sc.nextInt();
System.out.println("输入的是:"+num);
}
public static Scanner methodReturn(){
// 一般写法
// Scanner sc = new Scanner(System.in);
// return sc;
// 使用匿名对象作为返回值
return new Scanner(System.in);
}
}
Random类
Random类用来生成随机数字。使用起来也是三个步骤。
- 导包。 import java.util.Random;
- 创建。Random r = new Random();
- 使用。例如获取一个随机的int数字(范围是int所有范围,有正负两种):int num = r.nextInt()
获取一个随机的int数字(范围是int所有范围,有正负两种):int num = r.nextInt();
获取一个随机的int数据(参数代表了范围,左闭右开区间):int num = r.nextInt(3);实际上的含义代表的意思是[0,3),也就也是0、1、2.
package demo3;
import java.util.Random;
public class DemoRandom {
public static void main(String[] args) {
Random r = new Random();
// 随机范围在int了类型的范围内
int num =r.nextInt();
System.out.println("随机数是:"+num);
// 左闭右开区间:[0,3)实际上取值错落在0、1、2之间。
int one = r.nextInt(3);
int two = r.nextInt(pice+1);
System.out.println("one的随机数是:"+one+",two的随技数是"+two);
}
}
对象数组
定义一个数组,用来存储3个Person对象。
任何的数据类型都可以作为数组的数据类型,但是存在一个缺点,一旦创建,程序运行期间长度不可以发生改变。
package demo3;
public class Array {
public static void main(String[] args) {
// 首先创建一个长度为3的数组,用来存储三个对象。
Person[] array = new Person[3];
Person one = new Person("迪丽热巴",18);
Person two = new Person("古力娜扎",20);
Person three = new Person("佟丽娅",38);
//将one中的地址值赋值到数组的0号元素位置
array[0]=one;
array[1]=two;
array[2]=three;
// 得到三个地址值
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
// 任何的数据类型都可以作为数组的数据类型,但是存在一个缺点,一旦创建,程序运行期间长度不可以发生改变。
System.out.println(array[0].getName());
}
}
ArrayList集合
背景:到目前为止,我们想存储对象数据,选择的容器,只有对象数组。而数组的长度是固定的,无法适应数据变化的需求。为了解决这个问题,Java提供了另一个容器java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对象数据。
定义:java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长。
数组长度不可以发生改变,但是ArrayList集合的长度可以随意变化的
对于ArrayList来说,有一个尖括号<E>代表泛型。
泛型:也就是装在集合中的所有元素,全都是统一的什么类型。
从JDK1.7开始,右侧的尖括号可以不写内容,但是<>本身还是要写的。
注意:泛型只能是引用类型不能是基本类型。
注意:对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。如果内容为空,那么得到的是空的中括号[]
向集合中添加一些数据,需要使用add方法。
package demo4;
import java.util.ArrayList;
/*
数组长度不可以发生改变,但是ArrayList集合的长度可以随意变化的
对于ArrayList来说,有一个尖括号<E>代表泛型。
泛型:也就是装在集合中的所有元素,全都是统一的什么类型。
注意:泛型只能是引用类型不能是基本类型。
*/
public class DemoArrayList {
public static void main(String[] args) {
// 创建了一个ArrayList集合,集合的名称是list,里面装的全都是String字符串类型的的数据。
// 备注:从JDK1.7开始,右侧的尖括号可以不写内容,但是<>本身还是要写的。
// ArrayList<String> list = new ArrayList<String>();
ArrayList<String> list = new ArrayList<>();
// 向集合中添加数据,需要使用add方法
list.add("古力娜扎");
list.add("迪丽热巴");
list.add("佟丽娅");
System.out.println(list);
}
}
1.ArrayList集合中的常用方法和集合的遍历
(1)public boolean add(E,e):向集合中添加元素,参数的类型和泛型一致。返回值代表添加是否成功。
注意:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。但是对于其他集合(今后学习)来说,add添加动作不一定成功,那么返回值就有用了。
(2)public E get(int index):从集合中获取元素,参数就是索引编号,返回值就是对应位置元素。
(3)public E remove(int index):从集合中删除元素,参数是索引编号,返回值就是被删除的元素。
(4)public int size():获取集合的尺寸长度,返回值就是集合中的元素个数。
循环遍历的简便写法:list.fori 回车
package demo4;
import java.util.ArrayList;
public class ArrayListMethods {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
// 添加元素
list.add("古力娜扎");
list.add("赵丽颖");
list.add("刘诗诗");
list.add("迪丽热巴");
list.add("李小璐");
System.out.println(list); // [古力娜扎, 赵丽颖, 刘诗诗, 迪丽热巴, 李小璐]
// 删除元素
list.remove(4);
System.out.println(list); // [古力娜扎, 赵丽颖, 刘诗诗, 迪丽热巴]
System.out.println(list.get(0)); // 古力娜扎
System.out.println(list.size()); // 4
// 循环遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
2.包装类-----ArrayList集合存储基本数据类型。
由于泛型只能是引用数据类型不能是基本基本数据类型。如果希望向集合中存储基本数据类型,必须使用基本数据类型对应的“包装类”。
对应关系:
基本类型 包装类(引用类型,包装类都位于java.lang包下,意味着不用import导包语句)
byte Byte
short Short
int Integer 【特殊】
long Long
float Float
double Double
char Character 【特殊】
boolean Boolean
从JDK1.5+开始,支持自动装箱、自动拆箱。
自动装箱:基本类型自动变成了引用类型(即包装类型)
自动拆箱:包装类型自动变成了基本类型
package demo4;
import java.util.ArrayList;
public class ArrayListBasic {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>(); // E为包装类
list.add(2); // 自动装箱
list.add(200); // 自动装箱
list.add(800); // 自动装箱
int num = list.get(2);// 自动拆箱
System.out.println("拿到的额元素是:"+num); // 800
}
}
练习题:
package demo4;
import demo3.Array;
import demo3.Person;
import java.util.ArrayList;
import java.util.Random;
/*
练习1.数值添加到集合:生成6个1~33之间的随机整数,添加到集合,并遍历
练习2.对象添加到集合:自定义4个学生对象,添加到集合,并遍历
练习3.打印集合方法:定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分隔每个元素。格式参照 {元素@元素@元素}。
System.out.println(list); 输出的是[元素,元素,元素]
System.out.println(list); 要求输出的是{元素@元素@元素}
*/
public class Practice {
public static void main(String[] args) {
// -----------------练习题1:添加包装类类型--------------------------------
Random random = new Random();
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < 6; i++) {
int r= random.nextInt(33)+1;
list.add(r);
}
for (int i = 0; i < list.size(); i++) {
int b = list.get(i);
System.out.println(b);
}
// -----------------练习题2:添加自定义对象类型--------------------------------
Person one = new Person("迪丽热巴",18);
Person two = new Person("古力娜扎",20);
Person three = new Person("赵丽颖",28);
Person four = new Person("杨颖",38);
ArrayList<Person> stu = new ArrayList<>();
stu.add(one);
stu.add(two);
stu.add(three);
stu.add(four);
for (int i = 0; i < stu.size(); i++) {
Person a = stu.get(i);
System.out.println("姓名:"+a.getName()+",年龄:"+a.getAge());
}
// -----------------练习题3:打印集合方法--------------------------------
ArrayList<String> lista = new ArrayList<>();
lista.add("王语嫣");
lista.add("木婉清");
lista.add("钟灵");
lista.add("黄蓉");
printArrayList(lista); // {王语嫣@木婉清@钟灵@黄蓉}
}
// 方法定义方法的三要素:(1)返回值类型:只是打印而已,没有运算,没有结果,所以使用void。(2)方法名称:printArrayList.(3)参数列表:ArrayList。
public static void printArrayList(ArrayList<String> list){
// {元素@元素@元素}
System.out.print("{"); // 不要换行,去掉ln
for (int i = 0; i < list.size(); i++) {
String name = list.get(i);
if (i==list.size()-1){
System.out.print(name+"}");
}else{
System.out.print(name+"@");
}
}
}
}