Java API概述
API(Application Programming Interface)应用程序编程接口
是对java预先定义的类或接口功能和函数功能的说明文档,目的是提供
给开发人员进行使用帮助说明
Object类
●
Object类是所有Java类的祖先(根基类)。每个类都使用 Object 作为超类
(父类)。所有对象(包括数组)都继承实现这个类的方法。
●
如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
public class Person { ...
}
等价于:
public class Person extends Object {
...
}
●
toString方法
●
Object类中定义有public String toString()方法,其返回值是 String 类
型,描述当前对象的有关信息。
●
当需要通过输出语句输出一个对象时,如System.out.println(person),
将自动调用该对象类的 toString()方法,如果该类中没有重写toString(),那
么默认调用Object类中的toString(),默认输出对象hashCode值.
●
可以根据需要在用户自定义类型中重写toString()方法
● equals
方法
● Object
类中定义有:
● public boolean equals(Object obj)
方法
,
判断对象是否相等的逻辑。
public boolean equals(Object obj) {
return (this == obj);
}
● Object
中的
equals
方法默认使用
==
比较
,
比较的是对象地址
,
这点需
要注意
.
● JDK
提供的一些类,如
String
,
Date
等,重写了
Object
的
equals
方
法,调用这些类的
equals
方法,
x.equals (y) ,
当
x
和
y
所引用的对象
是同一类对象且属性内容相等返回
true
否则返回
false
。
Arrays类
●
java.util.Arrays类用于操作数组工具类,里面定义了常见操作数组的静态方法.
●
equals 方法
比较两个数组对象中元素是否相等.
而数组对象中的equals用来判断与另一个数组对象是否相等。
声明:public static boolean equals(type[]a,type[]a2)
参数的类型可以是原生数据类型和引用类型的任意一种类型
返回:如果两个相等,则返回true,否则返回false
●
sort -排序
●
作用于数组的所有元素
public static void sort(type[] a)
●
作用于数组指定范围内的元素
public static void sort(type[] a, int fromIndex(包括), int
toIndex(不包括))
将指定的类型数组所有元素按数字升序进行排序。
l
自定义对象排序
自定义类实现Comparable接口
重写compareTo方法
binarySearch -使用二分搜索算法搜索指定数组
public static int binarySearch(type[] a, type key)
public static int binarySearch(long[] a,int fromIndex,int
toIndex,long key)
●
参数:
a - 要搜索的数组。
key - 要搜索的值。
fromIndex - 要排序的第一个元素的索引(包括)。
toIndex - 要排序的最后一个元素的索引(不包括)。
●
如果key在数组中,则返回搜索值的索引;否则返回负数,表示不存在
●
copyOf方法
●
数组复制,将指定数组中的元素复制到一个指定长度的新数组中,并返回
新数组.
●
static int[] copyOf(int[] a, int newLength)
●
fill方法
●
将指定的int值分配给指定的int数组的每个元素。
●
fill(int[] a, int val)
toString() 方法
●
public static String toString(type[] a)
●
返回指定数组内容的字符串表示形式。
基本数据类型包装类
●
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面
向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设
计类时为每个基本数据类型设计了一个对应的类进表示,这样八个和基
本数据类型对应的类统称为包装类.
●
包装类(如:Integer,Double等)这些类封装了一个相应的基本数据
类型数值,并为其提供了一系列操作方法。
![](https://img-blog.csdnimg.cn/direct/3d78c7edda154c77b8369679503244da.png)
对于包装类来说,这些类的用途主要包含两种:
●
作为和基本数据类型对应的类类型存在。
●
包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操
作方法。
●
包装类常用属性方法
●
以下方法以
java.lang.Integer
为例
public static final int MAX_VALUE
最大的
int
型数(
2
31
-1
)
public static final int MIN_VALUE
最小的
int
型数(
-2
31
)
构造方法
Integer(int a);
Integer(String a);
比较方法
static int compareTo(Integer a);
boolean equals(Object);
int max(int a,int b);
int min(int a,int b);
转换方法
static toBinaryString(int i);
static String toHexString(int i);
static String toOctalString(int i);
int intValue();
static int parseInt(String s);
String toString();
static Integer valueOf(int i)
static Integer valueOf(String s)
●
装箱和拆箱Auto-boxing/unboxing
●
装箱
自动将基本数据类型转换为包装器类型
装箱的时候自动调用的是Integer的valueOf(int)方法
●
拆箱
自动将包装器类型转换为基本数据类型
拆箱的时候自动调用的是Integer的intValue方法
![](https://img-blog.csdnimg.cn/direct/a4f059a449144174ad3ccecb7381d2ea.png)
String类
●
String类概述
字符串是由多个字符组成的一串数据(字符序列)的字符串常量,java中所有字
符串都是String类的实例.
●
有两种创建形式:
●
第一种:
String s = "abc";
先在栈中创建一个对String类的对象引用变量s,然后去字符串常量池中查找
有没有"abc", 如果没有则在常量池中添加”abc”, s引用变量指向常量池中
的”abc”,如果常量池中有,则直接指向改地址即可,不用重新创建.
●
第二种:
一概在堆中创建新对象,值存储在堆内存的对象中。
String s = new String("abc");
●
构造方法
public String()
public String(String str)
public String(byte[] bytes)
public String(char[] value)
●
判断功能
boolean equals(Object obj)
boolean equalsIgnoreCase(String str)
boolean contains(String str)
boolean isEmpty()
boolean startsWith(String prefix)
boolean endsWith(String suffix)
●
获取功能
int length()
char charAt(int index)
int indexOf(String str)
int indexOf(String str,int fromIndex)
String substring(int start)
String substring(int start,int end)
●
转换功能
byte[] getBytes()
char[] toCharArray()
static String valueOf(char[] chs)
String toLowerCase()
String toUpperCase()
String concat(String str)
Stirng[] split(分割符);
●
替换功能
String replace(char old,char new)
String replace(String old,String new)
replaceAll(String regex, String replacement)
replaceFirst(String regex, String replacement)
● 去除字符串两空格
String trim()
StringBuffer类
● StringBuffer
类概述
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的
String
对象,既耗时,又浪费空间。而
StringBuffer
就可以解决这个问题
线程安全的可变字符序列
● StringBuffer
和
String
的区别
?
●
构造方法
public StringBuffer()
public StringBuffer(String str)
●
添加功能
public StringBuffer append(String str)
public StringBuffer insert(int offset,String str)
●
删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)
●
替换功能
public StringBuffer replace(int start,int end,String str)
●
反转功能
public StringBuffer reverse()
●
截取功能
public String substring(int start)
public String substring(int start,int end)
●
截取功能和前面几个功能的不同
返回值类型是
String
类型,本身没有发生改变
● StringBuilder
类功能和
StringBuffer
功能完全一致
, StringBuffer
是线程
安全的
String
类
StringBuffer
类
StringBuilder
区别
● String
:是字符常量
,
适用于少量的字符串操作的情况
● StringBuilder
:适用于单线程下在字符缓冲区进行大量操作的情况
● StringBuffer
:适用多线程下在字符缓冲区进行大量操作的情况
Math类
● java.lang.Math
提供了一系列静态方法用于科学计算;其方法的参数和
返回值类型一般为
double
型。
abs
绝对值
sqrt
平方根
pow(double a, double b) a
的
b
次幂
max(double a, double b)
min(double a, double b)
random()
返回
0.0
到
1.0
的随机数
long round(double a) double
型的数据
a
转换为
long
型(四舍五入)
Random类
●
Random类概述
此类用于产生随机数
●
构造方法
public Random()
l
成员方法
public int nextInt()
public int nextInt(int n)
Date类/Calendar类/ SimpleDateFormat类
●
Date类
●
使用Date类代表当前系统时间
Date d = new Date();
Date d = new Date(long d);
Calendar类
●
Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建
对象的过程对程序员来说是透明的,只需要使用getInstance方法创建
即可。
Calendar c1 = Calendar.getInstance();
c1.get(Calendar. YEAR);
●
SimpleDateFormat 日期格式化类
●
构造方法
SimpleDateFormat(格式); // yyyy-MM-dd
●
日期转字符串
Date now=new Date();
myFmt.format(now);
●
字符串转日期
myFmt.parse(“2018-02-10”);
字符串日期格式与 指定格式必须一致
例如:String s = “2018-03-15”;
new SimpleDateFormat(“yyyy-MM-dd”)
BigInteger
●
在 Java 中,有许多数字处理的类,比如 Integer类,但是Integer类有一定的局限性。
●
我们都知道 Integer 是 Int 的包装类,int 的最大值为 2^31-1。若希望描述更大的
整数数据时,使用Integer 数据类型就无法实现了,所以Java中提供了BigInteger 类。
●
BigInteger类型的数字范围较Integer,Long类型的数字范围要大得多,它支持任意
精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而
不会丢失任何信息。
●
BigInteger类位于java.math包中
●
构造方法
BigInteger(String val) /BigInteger(byte[] val) ...
基本运算方法
add(),subtract(),multiply(),divide()
BigDecimal
●
在计算机中float 还是double都是浮点数,而计算机是二进制的,浮点数会失
去一定的精确度。
●
根本原因是:十进制浮点值没有完全相同的二进制表示形式;十进制浮点值的二进
制表示形式不精确,只能无限接近于那个值.
System.out.println((0.1 + 0.2)==0.3);//结果是?
但是,在项目中,我们不可能让这种情况出现,特别是金融项目,因为涉及金
额的计算都必须十分精确,你想想,如果你的支付宝账户余额显示
193.99999999999998,那是一种怎么样的体验?
•
Java在java.math包中提供的API类BigDecimal
•
构造方法
BigDecimal(String val)
基本运算方法
add(),subtract(),multiply(),divide()