Java API概述 :API(Application Programming Interface)应用程序编程接口
1.是对java预先定义的类或接口功能和函数功能的说明文档,目的是提供给开发人员进行使用帮助说明.
2.本章会学习java提供的一些基础常用类,以便后期学习需要.
3.后面的章节以具体模块化学习为主,本质就是学习java中提供的类的功能.
一、基本数据类型包装类
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类.
包装类(如:Integer,Double等)这些类封装了一个相应的基本数据
类型数值,并为其提供了一系列操作方法。
基本数据类型封装类
![](https://i-blog.csdnimg.cn/blog_migrate/bad0961d547cc58d39ed23da32ffc27a.png)
对于包装类来说,这些类的用途主要包含两种:
1.作为和基本数据类型对应的类类型存在。
2.包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。
包装类常用属性方法
以下方法以java.lang.Integer为例:
public static final int MAX_VALUE 最大的int
型数
public static final int MIN_VALUE 最小的
int
型数
构造方法
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)
装箱和拆箱
装箱:
自动将基本数据类型转换为包装器类型
装箱的时候自动调用的是Integer的valueOf(int)方法
拆箱:
自动将包装器类型转换为基本数据类型
拆箱的时候自动调用的是Integer的intValue方法
int a = 12;
Integer b = Integer.valueOf(a); //装箱
int c = b.intValue();//拆箱
int a1 = 12;
Integer b1 = a1; //自动装箱
int c = b; //自动拆箱
二、Object类
Object类是所有Java类的祖先(根基类)。每个类都使用 Object 作为超类(父类)。所有对象(包括数组)都实现这个类的方法。
如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
public class Person {
...
}
等价于:
public class Person extends Object {
...
}
toString方法
Object类中定义有public String toString()方法,其返回值是 String 类型,描述当前对象的有关信息。
在进行String与其它类型数据的连接操作时(如: System.out.println(“info”+person)),将自动调用该对象类的 toString()方法
可以根据需要在用户自定义类型中重写toString()方法。
equals方法
Object
类中定义有: public boolean equals(Object obj)方法
提供定义对象是否“相等”的逻辑。
Object
的
equals
方法 定义为:
x.equals ( y )
,当
x
和
y
是同一个对象的引用时返回 true
否则返回
false
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(
不包括
))
将指定的类型(除
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类
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类(多线程)和StringBuilder类(单线程)
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是线程
安全的
六、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
型(四舍五入)
七、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都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。
根本原因是 : 十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可 能不精确。只能无限接近于那个值.
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()