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(不包括)) 将指定的类型数组所有元素按数字升序进行排序。
自定义对象排序 自定义类实现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等)这些类封装了一个相应的基本数据 类型数值,并为其提供了一系列操作方法
对于包装类来说,这些类的用途主要包含两种:
● 作为和基本数据类型对应的类类型存在。
● 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操 作方法。
//转换方法
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方法
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就可以解决这个问题 线程安全的可变字符序列
//构造方法
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()
StringBuffer类
// 截取功能
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()
// 成员方法
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()