常用API(1)
文章目录
- 常用API(1)
- 一.Scanner类
- 1.Api概述和使用步骤
- 2.Scanner类概述
- 二.匿名对象
- 1.匿名对象的说明
- 2.匿名对象作为方法的参数
- 三.Random类
- 1.Random的概述和基本使用
- 2.Random生成指定范围的随机数
- 四.ArrayList集合
- 2.ArrayList集合概述和基本使用
- 3.ArrayList集合的常用方法
- 4.ArrayList集合储存基本数据类型
- 5.ArrayList有关的练习题
- 五.Arrays工具类
- 1.数组工具类Arrays
- 六. 基本类型包装类
- 1.包装类的概念
- 2.拆箱和装箱
- 3.自动装箱与自动拆箱
一.Scanner类
1.Api概述和使用步骤
API(Application Programming interface)应用程序编程接口,可以理解成API就是很多类很多方法可供我们使用,这些类将底层的代码实现封装起来,我们不需要关心是如何实现,只需要学习和使用即可
2.Scanner类概述
Scanner类可以键盘输入数据,录入程序中
引用类型使用的一般步骤
(1)导包 import 包路径.类名称 (如果需要使用的类和当前类位于同一个包下,则可以省略包语句不写)
java.lang包下的内容不需要导包
(2)创建对象
(3)通过对象调用方法或者成员变量
import java.util.Scanner; //(1)
//System in代表键盘输入的意思
Scanner sc = new Scanner(System in); //(2)
//获取键盘上输入的一个int数字
int num = sc.nextInt(); //(3)
//获取键盘上输入的字符串
String str = sc.next() //(3)
键盘上输入的全是字符串,所以你如果要输入字符串的时候直接调用next()方法即可,而nextInt()方法本质是帮你把输入的字符串转换成int
二.匿名对象
1.匿名对象的说明
没有名字的对象就是匿名对象
匿名对象就是只有右边的对象,没有左边的名字和赋值运算符
其实名字就是地址值,而new 类名称就是没交地址值
使用:
new Person().name = "伊芙琳";
注意事项:匿名对象只能使用唯一的一次,下次再用不得不创建一个新的对象
使用建议:如果确定有一个对象只需要使用一次,就可以使用匿名对象。
2.匿名对象作为方法的参数
任何数据类型都可以作为方法的参数和返回值,对象也可以
//1.匿名对象使用方式
int num = new Scanner(System in).nextInt();
//2.用匿名对象作为方法的参数
method(new Scanner(System in));
public static void method(Scanner sc) {
int num = sc.nextInt();
}
//3.匿名对象作为返回值
public static Scanner method() {
return new Scanner(System in);
}
Scanner sc = method(); //拿到这个匿名对象,我来取名为sc
int num = sc.nextInt();
三.Random类
1.Random的概述和基本使用
Random用来产生随机数字,和Scanner一样也是三个步骤
import util.Random; //(1)导包
Random r = new Random(); //(2)创建对象
//(3)使用 获取一个随机数字:对象.nextInt()
int num = r.nextInt(); //获取随机数的范围是有正负两种
2.Random生成指定范围的随机数
对象.nextInt(int bound);
获得一个随机int数字(参数代表了范围,左闭右开区间)
int num = r.nextInt(3) + 1;
//这取的随机数的范围是[1,4)
四.ArrayList集合
###1. 对象数组,为什么需要ArrayList集合
例子:定义一个数组,用来储存三个Person对象
//1.首先创建一个长度为3的数组用来存放Person类型对象
Person[] personArray = new Person();
//2.通过构造方法创建对象
Person one = new Person("伊芙琳",18);
Person two = new Person("德玛西亚",28);
Person three = new Person("大虫子",38);
//3.将地址值赋值到数组元素中
personArray[0] = one;
personArray[1] = two;
personArray[2] = three;
//4.调用成员方法
sout(personArray[1].getName());
数组有一个缺点,就是一旦创建了,在程序的运行期间,数组的长度都不能改变
2.ArrayList集合概述和基本使用
- java.util.ArrayList
最大区别:数组的长度不可变,而ArrayList集合的长度可以改变 - ArrayList
对于ArrayList来说,有一个尖括号代表泛型
泛型也就是装在集合当中的所有元素,全都是什么统一的类型
注意:泛型只能是引用类型。不能是基本类型
例子:
ArrayList<String> list = new ArrayList<>();
//创建了一个ArrayList集合,集合的名称是list,里面装的全都是String字符串中的数据
//从JDK1.7开始,右边的尖括号内可以不用写内容,但是<>本身还是要写上
- 注意事项:对于ArrayList集合来说,直接sout得到的不是地址值,而是内容,如果内容是空,得到的是空的中括号(因为中括号是ArrayList默认格式)
- 向集合中添加一些数据,需要用到add(E e)方法,是将指定的元素添加到列表的尾部
list.add("伊芙琳");
list.add("德玛西亚");
//注意尖括号泛型已经是什么类型的数据,通过add()方法加进去的元素也必须是统一的类型
3.ArrayList集合的常用方法
- (1). public boolean add(E e); 向集合中添加元素,参数类型和泛型一致,返回值是boolean表示添加的动作是否成功,对于ArrayList集合来说,add()方法添加必成功,但是对于其他集合可能不成功。
- (2). public E get (int index); 从集合中获取元素,参数是索引编号,返回值是对应位置的元素
- (3). public E remove (int index); 从集合中删除元素,参数是索引编号,返回值是被删除的元素
- (4). public int size( ); 获取集合的尺寸长度。返回值是集合中包含的元素个数
数组遍历和集合遍历的区别
//数组遍历
for (int i = 0;i < array.length;i++) {
sout(array[i]);
}
//ArrayList集合遍历
for (int i = 0;i < list.size();i++) {
sout(list.get(i));
}
4.ArrayList集合储存基本数据类型
泛型只能是引用类型,不能是基本类型。
原因是:集合中保存的均是地址值,而基本类型没有地址值
如果希望向集合ArrayList当初存储基本类型,必须使用基本类型的包装类(包装类就是把基本类型包装成一个对象)
基本数据类型 | byte | short | int | long | float | double | char | boolean |
包装类 | Byte | Short | Integer | Long | Float | Double | Character | Boolean |
例子:
ArrayList<Integer> list = new ArrayList<>();
int num = list.get(1);
从JDK1.5开始,支持自动装箱和自动拆箱
自动装箱:基本类型自动转换成包装类型(引用类型)
自动拆箱:包装类型–>基本类型
5.ArrayList有关的练习题
//题目:按指定格式打印ArrayList集合
//定义以指定格式打印集合的方法(ArrayList作为参数),使用{}扩集合,使用@分隔
/*
分析:
定义方法的三要素:
返回值类型:只是打印没有运算,没有结果,用void
方法名称:方法名称随便取 printArrayList
参数列表:ArrayList
*/
public static void printArrayList (ArrayList<String> list) {
System.out.print("{"); //print不换行
for (int i = 0;i < list.size();i++) {
String name = list.get(i);
if (i == list.size()-1) {
Sout(name + "}");
}else {
System.out.print(name + "@");
}
}
}
五.Arrays工具类
1.数组工具类Arrays
java.util.Arrays(提供了数组相关方法)
里面提供了大量静态方法,用来实现数组常见操作。
常用方法:
- public static String toString(数组) 将参数数组变成字符串(默认格式:[元素1,元素2,元素3,…元素n])
- public static void sort(数组) 按照默认升序(从小到大)对数组元素进行排序,如果是数值sort默认按照从小到大排序,如果是字符串,sort默认按照字母升序,如果是自定义的数据类型,那么这个定义的类需要有Comparable接口的支持
例子1:
//public static String toString(数组)
int[] intArray = {10,20,30};
String instr = Arrays.toString(intArray);
sout(instr); //[10,20,30]
例子2:
//public static void sort(数组)
int[] array1 = {2,1,3,10,6};
Arrays.sort(array1);
sout(Arrays.toString(array1)); //[1,2,3,6,10]
String[] array2 = {"bbb","aaa","ccc"};
Arrays.sort(array2);
sout(Arrays.toString(array2)); //[aaa,bbb,ccc]
例子3:
String str = "ksafsljsdf";
//注意sort()方法参数必须是数组才行
//所以我们得先将字符串转换成字符数组
char[] chars = str.toCharArray();
Arrays.sort(chars);
//倒序排列
for (int i = chars.length-1;i >= 0;i--) {
sout(char[i]);
}
六. 基本类型包装类
1.包装类的概念
基本数据类型使用起来非常的方便,但是没有对应的方法来操作这些基本的数据类型数,所以我们可以使用一个类,在类中定义一些方法,这个类就叫做包装类
。
我们可以使用类中的方法来操作这些基本类型数据(包装类相当于箱子,只是用类来包)。
包装类均位于java.lang包下
2.拆箱和装箱
装箱
:从基本类型转换为对应的包装类对象。拆箱
:从包装类对象转换为对应的基本类型。
例如:
java.lang.Integer:Integer类在对象中包装了一个基本类型int值
那么怎么将基本数据类型–>包装类?
- 通过构造方法
下面还是通过Integer包装类来举例
Integer(int value)和Integer(String s)
第一个构造方法很好理解,这里主要是讲一下第二个构造方法
Integer(String s):构造一个新分配的Integer对象,他表示String参数所指示的int值,传递的字符串必须是基本类型的字符串,否则会抛出异常。
举个例子:
String s = new Integer("100"); //正确
String s1 = new Integer("a"); //错误
- 我们不仅可以通过构造方法使基本数据类型–>包装类,我们还可以通过类提供的静态方法来从基本数据类型转换成包装类对象
两个静态方法
1. static Integer valueOf(int i)
2. static Integer valueOf(String s)
包装类–>基本数据类型
- 我们通过一个成员方法,这里还是用Integer来举例
int intValue()以int类型返回该Integer值
下面举个例子
Integer in1 = new Integer(1);
sout(in1); //发现是可以输出1的,说明该Integer类重写了Object类的toString方法
Integer in2 = new Integer("1");
int i = in1.intValue();
3.自动装箱与自动拆箱
自动装箱与自动拆箱:
基本类型的数据和包装类之间可以进行自动的相互转换
例子1:
psvm(String[] args) {
//自动装箱
Integer in = 1; //等价于Integer in = new Integer(1);
//自动拆箱
//in是包装类无法直接参与运算,可以自动转换为基本类型,也就是自动拆箱
in = in+2;
}
例子2:
ArrayList<Integer> list = new ArrayList<>();
list.add(1); //自动装箱 list.add(new Integer(1));
int a = list.get(0); //自动拆箱 list.get(0).intValue();