Java笔记--常用API 以及 static关键字
JDK API
1.什么是JDK API
JDK中包含大量的API类库,所谓API(Application Programming Interface,应用程序编程接口)就是一些已写好,可供直接调用的功能(在Java语言中,这些功能以类的形式封装)。
JDK API包含的类库功能强大,经常使用的有:字符串操作、集合操作、文件操作、输入输出操作、网络操作、多线程等等。
JDK包结构
为了便于使用和维护,JDK类库按照包结构划分,不同功能的类划分在不同的包中;
包 | 功能 |
---|---|
java.lang | Java程序的基础类,如字符串,多线程等,该包中的类使用频率非常高,不需要import,可直接使用 |
java.util | 常用工具类,如集合、随机数产生器、日历、时钟等 |
java.io | 文件操作、输入/输出操作 |
java.net | 网络操作 |
java.math | 数学运算相关操作 |
java.security | 安全相关操作 |
java.sql | 数据库访问 |
java.text | 处理文字、日期、数字、信息的格式 |
匿名对象
创建匿名对象
1.直接调⽤⽅法,没有变量名。如:
new Scanner(System.in).nextInt();
2.一个匿名对象只能使用一次,一旦调用两次方法就是创建了两个对象
new Scanner(System.in).nextInt();
new Scanner(System.in).nextInt();
3.匿名对象可以作为⽅法的参数和返回值。
1.作为参数值
class Test {
public static void main(String[] args) {
// 普通⽅式
Scanner sc = new Scanner(System.in);
input(sc);
// 匿名对象作为⽅法接收的参数
input(new Scanner(System.in));
}
public static void input(Scanner sc) {
System.out.println(sc);
}
}
2.作为返回值
class Test2 {
public static void main(String[] args) {
// 普通⽅式
Scanner sc = getScanner();
}
public static Scanner getScanner() {
// 普通⽅式
// Scanner sc = new Scanner(System.in);
// return sc;
// 匿名对象作为⽅法返回值
return new Scanner(System.in);
}
}
Scanner 类
作用
⼀个可以解析基本类型和字符串的简单⽂本扫描器。
如:
Scanner sc = new Scanner(System.in);//System.in 指的是通过键盘录入数据
int i = sc.nextInt();
使用步骤
由于Scanner类是个引用数据类型,需要导包(除了在java.lang包下的不用导,其他都要导) java.util.Scanner
创建步骤:
数据类型 变量名 = new 数据类型(参数列表);
如:
Scanner scanner = new Scanner(System.in);
构造方法
构造⼀个新的 Scanner ,它⽣成的值是从指定的输⼊流扫描的。
public Scanner(InputStream source)
常用方法
方法 | 描述 |
---|---|
int nextInt() | 将输入信息的下一个标记扫描为一个 int |
String nextLine() | 此扫描器执行当前行,并返回跳过的输入信息 |
String next() | 查找并返回来自此扫描器的下一个完整标记 |
Random 类
作用
此类的实例⽤于⽣成伪随机数。
用法:
//得到了一个随机数
Random r = new Random();
int i = r.nextInt();
构造方法
public Random() :创建⼀个新的随机数⽣成器。
常用方法
方法 | 描述 |
---|---|
public int nextInt(int n) | 返回⼀个伪随机数,范围在[0,n)之间 |
创建了一个Random对象,每次调用nextInt()方法都会生成一个随机数
String 类
描述
String字符串类类 String 中包括⽤于检查各个字符串的⽅法,⽐如⽤于⽐较字符串,搜索字符串提取⼦字符串以及创建具有翻译为⼤写或⼩写的所有字符的字符串的副本。
特点
1.符串在初始化后字符串的值不能被更改
String s1 = "abc";
s1 += "d";
System.out.println(s1); // "abcd"
内存中有"abc","abcd"两个对象,s1初始化时指向"abc",在做+="d"时改变指向,指向了新字符串"abcd"。但是字符串"abc"没变,变的是地址的引用.
2.因为String对象是不可变的,所以它们可以被共享。
String s1 = "abc";
String s2 = "abc";
内存中只有⼀个"abc"对象被创建,同时被s1和s2共享。因为在创建s1时会在String的常量池中寻找"abc"这个对象,如果没有,就创建,如果有就指向"abc"
3.“abc” 等效于 char[] data = {‘a’ , ‘b’ , ‘c’} 。
因为String的底层是由字符数组实现的
常用的方法
方法 | 描述 |
---|---|
public boolean equals(Object anObject) | 将此字符串与指定对象进⾏⽐较 |
public int length() | 返回此字符串的⻓度。 |
public String concat(String str) | 将指定的字符串连接到该字符串的末尾。 |
public char charAt(int index) | 返回指定索引处的char值。 |
public int indexOf(String str) | 返回指定⼦字符串第⼀次出现在该字符串内的索引。 |
public String substring(int beginIndex) | 返回⼀个⼦字符串,从beginIndex开始截取字符串到字符串结尾。 |
public String substring(int beginIndex, int endIndex) | 返回⼀个⼦字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex |
public char[] toCharArray() | 将此字符串转换为新的字符数组。 |
public byte[] getBytes() | 使⽤平台的默认字符集将该String编码转换为新的字节数 |
组
public String replace(CharSequence target, CharSequence replacement) |将与
target匹配的字符串使⽤replacement字符串替换
public String[] split(String regex) |将此字符串按照给定的regex(规则)拆分为字符串数组
ArrayList 类
描述
ArrayList 是⼤⼩可变的数组的实现,存储在内的数据称为元素。此类提供⼀些⽅法
来操作内部存储的元素。 ArrayList 中可不断添加元素,其⼤⼩也⾃动增⻓。
构造方法
方法 | 描述 |
---|---|
public ArrayList() | 构造⼀个内容为空的集合 |
ArrayList<String> list = new ArrayList<String>();
基本格式:
ArrayList<String> list = new ArrayList<String>();
//JDK7后,右侧的尖括号之内可以留空,但是<>仍要写:
ArrayList<String> list = new ArrayList<>();
常用方法和遍历
对于元素的操作,基本体现在 – 增、删、查
方法 | 描述 |
---|---|
public boolean add(E e) | 将指定的元素添加到此集合的尾部。 |
public E remove(int index) | 移除此集合中指定位置上的元素。返回被删除的元素。 |
public E get(int index) | 返回此集合中指定位置上的元素。返回获取的元素。 |
public int size() | 返回此集合中的元素数。遍历集合时,可以控制索引范围,防⽌越界。 |
Arrays 类
描述
此类包含⽤来操作数组的各种⽅法,⽐如排序和搜索等。其所有⽅法均为静态⽅法,调⽤起来⾮常简单。
常用的方法
方法 | 描述 |
---|---|
public static String toString(int[] a) | 返回指定数组内容的字符串表示形式 |
public static void sort(int[] a) | 对指定的 int 型数组按数字升序进⾏排序 |
public static int[] copyOf(int[] original, int newLength) | 复制指定的数组,如有必要,⽤零填充。 |
Math 类
描述
包含⽤于执⾏基本数学运算的⽅法,如初等指数、对数、平⽅根和三⻆函数。类似这样的⼯具类,其所有⽅法均为静态⽅法,并且不会创建对象,调⽤起来⾮常简单。
常用的方法
方法 | 描述 |
---|---|
public static double abs(double a) | 返回 double 值的绝对值 |
public static double ceil(double a) | 返回⼤于等于参数的最⼩的整数。 |
public static double floor(double a) | 返回⼩于等于参数最⼤的整数。 |
public static long round(double a) | 返回最接近参数的 long。(相当于四舍五⼊⽅法) |
System 类
描述
类中提供了⼤量的静态⽅法,可以获取与系统相关的信息或系统级操作
常用的方法
CurrentTimeMillis方法
currentTimeMillis⽅法就是获取当前系统时间与1970年01⽉01⽇00:00点之间的毫秒差值
方法 | 描述 |
---|---|
public static long currentTimeMillis() | 返回以毫秒为单位的当前时间 |
import java.util.Date;
public class SystemDemo {
public static void main(String[] args) {
//获取当前时间毫秒值
System.out.println(System.currentTimeMillis());
}
}
循环打印0-9999所需要的时间(毫秒)
public class SystemTest1 {
public static void main(String[] args) {
long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("共耗时毫秒:" + (end - start));
}
}
arraycopy⽅法
数组的拷⻉动作是系统级的,性能很⾼。System.arraycopy⽅法具有5个参数,含义分别为:
参数序号 | 参数名称 | 参数类型 | 参数含义 |
---|---|---|---|
1 | src | Object | 源数组 |
2 | srcPos | int | 源数组索引起始位置 |
3 | dest | Object | 目标数组 |
4 | destPos | int | 目标数组索引起始位置 |
5 | length | int | 复制元素个数 |
方法 | 描述 |
---|---|
public static void arraycopy(Object src, int srcPos, Object dest, int destPos,int length) | 将数组中指定的数据拷⻉到另⼀个数组中 |