Java学习之常用类篇
0x00 前言
在开发中难免调用到各种api来开发程序,那就先来学习一下api的一些相关概念。
0x01 api的使用
首先还是得来看看api的一个解释。
API(Application Programming Interface),应用程序编程接口。Java API是一本程序员的 字典 ,是JDK中提供给
我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学
习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。
这里复制了一段网上采集的对于api的解释。
可以得知,这个api是jdk提供给我们的使用类的一个说明文档。
api文档的使用步骤。
1.首先查看包,该类在哪个包下面,如果是在java.lang包不需要导入,可以直接使用,如果是其他的包下就需要导入。
2.查看类的解释与说明。
3.学习该类的构造方法
0x02 Scanner类
Scanner这是一个可以解析基本
类型和字符串的简单文本扫描器。
首先我们需要导入一个类
improt java.util.Scanner
然后就是使用构造方法,实例化该类的对象。
Scanner sc = new Scanner(System.in);
接下来就可以去调用他的方法了,先来查看一下该类的方法,对其进行调用。
列出几个方法:
byte nextByte()
将输入信息的下一个标记扫描为一个 byte。
byte nextByte(int radix)
将输入信息的下一个标记扫描为一个 byte。
double nextDouble()
将输入信息的下一个标记扫描为一个 double。
float nextFloat()
将输入信息的下一个标记扫描为一个 float。
int nextInt()
将输入信息的下一个标记扫描为一个 int。
我们这里就来接收一下键盘输入的数字,只有netxtInt方法。
Scanner sc = new Scanner(System.in);
int i = sc.nextInt;
这里的system.in系统输入是指通过键盘录入数据。
对于只使用接受一次的方法,我们就可以使用到匿名对象来进行接收。
格式:
new Scanner(System.in);
注意事项:
一个匿名对象,只能使用一次
匿名的对象也可以作为方法的参数或者是返回值进行使用
public class Input {
public static void main(String[] args) {
input(new Scanner(System.in));
}
private static void input(Scanner sc) {
System.out.println(sc);
}
}
0x03 Random 类
这是一个生成伪随机数的类,在使用前,肯定是要先看看他的构造方法。
Random()
创建一个新的随机数生成器。
Random(long seed)
使用单个 long 种子创建一个新的随机数生成器。
看完构造方法就可以实例化一个对象了。
Random random = new Random();
实例化完一个对象就可以使用,实例化调用的方法。
int i = random.nextInt();
这样就使用到了random类生成了一个随机值,赋值到了i变量里面
public class Input {
public static void main(String[] args) {
Random random = new Random();
int i = random.nextInt();
System.out.println(i);
}
}
0x04 ArrayList类
前面接触的数组,只能存储固定的长度和固定的类型。而为了解决这个问题,java提供了一个容器 arrayList集合类,让我们可以比较便捷的存储和操作对象。
首先也还是查看一下构造方法。
java.util.ArrayList
用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。
ArrayList()
构造一个初始容量为 10 的空列表。
ArrayList(Collection<? extends E> c)
构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。
ArrayList(int initialCapacity)
构造一个具有指定初始容量的空列表。
实例化对象:
public class Input {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
String s1 ="小明";
String s2 ="小红";
String s3 ="小绿";
list.add(s1);
list.add(s2);
list.add(s3);
System.out.println(list);
}
}
对于元素的操作,基本体现在——增、删、查。常用的方法有:
public boolean add(E e) :将指定的元素添加到此集合的尾部。
public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。
public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。
public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。
那么就都来试试
{
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
String s1 ="小明";
String s2 ="小红";
String s3 ="小绿";
list.add(s1);
list.add(s2);
list.add(s3);
System.out.println("get"+list.get(0));
System.out.println("get"+list.get(1);
System.out.println("get"+list.get(2));
System.out.println("zise"+list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
ArrayList对象不能存储基本类型,只能存储引用类型,但是存储基本类型对应的包装类型是可以的。
所以,想要存储基本类类型的数据,<>中的数据类型,必须转换后才能编写
基本类型 | 基本类型包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
在集合里面也可以存储对象
public class Input {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Student s1 = new Student();
Student s2 = new Student();
Student s3 = new Student();
list.add(s1);
list.add(s2);
list.add(s3);
System.out.println(list);
}
}
0x06 static
对于static关键字得时候,他可以用来修饰成员遍历和成员方法,被修饰得成员是属于类得,而不是单单输入某个对象里面。也就是说,既然属于类,就可以不靠创建对象来调用。
当被static修饰得成员时,该变量被叫做类变量。这个类每个对象都共享同一个类变量得值。任何对象都没有改变这个类变量得值,但也可以在不创建得情况下对这个类变量进行操作。
定义静态变量格式:
static 数据类型 变量名;
static int num;
定义静态方法格式:
public static void method(){
System.out.println("123")
}
静态方法调用的注意事项:
1.静态方法可以直接访问类变量和静态方法。
2.静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
静态方法中,不能使用this关键字。
4.静态方法只能访问静态成员。
static修饰后的成员需要使用类名直接访问,和前面的接口静态方法类似。
类名.变量名
类名.静态方法
0x07 Array类
Array包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来
非常简单。也就是说不需要实例化对象,可以直接通过类名来调用他。
查看一下该类的一个静态方法的使用
sort(int[] a)
对指定的 int 型数组按数字升序进行排序。
toString(int[] a)
返回指定数组内容的字符串表示形式
代码示例:
public static void main(String[] args) {
int[] arr = {1,29,3,3,64};
String s = Arrays.toString(arr);
System.out.println(s);
Arrays.sort(arr);
String a = Arrays.toString(arr);
System.out.println(a);
}
0x08 Math类
math这是用于数学运算的类,这里面的一些方法也都是静态方法,所以也不需要实例化对象,那么我们也不需要学习他的构造方法,直接类名调用即可。
查看他的一些方法使用
abs(double a)
返回 double 值的绝对值。
代码:
public static void main(String[] args) {
double abs = Math.abs(-13.3);
double ceil = Math.ceil(93.3);
System.out.println(abs);
System.out.println(ceil);
}
这些方法都比较简单,至于这个向上取整的运用,这里可以来说一下,例如我们开发一个类似于御剑的目录扫描器,我们有23个字典需要分开5个线程去请求,每个线程都请求4个字典的话,那么还会多出三个字典没有线程去请求,就会把多出来这个字典给忽略掉,如果被忽略的这个字典刚刚好是后台的路径呢?所以在工具开发当中这些都是要注意的点,我们需要再多开一个线程,去请求多出来的一些数据,那么这时候就可以使用到向上取整。
0x09 结尾
开发程序中,总是会用到各种类,所以不能全靠死记,要学会怎么去查看手册去开发个程序。