Java常用API
创始人
2024-03-24 01:33:27

Java常用API

  • 什么是API?
  • Object类的作用:
  • Object类的常用方法:
    • Object的toString方法:
    • Obiect的equals方法
  • Obiects
  • StringBuilder
  • Math
  • System类概述
  • BigDecimal

什么是API?

1.API应用程序编程接口。
2.简单来说:就是Java帮我们已经写好的一些方法,我们直接拿过来就可以了。

Object类的作用:

1.一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类。
2.Obiect类的方法是一切子类都可以直接使用的,所以我们要学习Object类的方法。

Object类的常用方法:

Object的toString方法:

在这里插入图片描述
在这里插入图片描述
问题引出:
1.开发中直接输出对象,默认输出对象的地址其实是毫无意义的。
2.开发中输出对象变量,更多的时候是希望看到对象的内容数据而不是对象的地址信息。
toString存在的意义
父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息!

在这里插入图片描述

Obiect的equals方法

在这里插入图片描述
直接比较两个对象的地址是否相同完全可以用“==”代替equals。
在这里插入图片描述
equals存在的意义:父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则。
在这里插入图片描述

Obiects

Obiects类与Object还是继承关系,Objects类从JDK1.7开始之后才有的。
官方在进行字符串比较时,没有对象自己的equals方法,而是选择了Objects的equals方法来比较两个对象。

在这里插入图片描述
Objects的equals方法比较的结果是一样的,但是更安全。
Objects的常见方法:
在这里插入图片描述

package snow.d10_api_Objects;
import java.util.Objects;public class Test {public static void main(String[] args) {String s1 = "snow";String s2 = "snow";// System.out.println(s1.equals(s2)); // String类型中从写的equals方法会发生空指针异常System.out.println(Objects.equals(s1, s2));// 源码分析/**public static boolean equals(Object a, Object b) {return (a == b) || (a != null && a.equals(b));}*/}
}

StringBuilder

StringBuilder是一个可变的字符串类,我们可以把它看成一个对象容器。
StringBuilder作用:提高字符串的操作效率,如拼接、修改等。

StringBuilder构造器:
在这里插入图片描述
StringBuilder常用方法:
在这里插入图片描述
拼接验证:

在这里插入图片描述

package snow.d11_api_stringbuilder;public class StringBuilderDemo1 {public static void main(String[] args) {StringBuilder s = new StringBuilder();s.append('a');s.append(1);s.append(false);s.append(3.3);s.append("abc");System.out.println(s);StringBuilder s1 = new StringBuilder();// 支持链式编程s1.append("a").append("b").append("snow");System.out.println(s1);// 反转s1.reverse().append("123");System.out.println(s1);// 获取长度System.out.println(s1.length());// StringBuilder只是拼接字符串的手段,效率好// 最终的目的还是要恢复成String类型StringBuilder s2 = new StringBuilder();s2.append("123").append("456");// 恢复成String类型String rs = s2.toString();}
}

String类拼接字符串原理图
在这里插入图片描述
首先把main方法加载到栈内存,然后执行main方法中的第一条语句,a进入字符串常量池,然后b也进入常量池,然后把s1拼接起来时,需要在堆内存中实例化一个StringBuilder对象,然后把a和b拼接到StringBuilder对象中,然后通过toString方法把“ab”转为String类型,然后赋值给s2.
在这里插入图片描述
然后c进常量池,在用S2拼接c的时候,同样需要在堆内存中实例化一个StringBuilder对象,然后把ab与c拼接后的abc放入对象中,然后同样经过toString方法转化为String类型,然后赋值给s3,然后输出拼接的对象。
在这里插入图片描述
一个加号,堆内存中两个对象。
StringBuilder提高效率原理图
在这里插入图片描述
首先main方法和clss文件加载到方法区,然后把main方法提取到栈内存中,然后在堆内存中实例化一次对象,然后依次把a,b,c放入字符串常量池然后,最后产生StringBuilder类型的拼接结果。
案例:打印整型数组内容
需求:设计一个方法用于输出任意整型数组的内容,要求输出成如下格式:“该数组内容为:[11,22,33,44,55]”
分析:1.定义一个方法,要求该方法能够接收数组,并输出数组内容。
2.定义一个静态初始化的数组,调用该方法,并传入该数组。

package snow.d11_api_stringbuilder;public class StringBuilderDemo2 {public static void main(String[] args) {int[] arr1 = null;System.out.println(toString(arr1));int[] arr2 = {11,22,33,44};System.out.println(toString(arr2));}// 定义方法接受任意整形数组,返回数组内容格式public static String toString(int [] arr){if (arr != null){// 开始拼接内容StringBuilder s = new StringBuilder("[");for (int i = 0; i < arr.length; i++) {s.append(arr[i]).append(i == arr.length-1 ? "":",");}s.append("]");return s.toString();}else {return null;}}
}

Math

包含执行基本数字运算的方法,Math类没有提供公开的构造器。
如何使用类中的成员呢?看类的成员是否都是静态的,如果是,通过类名就可以直接调用。
Math类的常用方法

在这里插入图片描述

package snow.d12_math;public class MathDemo {public static void main(String[] args) {// 获取绝对值System.out.println(Math.abs(-10));  // 10System.out.println(Math.abs(-10.3));  // 10.3// 向上取整System.out.println(Math.ceil(4.3)); // 5.0// 向下取整System.out.println(Math.floor(4.9)); // 4.0// 求指数次方System.out.println(Math.pow(2, 3)); //2^3 = 8.0// 四舍五入System.out.println(Math.round(4.4)); // 4System.out.println(Math.round(4.5)); // 5// 随机数0.0 - 1.0System.out.println(Math.random());}
}

System类概述

System的功能是通用的,都是直接用类名调用即可,所以System不能被实例化。
System类的常用方法
在这里插入图片描述
时间毫秒值
计算机认为时间是有起点的,起始时间:1970年1月1日 00:00:00
时间毫秒值:指的是从1970年1月1日 00:00:00走到此刻总的毫秒数,应该是很大的,1s=1000ms。

// 计算机认为时间有起源,1970-1-1 00:00:00 走到此刻的总毫秒值,时间毫秒值long time = System.currentTimeMillis();System.out.println(time);

数组拷贝:

/**数组拷贝*arraycopy(Object src,  int  srcPos,* Object dest, int destPos,int length);* 参数一:被拷贝的数组* 参数二:从哪个位置开始拷贝* 参数三:复制目标数组* 参数四:粘贴位置* 参数五:拷贝元素的个数*/int[] arr = {10,20,30,40};int[] arr2 = new int[4]; // [0,0,0,0,0,0]==>[10,20,30,40]System.arraycopy(arr,0,arr2,0,2);System.out.println(Arrays.toString(arr2));

BigDecimal

BigDecimal作用
用于解决浮点型运算精度失真的问题

使用步骤
创建对象BigDecimal封装浮点型数据 (最好的方式是调用方法)

public static BigDecimal valueof(double val): 包装浮点数成为BigDecimal对象。

BigDecima常用API
在这里插入图片描述

package snow.d14_bigdecimal;
import java.math.BigDecimal;public class BigDecimalDemo {public static void main(String[] args) {// 浮点型运算的时候直接+ =/ 可能会出现数据失真(精度问题)System.out.println(0.09 + 0.01); //0.09999999999999999System.out.println(1.0 - 0.32);  //0.6799999999999999System.out.println(1.015 * 100); //101.49999999999999System.out.println(1.301 / 100); //0.013009999999999999System.out.println("----------------");double a = 0.1;double b = 0.2;double c = a + b;System.out.println(c); // 0.30000000000000004System.out.println("----------------");// 包装浮点型数据成为大数据对象BigDeciamlBigDecimal a1 = BigDecimal.valueOf(a);BigDecimal b1 = BigDecimal.valueOf(b);BigDecimal c1 = a1.add(b1);System.out.println(c1); // 0.3// 目的:doubledouble rs = c1.doubleValue();System.out.println(rs); // 0.3// 注意事项:BigDecimal是一定要精度运算的BigDecimal a11 = BigDecimal.valueOf(10.0);BigDecimal b11 = BigDecimal.valueOf(3.0);/*** 参数一:除数* 参数二:保留小数位* 参数三:舍入模式*/BigDecimal c11 = a11.divide(b11,2, RoundingMode.HALF_UP); // 3.33333System.out.println(c11); // 3.33}
}

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...