API
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节
JavaAPI的常用类
Object
所有类的基类,所有类都直接或者间接的继承Object类
构造方法是 public Object()
注:子类的构造方法默认访问的是父类的无参构造方法
常用方法:
方法名 | 作用 | 返回值 |
hashCode() | 获取对象hash值 | int |
toString() | 将对象信息变为字符串返回 | String |
equals(Object obj) | 判断两个内存地址是否一样 | boolean |
getClass() | 获取类名 | Object |
String
String是由多个字符组成的,也可以看作是字符数组
构造方法:
常用方法:
方法名 | 作用 | 返回值 |
isEmpty() | 判断是否为空 | boolean |
length() | 取到该String的长度 | int |
equals(Object obj) | 判断两个字符串是否相等 | boolean |
equalsIgnoreCase(String as) | 不区分大小写比较 | Object |
charAt(int index) | 返回该下标的char | char |
substring(int start) | 截取字符串下标从start开始 | String |
substring(int start,int end) | 截取区间字符串从start开始到end结束(包头不包尾) | String |
replace(char old,char new) | 替换字符串 | String |
trim() | 去掉字母首尾空格 | String |
类型转换功能:
String的注意事项
String是一个用final修饰过的引用数据类型,他的值一旦创建便不能修改。String直接用””创建对象会放到常量池中。用””号创建会先去常量池中寻找,如果有就直接返回如果没有再进行创建。String直接用构造函数来创建对象,对象不会放到常量池中而是会放在内存堆里面。
String每次修改字符的时候都会从新创建一个对象那么就会造成内存空间被不必要的占用。那么我们可以使用StringBuffer来解决这个问题
StringBuffer
StringBuffer是用来解决String更改字符串造成的时间浪费和空间浪费的
常用方法:
方法名 | 作用 | 返回值 |
append(String str) | 追加字符串 | StringBuffer |
insert(int offset,String str) | 指定位置追加字符串 | StringBuffer |
deleteCharAt(int index) | 删除下标处的字符 | StringBuffer |
delete(int start,int end) | 删除下标区间的字符 | StringBuffer |
replace(int start,int end,String str) | 替换区间字符 | StringBuffer |
reverse() | 反转字符串 | StringBuffer |
substring(int start,int end) | 截取区间字符串从start开始到end结束(包头不包尾) | String |
substring(int start) | 截取字符串 | String |
String和StringBuffer的区别
内存操作不同
String是每次进行更改都会产生一个新的对象。StringBuffer不会产生新的对象而是在原有的对象上进行更改
包装类
java中的数据类型int,double等不是对象,无法通过向上转型获取到Object提供的方法,而像String却可以,只因为String是一个对象而不是一个类型。基本数据类型由于这样的特性,导致无法参与转型,泛型,反射等过程。为了弥补这个缺陷,java提供了包装类。
包装类的实现
java为我们提供了基本数据类型的包装类,这些包装类分为两类,一种是对象型包装类,不继承任何其他类(Object的直接子类),另一种是数值型包装类,继承于Number类。
装箱与拆箱
装箱:
把基本数据类型封装成包装类
拆箱:
将包装类中包装的基本数据类型数据取出。
Integer i = new Inreger(1);//装箱
Integer i = 1;//自动装箱
i += 1;自动拆箱,通过intValue方法
ps:在java1.5之后才可以自动装箱,拆箱
自动装箱的内存复用
生成的Integer实例化对象是由 IntegerCache.cache() 方法产生,它会复用已有对象。
cache()方法会将位于-128~127范围内产生的Integer对象入池
所以,在这个数值区间内的 Integer对象的栈指向可以直接使用==进行判断,因为值相同,指向的就是同一片区域。但是这个区间之外的所有数据,自动装箱都会在堆上产生实例化,并不再复用已有对象,推荐使用 equals 方法进行Integer的判断。
Integer的常用方法
方法名 | 作用 | 返回值 |
intValue() | 转换成int | int |
parseInt(String s) | String转换成int | int |
valueOf(String s | String转换成Integer | Integer |
String toBinaryString(int i) | 转换成2进制 | String |
toOctalString | 转换成8进制 | String |
toHexString(int i) | 转换成16进制 | String |
toHexString(int i) | 十进制到其他进制 | String |
parseInt(String s,int radix) | 其他进制到十进制 | int |
character的常用方法
方法名 | 作用 | 返回值 |
isUpperCase(char ch) | 判断指定字符是否为大写字母 | boolean |
isLowerCase(char ch) | 判断指定字符是否为小写字母 | boolean |
isDigit(char ch) | 如果字符串中只含有数字则返回True | boolean |
toUpperCase(char ch) | 将小写字符转换为大写 | char |
toLowerCase(char ch) | 将大写字符转换为小写 | char |
java.util
util类是java为我们提供的一整套工具类。其中包含,获取时间,时间的格式转换,数字的运算,接收用户输入,生成随机数等。
Math
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数
常用方法:
方法名 | 作用 | 返回值 |
abs(int a) | 取绝对值 | int |
ceil(double a) | 返回最小值 | double |
floor(double a) | 返回最大值 | double |
max(int a,int b) | 取最大值 | int |
pow(double a,double b) | 求幂 | double |
random() | 随机数 | double |
round(float a) | 四舍五入成整数 | int |
sqrt(double a) | 求double值的正平方根 | double |
Date
构造方法
常用的方法
public long getTime()//获取时间
public void setTime(long time)//设置时间
Calendar
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法
常用的方法
方法名 | 作用 | 返回值 |
getInstance() | 获取日期 | Calendar |
get(int field) | 获取年/月/日/时/分/秒 | int |
add(int field,int amount) | 计算时间 | void |
set(int year,int month,int date) | 设置时间 | void |
Random
此类用于产生随机数
如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
常用的方法:
方法名 | 作用 | 返回值 |
nextInt() | 生产一个随机数 | int |
nextInt(int n) | 生成一个0~n之间的随机数 | int |