目录
JavaAPI概述
基本数据类型包装类
装箱
拆箱
Object类
toString方法
equals方法
Arrays类
String类
StringBuffer类
Math类
Random类
Date类/Calendar类/ SimpleDateFormat类
Date类
Calendar类
SimpleDateFormat日期格式化类
BigInteger类
BigDecima类
JavaAPI概述
API(Application Programming Interface)应用程序编程接口,是对java预先定义的类或接口功能和函数功能的说明文档,目的是提供给开发人员进行使用帮助说明。
基本数据类型包装类
Java语言是一个面向对象的语言,但Java中的基本数据类型却不是面向对象,导致在使用时会产生很多不便,为解决此问题,在设计类时为每个基础数据类型设计相对应的类进行代表,将八个基本数据类型于此相对应,统称为包装类。
对于包装类而言,用途主要有两种:
- 作为和基本数据类型对应的类类型存在
- 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操 作方法
装箱
- 自动将基本数据类型转换为包装器类型
- 装箱的时候自动调用的是Integer的valueOf(int)方法
拆箱
- 自动将包装器类型转换为基本数据类型
- 拆箱的时候自动调用的是Integer的intValue方法
Object类
Object类是所有Java类的祖先(根基类)。每个类都使用 Object 作为 超类(父类)。所有对象(包括数组)都实现这个类的方法。
如果在类的声明中未使用extends关键字指明其基类,则默认基类为 Object类
public class Person { ... }
// 等价于
public class Person extends Object {... }
toString方法
Object类中定义有public String toString()方法,其返回值是 String 类型,描述当前对象的有关信息。
可以根据需要重写方法
int[] a=new int[5];
String mm=new String(Arrays.toString(a));
equals方法
Object 的 equals 方法 定义为:x.equals ( y ) ,当 x 和 y是同一 个对象的引用时返回 true 否则返回 false
String a1=new String();
System.out.println(a1.equals(mm));
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(不包括)) 将指定的类型(除boolean以外的任意原生数据类型)数组所有元素(或指定范 围内的元素)按数字升序进行排序。 object型数组,根据元素的自然顺序,对指定对象数组进行升序排序。 (fromIndex==toIndex,则排序范围为空)
- 自定义对象排序 自定义类实现Comparable接口 重写compareTo方法
binarySearch 使用二分搜索算法搜索指定数组
- 声明: public static int binarySearch(type[] a, type key) public static int binarySearch(long[] a,int fromIndex,int toIndex,long key)
- 描述: 使用二分搜索算法搜索指定的type型数组,以获得指定的值。
- 参数: a - 要搜索的数组。 key - 要搜索的值。 fromIndex - 要排序的第一个元素的索引(包括)。 toIndex - 要排序的最后一个元素的索引(不包括)。 type -byte、double、float、object、long、int、short、char
- 如果key在数组中,则返回搜索值的索引;否则返回-1或者”-“(插入点)
toString() 方法
- 声明:public static String toString(type[] a)
- 描述:返回指定数组内容的字符串表示形式。
- 基本数组,字符串表示形式由数组的元素列表组成,括在[],相邻元素 用“ , ”(逗号加空格)分隔
String类
字符串是由多个字符组成的一串数据(字符序列)的字符串常量,java中所有字 符串都是String类的实例
创建形式:
第一种:
String a = "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(分割符);
StringBuffer类
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String 对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题 线程安全的可变字符序列
StringBuffer和String的区别:
/*
测试String与StringBuffer的性能区别
先使用String连接1000000个字符串,计算消耗的时间
String s = "a";
s+="1";
再使用StringBuffer连接1000000个字符串,计算各自消耗的时间
对比在大量字符串内容拼接的性能.
*/
String str=new String("a");
long start =System.currentTimeMillis();
for(int i=0;i<10000;i++) {
str += "第"+i;
}
long end =System.currentTimeMillis();
long s=end-start;
System.out.println("String需要"+s+"ms");
StringBuffer str2=new StringBuffer("b");
long start1 =System.currentTimeMillis();
for(int j=0;j<10000;j++) {
str2.append("第" + j);
}
long end1 =System.currentTimeMillis();
long s2=end1-start1;
System.out.println("StringBuffer需要"+s2+"ms");
/**
* String为字符串常量,创建之后就无法更改,每增加一次就会新创一个;StringBuffer为字符串变量,可以随时改变;
*/
//添加功能
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)
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类
用于产生随机数
成员方法
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()
BigDecima类
在计算机中不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去 一定的精确度。
根本原因是:十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可 能不精确。只能无限接近于那个值. double a = 1.0-0.9; double b = 0.8-0.7; System.out.println(a==b); // 结果?
但是,在项目中,我们不可能让这种情况出现,特别是金融项目,因为涉及金额的计算 都必须十分精确,你想想,如果你的支付宝账户余额显示193.99999999999998,那是 一种怎么样的体验? Java在java.math包中提供的API类BigDecimal
构造方法
BigDecimal(String val)
基本运算方法
add(),subtract(),multiply(),divide()