JAVA常用API
Java常用APIString、StringBuilder、Math、System、Object、Objects、BigDecimal等
JAVA中常用的API(持续更新)
前言
API(Application Programming Interface,应用程序编程接口)是一些预先定义的接口,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节(来自百度百科)。
看完百度百科对API的解释,总结一下:API是程序的接口, 里面封装着各种功能的 Java类。
正文
1. API文档使用
API文档下载:地址
简单说来,API就是一个帮助文档,它可以让你快速地了解到你想了解的java类及其属性和方法。
如图:
在文档中,你可以通过索引,精准查询并定位到你想详解的那个类。
2. JAVA常用API
2.1 String类(java.lang.String)
String类代表字符串, Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。
字符串不变,它们的值在创建后不能被更改(String是一个类,是引用数据类型,而引用数据类型的变量存放的是对象的地址值,所以,这里不能改变的字符串值,指的是对象,String类的变量内容可以更改,因为它存的是对象的地址值)。
注意:
对象改变:改变的是对象的内容 ,修改了堆内存中对象的内容 (如数组中存放的值)
变量改变: 改变的是变量记录的地址值, 即改变的是栈内存中变量的值
举例:
String s = new String(“abc”);
这里等号左边的s是一个引用数据类型的变量,在栈内存中,它存放的是等号右边new出来的String类型的对象的地址值,这个对象在堆内存中。
String类常用的构造方法:
方法名 | 解释 |
---|---|
public String() | 默认无参构造,初始化新创建的 String对象,以使其表示空字符序列。 |
public String(char[] chars) | 带参构造,参数为字符数组,分配一个新的 String以便它表示当前包含在字符数组参数中的字符序列。 |
public String(String s) | 带参构造,初始化新创建的String对象,使其表示与参数相同的字符序列; 换句话说,新创建的字符串是参数字符串的副本(即这创建了两个对象)。 |
除却上述构造方法外,创建String对象最直接的方式 :
String s = “abc”;
Java程序中的所有字符串文字(例如"abc" )都会被实现为String的实例,在这里,abc是字符串常量,存放在堆内存中的字符串常量池中。
使用演示:
//以无参构造创建字符串对象,值为空的(注意,不是关键字null)
String s = new String();
//以字符数组为参数,创建字符串对象
char[] chars = {'a', 'b', 'c'};
String s1 = new String(chars);
//以字符串对象为参数,创建一个新的字符串对象
String s2 = new String(new String("张三"));
System.out.println(s);
System.out.println(s1);
System.out.println(s2);
打印结果:
String类的常用方法(注意,这里列出的只是常用方法,API文档中除却这些方法外还有很多):
方法名 | 解释 |
---|---|
public char charAt(int index) | 返回指定索引处的 char值。 |
public boolean equals(Object anObject) | 将此字符串与指定对象进行比较。 (注意,左边是字符串,右边是对象,返回boolean结果) |
public boolean equalsIgnoreCase(String anotherString) | 将此 String与另一个 String比较,忽略大小写(注意,这里是将一个字符串与另一个字符串比较,且忽略大小写) |
public int length() | 返回字符串的长度。 |
public String replace(char oldChar, char newChar) | 用newChar替换字符串中出现的所有oldChar(注意,原字符串不会发生改变,这里会返回一个新的字符串)。 |
public String replace(charSequence old, charSequence new) | 用new字符序列替换字符串中的old字符序列,返回一个新的字符串(原字符串不发生改变)。 |
public String[] split(String reg) | 用指定字符串规则reg切割字符串,返回一个字符串数组。 |
public String substring(int beginIndex, int endIndex) | 截取一段字符串,从索引beginIndex开始,到endIndex结束 |
public String substring(int beginIndex) | 截取一段字符串,从beginIndex开始一直到末尾。 |
public char[] toCharArray() | 将此字符串转换为新的字符数组。 |
2.2 StringBuilder类(java.lang.StringBuilder)
StringBuilder,一个可变的字符序列。
它与String最大的区别:String不可变,而StringBuilder可变。
StringBuilder常用构造方法:
方法名 | 解释 |
---|---|
public StringBuilder() | 构造一个没有字符的字符串构建器,初始容量为16个字符,可自动变大。 |
public StringBuilder(String str) | 构造一个初始化为指定字符串内容的字符串构建器。 |
StringBuilder的常用方法:
方法名 | 解释 |
---|---|
public StringBuilder append(String str) | 将指定的字符串附加到此字符序列(原字符串也会受影响)。 |
public StringBuilder reverse() | 返回相反的字符序列(注意,原字符串也会受影响) |
public int length() | 返回字符串的长度。 |
public String toString() | 返回表示此顺序中的数据的字符串(即将StringBuilder转为String)。 |
注意:StringBuilder的append()方法是一个重载方法,如图:
另外需要注意:
1.StringBuilder类对象可变,比如当一个StringBuilder类对象使用append或者reverse方法时,即便方法会返回结果,但是这个对象的内容也会跟着改变!!
而String类对象不会变,当一个String类对象调用String类的方法,方法会返回一个结果,但这个String对象的内容不会发生任何改变,
2.String类对象的拼接操作,底层原理是使用StringBuilder的append方法。(步骤是先将String对象转为StringBuilder对象,然后调用StringBuilder的append方法,最后再调用StringBuilder的toString方法将StringBuilder对象转为String对象,完成拼接操作!)
StringBuilder sb = new StringBuilder(String s);//将String对象转为StringBuilder对象
sb.append(String s1);//调用StringBuilder的append方法
String s2 = sb.toString;//调用StringBuilder的toString方法将StringBuilder对象转为String对象
2.3 Math类(java.lang.Math)
Math类中包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。
查看Math类源码,如图:
源码中表示: Math类的构造方法是私有的,所以不允许创建Math类对象,但Math类中所有的公共方法都是静态的,可以通过类名.方法名()调用。
方法名 | 说明 |
---|---|
public static int abs(int a) | 返回参数的绝对值 |
public static double ceil(double a) | 返回大于或等于参数的最小double值,等于一个整数(将参数向上取整,注意,即便取整了但结果依旧是小数,比如11.0) |
public static double floor(double a) | 返回小于或等于参数的最大double值,等于一个整数(将参数向下取整,注意,即便取整了但结果依旧是小数,比如11.0) |
public static int round(float a) | 按照四舍五入返回最接近参数的int |
public static int max(int a,int b) | 返回两个int值中的较大值 |
public static int min(int a,int b) | 返回两个int值中的较小值 |
public static double random() | 返回值为double的正值,[0.0,1.0)(范围是大于等于0.0,小于1.0) |
测试代码:
//Math m = new Math(); Math类的构造方法被private修饰,所以无法创建Math类对象
System.out.println(Math.abs(-10));//打印参数的绝对值
System.out.println(Math.ceil(10.4));//打印参数向上取整的结果
System.out.println(Math.floor(10.4));//打印参数向下取整的结果
System.out.println(Math.round(10.4));//打印参数四舍五入的结果
System.out.println(Math.round(10.6));//打印参数四舍五入的结果
System.out.println(Math.max(5, 7));//打印两个int值的较大值
System.out.println(Math.min(11, 99));//打印两个int值的较小值
System.out.println(Math.pow(3.0, 2.0));//打印 3.0 的2次幂
System.out.println(Math.random());//打印随机数,大于等于0.0,小于1.0
测试结果:
注意:有些方法实现了重载(即参数有多种),如图:
2.4 System类(java.lang.System)
System类包含几个有用的类字段和方法,它不能被实例化,但可以使用类名.方法名的方式调用静态方法。
System类提供的设施包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 一种加载文件和库的方法; 以及用于快速复制阵列的一部分的实用方法。
System类的常用方法:
方法名 | 描述 |
---|---|
public static void exit(int status) | 终止当前运行的 Java 虚拟机,非零表示异常终止 |
public static long currentTimeMillis() | 返回当前时间(以毫秒为单位) |
小知识:System.exit(0)可以在循环中用来结束死循环(当然程序也会结束)
2.5 Object(java.lang.Object)
Object类是类层次结构的根。
每个类都有Object作为超类。 所有对象(包括数组)都实现了这个类的方法。
Object类的常用方法:
方法名 | 描述 |
---|---|
public String toString() | 返回对象的字符串表示形式 |
public boolean equals(Object obj) | 指示一些其他对象是否等于此(即作为参数的对象是否与方法调用的对象是一同一个对象)。 |
注意:
Object类的toString方法返回的是一个等于下列值的字符串(即类名@地址值):
getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
所以,建议重写这个方法!(IDEA中 alt + insert键可快速重写)
2.6 Objects(java.util.Objects)
Objects 对象(Object)工具类,构造方法静态,无法被实例化,但可以使用类名.方法名调用方法。
此类由static用于在对象上操作的实用方法或在操作之前检查某些条件。 这些实用程序包括用于计算对象的哈希码,返回对象的字符串,比较两个对象以及检查索引或子范围值是否超出范围的null或null - null方法。
Objects类的常用方法:
方法名 | 描述 |
---|---|
static String toString(Object o) | 返回非 null参数调用 toString的结果和 null参数的 "null"的 null 。 |
static String toString(Object o, String nullDefault) | 如果第一个参数不是 null ,则返回第一个参数上调用 toString的结果,否则返回第二个参数(即当对象为null时给个默认值)。 |
static boolean isNull(Object obj) | 返回 true如果提供的引用是 null,否则返回 false 。 |
static boolean nonNull(Object obj) | 返回 true如果提供的参考是非 null,否则返回 false 。 |
注意事项:
1.当一个对象为null,调用Object类的toString()方法,会报空指针异常。但使用Objects的toString()方法并不会,它会打印一个null。
如图:
Student student1 = null;
Object o = student1;//空指针异常注意
Student sss = null;
String s2 = Objects.toString(sss);//这个并不会报异常,他会返回null
System.out.println(s2);
o.toString();//当对象为Null会报空指针异常,而Objects.toString(空对象)不报异常
2.当一个对象为null,且使用Objects.toString(空对象,默认值),原对象内容不变(依旧为null)
如图:
Student student = null;
String s = Objects.toString(student, "空了,我给它默认值");//返回结果字符串,但原对象内容不变
System.out.println(s);//student对象为null,所以给默认值
// 一个对象为null,即便使用toString(Object,"")给它赋默认值,但用isNull判断依旧为null
System.out.println(Objects.isNull(student));//isNull方法判断对象是否为空,结果ture
System.out.println(Objects.nonNull(student));//nonNull方法判断对象是否不为空,结果false
2.7 BigDecimal(java.math.BigDecimal)
BigDecimal类,用来对超过16位有效位的数进行精确的运算。
在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。
BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。
常用构造方法(重载):
方法名 | 描述 |
---|---|
BigDecimal(int val) | 将 int翻译成 BigDecimal 。 |
BigDecimal(double val) | 将 double转换为 BigDecimal ,它是 double的二进制浮点值的精确十进制表示。 |
BigDecimal(long val) | 将 long翻译成 BigDecimal 。 |
BigDecimal(String val) | 将 字符串表示转换为 BigDecimal 。 |
注意:建议使用String形参的构造方法!!不建议使用double形参的构造方法,因为其有一定的不可预知性,即给定一个double值,在计算机中其展示出来的可能不是你原来给定的那样精确的值。
如图:
BigDecimal num1 = new BigDecimal(15);//int形参
System.out.println(num1);
BigDecimal num2 = new BigDecimal(15L);//long形参
System.out.println(num2);
BigDecimal num3 = new BigDecimal(159.68);//double形参,给的是159.68,但结果不一样
System.out.println(num3);
BigDecimal num4 = new BigDecimal("15");//String形参
System.out.println(num4);
经过测验,参数类型为double的构造方法的结果有一定的不可预知性!而String类型却是完全可知的(你给他什么数字,他就是什么),所以建议使用String类型的形参。
前面讲过,BigDecimal创建的是对象,而对象是不能使用±*/这样的符号来进行计算的,所以BigDecimal对象要想实现计算,需要使用这个类的方法。
BigDecimal常用方法:
方法名 | 描述 |
---|---|
public BigDecimal add(BigDecimal augend) | 加法 |
public BigDecimal subtract (BigDecimal augend) | 减法 |
public BigDecimal multiply (BigDecimal augend) | 乘法 |
public BigDecimal divide (BigDecimal augend) | 除法 |
public BigDecimal divide (BigDecimal augend,精确几位,舍入模式) | 除法(当除不尽时使用) |
使用示例:
//构造方法重载了,但常用String形参的构造方法创建,因为更精确
BigDecimal bd1 = new BigDecimal("0.17");
BigDecimal bd2 = new BigDecimal("0.3");
System.out.println(bd1.add(bd2));
System.out.println(bd1.subtract(bd2));
System.out.println(bd1.multiply(bd2));
//System.out.println(bd1.divide(bd2));当除不尽时会报错 ArithmeticException 算数异常
//用三个参数的divide方法 divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
//第二个参数表示精确的范围即小数点后几位,第三个参数可以设置进位模式等
System.out.println(bd1.divide(bd2, 5, RoundingMode.DOWN));
注意:除法计算时,如果除不尽,要使用带三个参数的divide,如果用一个参数的divide会报算数异常
三个参数的divide方法中,第三个参数进位模式:
CEILING 圆形模式向正无穷大转弯。
DOWN 舍入模式向零舍入。
FLOOR 舍入模式向负无穷大转弯。
HALF_DOWN 四舍五入模式向“最近邻居”转弯,除非这两个邻居都是等距离的,在这种情况下,这是倒圆的。
HALF_EVEN 四舍五入模式向“最近邻居”转弯,除非这两个邻居都是等距离的,在这种情况下,朝向偶数邻居。
HALF_UP 四舍五入模式向“最近邻居”转弯,除非两个邻居都是等距的,在这种情况下是圆括弧的。
UNNECESSARY 舍入模式来确定所请求的操作具有精确的结果,因此不需要舍入。
UP 舍入模式从零开始。
更多推荐
所有评论(0)