Java本身为我们提供了很多已经封装好的API,在开发中直接调用即可,大大的提高了开发的效率。在本节主要会教大家如何查阅和使用API,以及一些常用的API
链接:https://pan.baidu.com/s/1fwlb0ilG7DEJwSnfCjSurg 提取码:kt54 这是API文档
Scanner类
就以Scanner类为例,交大家钓鱼的方法 第一步:下载完成后打开API文档
第二步:在索引处,输入你想学习的类或者方法
第三步:点击Scanner类会出个对话框,点第一个
第四步:进入查看你需要的内容
1:看包 java.lang包下的类在使用的时候是不需要导包的,可以看出Scanner类是在java.util包下,所以使用的时候需要导包 import java.util.Scanner;
2:看类的描述 一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。 以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
3:看构造方法 Scanner(InputStream source) : 构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。 Scanner sc = new Scanner(System.in); 4:看成员方法 String nextLine() :此扫描器执行当前行,并返回跳过的输入信息。 String s = sc.nextLine();
调用方法: 看返回值类型:人家返回什么类型,你就用什么类型接收 看方法名:名字不要写错了 看形式参数:人家要几个参数,你就给几个,人家要什么数据类型的,你就给什么数据类型的 5:后期还需要主要这个类的子父类,接口,以及方法是否是抽象,静态等
实例:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("请输入:");
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
System.out.println("------------------");
System.out.println(s);
}
}
输出结果
请输入:
123
------------------
123
String字符串类
由多个字符组成的一串数据,字符串其本质是一个字符数组
构造方法
String(String original) :把字符串数据封装成字符串对象 String(char[] value) :把字符数组的数据封装成字符串对象 String(char[] value, int index, int count ) :把字符数组中的一部分数据封装成字符串对象
public class StringDemo {
public static void main(String[] args) {
// 方式1
// String(String original) :把字符串数据封装成字符串对象
String s1 = new String("hello");
System.out.println();
System.out.println("s1: " + s1);
System.out.println("---------");
// 方式2
// String(char[] value): 把字符数组的数据封装成字符串对象
char[] chs = { 'h', 'e', 'l', 'l', 'o' };
String s2 = new String(chs);
System.out.println("s2:" + s2);
System.out.println("--------");
// 方式3
// String(char[] value, int index, int. count ) :把字符数组中的一部分数据封装成字符串对象
String s3 = new String(chs, 0, chs.length);
String s4 = new String(chs, 1, 3);
System.out.println("s3:" + s3);
System.out.println("s4:" + s4);
}
}
输出结果
s1: hello
---------
s2:hello
--------
s3:hello
s4:ell
成员方法
都很简单,大家可以自己去尝试。
首先介绍一个概念Object :是类层次结构中的根类,所有的类都直接或者间接的继承自该类。 如果一个方法的形式参数是0bject,那么这里我们就可以传递它的任意的子类对象。
String类的判断功能
boolean equals(Object obj) :比较字符串的内容是否相同 boolean equalsIgnoreCase(String str) :比较字符串的内容是否相同,忽略大小写 boolean startsWith(String str) :判断字符串对象是否以指定的str开头 boolean endsWith(String str) :判断字符串对象是否以指定的str结尾
String类的获取功能
int length() :获取字符串的长度,其实也就是字符个数 char charAt(int index) :获取指定索引处的字符 int indexOf(String str) :获取str在字符串对象中第一次出现的索引 String substring(int start):从start开始截取字符串 String substring(int start, int end):从start开始, 到end结束截取字符串
String类的转换功能
char[] toCharArray( ) :把字符串转换为字符数组 String tolowerCase() :把字符串转换为小写字符串 String toUpperCase() :把字符串转换为大写字符串
String类的其他功能
String trim():去除字符串两端空格 String[] split(String str):按照指定符号分割字符串
StringBuilder类
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuilder就可以解决这个问题。但其实StringBuilder类也不常用,以后会介绍一个更方便,更符合面向对象思想的集合类AarryList类,所以StringBuilder类,大家了解一下即可。
object类
String toString() : 返回该对像的字符串表示
return getClass().getName() + "@" + Integer.toHexString(hashCode());
- getClass():返回一个字节码对象 Integer.toHexString():返回指定参数的十六进制字符串形式 hashCode():返回该对象的哈希码值(内部地址)
public class ObjectDemo {
public static void main(String[] args) {
People s = new People();
s.name = "曹操";
s.age = 44;
System.out.println(s.toString());
System.out.println(s);//输出一个对象,默认输出toString方法
}
}
class People {
String name;
int age;
@Override
public String toString() {
return "People [name=" + name + ", age=" + age + "]";
}
}
输出结果
People [name=曹操, age=44]
People [name=曹操, age=44]
boolean equals(Object obi ):使用==来比较两个对象是否相等,则比较地址值是否相等
重写此方法使方法更有效,目的就是比较对象的内容而不是地址值
public boolean equals(Object obj) {
//提高效率,如果是同一个对象,地址值一样,不需要比较
if (this == obj)
return true;
//如果传参是空,不需要比较
if (obj == null)
return false;
//提高健壮性,如果传参不是一个类型,即class类不一样不需要比较
if (getClass() != obj.getClass())
return false;
//向下转型
People other = (People) obj;
//判断对象所有属性是不是相同
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
System类
System:包含一些有用的类字段和方法。它不能被实例化 static void arraycopx.(Object src, int srcPos, object dest, int destPos, int length) static long currentTimeMillis() static void exit(int status)
public class SystemDemo {
public static void main(String[] args) {
// 想测试那个方法就可以取消注释
// method();
// method2();
// method3();
}
private static void method3() {
//static void exit(int status) :终止虚拟机
for (int i = 0; i < 100000; i++) {
System.out.println(i);
if(i == 100) {
System.exit(0);
}
}
}
private static void method2() {
/*
* static long currentTimeMillis() :以毫秒值返回当前系统时间
* 这个毫秒的时间是相对时间,相对于1970-1-1 00:00:00 : 0
* 1970-1-1 00:00:01 : 1000
* 1970-1-1 00:01:00: 1000 * 60
* 1970-1-1 01:00:00: 1000 * 60 * 60
* 1000毫秒 = 1秒
*
*/
//System.out.println(System.currentTimeMillis());
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
private static void method() {
/*
* static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
* 复制数组
* 参数1:源数组
* 参数2:源数组的起始索引位置
* 参数3:目标数组
* 参数4:目标数组的起始索引位置
* 参数5:指定接受的元素个数
*/
int[] src = {1,2,3,4,5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, 5);
for (int i = 0; i < dest.length; i++) {
System.out.print(dest[i]);
}
}
}
Date类、SimpleFormat类和Calender类
这三个类都是和系统时间有关的,有兴趣的可以了解一下