写在开头
今天我们说一下Java编程的很重要的一部分:API.
API
APIA是 Apsplication Programming Interface 的缩写,意为应用程序编程接口.
在编写程序的时候,通常有很多功能是通用的,或者是很基础的,可以用这些功能来组成更复杂的功能代码。比如文件操作,不同程序对文件的操作基本都是一样的,打开文件,关闭文件,读取文件里面的数据,往文件中写数据等等。所不同的仅仅是文件路径不相同,文件内容不同。如果把文件相关的操作编写成一个通用的类,不管哪个程序员都可以直接使用,而不必自己重新编写一遍操作文件的所有代码,那么程序员的工作效率就会大大提高。
像这样把一些具有通用的功能编写成相应的类代码,就形成了类库。
Java 的类库是 Java 语言提供的已经实现的标准类的集合,是 Java 编程的 API(Application Program Interface),它可以帮助开发者方便、快捷地开发 Java 程序。程序员在开发程序的时候,直接调用这些现成的类就可以了。这些类根据实现的功能不同,可以划分为不同的集合,每个集合组成一个包,称为类库。Java 类库中大部分都是由Sun 公司提供的,这些类库称为基础类库。
我们对常用的API类进行下简单的介绍
Object 类
- Object类来自于JDK中java.lang.Object
- Object类是一个顶层根类,是所有类的直接或者间接的默认父类
- 在实际开发过程中,Object类都是最先进入到内存中
1 | package io.cnfox.demo; |
getClass() 方法
功能:获取到类的字节码文件对象
返回值:Class
结果:带有包名的全类名
- 链式调用方法:getName()
- 方法作用:将Class类型的返回值转换成String类型展示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22package io.cnfox.demo;
public class ObjectDemo {
public static void main(String[] args) {
// 创建Object类对象
Object obj = new Object();
// getClass() 方法获取到带有完整包名的类名,返回值类型Class类型
System.out.println(obj.getClass());
//class java.lang.Object
Person p = new Person();
// Person类因为继承Object,因此可以使用父类中的getClass()方法
System.out.println(p.getClass());
//class io.cnfox.demo.Person
Person p1 = new Person();
System.out.println(p1.getClass().getName());
//io.cnfox.demo.Person
}
}
hashCode() 方法
- 功能:将任意的一个对象转化成一个整数进行输出,这个整数叫做哈希码值
- 返回值:哈希码值
toString() 方法
- 功能:打印引用数据类型在内存中的地址值,重写后打印引用数据类型中的成员变量的值
- 返回值:引用数据类型在内存中的地址值
equals(Object obj)方法
- 功能:比较对象是否相等
- 返回值:Boolean 布尔类型
String 类
- 打印引用数据类型在内存中的地址值,重写后打印引用数据类型中的成员变量的值
- length() : 求字符串的长度, 对比: 数组求长度.length
- charAt(int index):将给定的index所以对应的字符,返回回来
- subString(int beginIndex): 截取字符串一部分,从给定的索引beginIndex开始,将剩下的字符都截取到,返回一个新的字符串
- subString(int beginIndex,int endIndex):截取字符串一部分,从给定的索引beginIndex开始,到结束索引endIndex为止,将中间的字符都截取到,返回一个新的字符串
说明: 包含开始说索引,不包含结束索引
小规则: 一般JDK写好的方法中,如果出现了两个索引的情况,一般情况下,都是包含开始索引不包含结束索引 - indexOf(String str) : 求str字符串在要验证的字符串中,第一次出现的索引位置,没有匹配到合适的位置,返回-1(因为索引值没有负数的)
- getBytes() : 将一个字符串转换成一个字节数组(与构造方法String(byte[])),功能正好相反
- toCharArray(): 将一个字符串转换成一个字符数组(与构造方法String(char[])),功能正好相反
- toUpperCase() : 将这个字符串的所有字符转成大写
- toLowerCase(): 将这个字符串的所有字符转成小写
- valueOf(参数参见API) : 将任意类型转换成字符串类型
- trim() : 将字符串前后的空格或者制表符去掉,中间的空格无法去除
1 | package io.cnfox.t2; |
1 | //方法实现区 |
== 和 equals 的区别
- 比较内容:
== 可以比较基本数据类型,与可以比较引用数据类型
equals 只能比较引用数据类型
- 比较的方式:
== 比较基本数据类型,判断值是否相等; == 比较引用数据类型,判断两个对象的地址值是否相等
equals 没重写之前,比较两个对象的地址值; equals 重写之后,比较的是两个对象的内容是否相等
equals 最常用的是比较字符串,String类型
字符串缓冲区(生成器) StringBuilder
- 性质:可变得字符序列
- 返回值:String builder
- length() 获取数组长度
- capacity() 获取数组容量
- 添加和获取功能
- append() 拼接
- insert() 指定地址插入
- deleter() 删除指定索引内容
- replace() 替换
- reverse() 反转
1 | package io.cnfox.Stringbuilder; |
String和StringBuilder的区别和相同
- String定长的字符序列,不可变的
StringBuilder 可变长度的字符序列 - String 底层是一个字符数组,final修饰
StringBuilder 底层也是一个字符数组,没有使用final修饰 - 创建对象个数
String创建对象的个数多
StringBuilder 创建对象的个数少
使用场景方面:
如果有字符串的拼接的话,优先使用StringBuilder,节省内存空间,并且针对字符的操作,相对灵活
StringBuffer 和 StringBuilder的区别
StringBuffer和StringBuilder功能基本一致,都是用来做字符序列的拼接
都是使用append和insert
StringBuffer 线程安全的,运行的速度慢
StringBuilder 线程不安全,运行速度快
因此,在单线程的程序下(main,一条执行通路),更建议使用StringBuilder
Math 类
- 功能:计算各种数学公式的API
- 返回值:
1 |
|
包装类
功能:实现String-Integer-int三种类型的转换
实际的开发过程中: 年龄是以String类型传递的,解决一个问题: 前台给的String类型age,如何能转化成普通的int类型,存储到数据库中
解决方式如下:
Integer i = new Integer(“123”);
int x = i.intValue(); System.out.println(x);
String s = “4567”;
int y = Integer.parseInt(s); System.out.println(y);
包装类 Integer的构造方法
包装过程:
Integer(intvalue):将一个int类型的数据value,封装成一个Integer类型的对象,这个对象的内容就表示这个整数
Integer(String s) : 将一个String类型的字符(数字字符的字符串),包装成一个Integer类型的对象
intValue() : 表示将Integer类型的对象,转换成int类型,返回值类型int
parseInt(String s) : 将一个字符串s变成一个十进制数,这个方法,是静态的,返回值类型是int
valueOf(int i) : 将一个int类型的数据i,封装成Integer类型的对象,静态方法
valueOf(Sting s) : 将一个String类型的数据s,封装成Integer类型的对象,静态方法
1 | package io.cnfox.Integert; |
System 类
System:系统类-system.out-system.in-system.err
Date 日期类
- 功能:计算时间的API
- 返回值:
- getTime() : 获取到当前Date日期的毫秒值
- setTime(long time): 设置此 Date对象表示的日期 //实际参数为Long time
DateFormat
- 功能:输出格式化日期
- 返回值:DateFormat
- format(Date date) : 功能,将一个Date日期对象转换成字符串,返回值String类型
- parse(String source) : 功能,将String类型转换成日期对象,返回值类型为Date类型
SimpleDateFormat : DateFormat是抽象类,simpleDateFormat的一个实现类,用于进行日期的格式化,可以将一个日期,以用户想要的任何格式类型返回回来
SimpleDateFormat() : 默认格式化字符串类型 19-6-14 下午2:07
SimpleDateFormat(String pattern) : 格式化的方式与给出的pattern保持一致
pattern 常见输入规则:
y—- 年
M—月
d—日
H—小时
m–分钟
s– 秒
1 | package io.cnfox.Systemt; |
1 | import java.text.DateFormat; |
1 | package io.cnfox.calender; |
Calendar 类
1 | package io.cnfox.calender; |