(十六)一篇文章学会Java的常用API

news/2024/2/21 2:25:43

目录

        前言:

        一、Object:toString+equals

        二、StringBuilder

        三、Math

        四、System

        五、BigDecimal


前言:

        API的主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。API是一种接口,故而是一种抽象。

        应用程序接口(英语:Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。

一、Object:toString+equals

①object常用的方法:

  • 1、public String toString() :返回当前对象在堆内存中的地址

  • 2、public Boolean equals(object o):与另一个对象比较,看两个对象是否相同,默认比较对象的地址!!

②toString存在的意义:

  • 父类toString()方法存在的意义就是为了被子类重写,一边返回对象的内容信息,而不是地址信息!!

  • equals是为了被子类重写,以便子类来制定比较规则

③Object的toString方法的作用是什么?

        默认是打印当前对象的地址;

        让子类重写,以便返回子类对象的内容

④Object的equals方法的作用是什么?

        默认是与另一个对象比较地址是否一样;

        让子类重写,以便比较2个子类对象的内容是否相同。

⑤代码演示:

/**objects*1、与object是继承关系* 1、equals :objects的方法equals 比较结果是一样的,但更安全* (比较两个对象,底层会先进行非空判断,从尔避免空指针异常,再equals比较)* 2、isNull :判断变量是否为null,如果为null则返回true*/
public class object {public static void main(String[] args) {String s1 = null;String s2 = new String("itheima");System.out.println(Objects.equals(s1,s2)); //更安全,结果更正确}
}

⑥案例:

                验证码比较

//String 类提供equals比较:只关心内容一样
/*
public boolean equals(Object anObject)    :将此类字符与指定对象进行比较,只关心字符内容是否一致
public boolean equalsIgnoreCase(String anotherString)     :将此类字符与指定对象进行比较,忽略大小写比较字符串。只关心字符内容是否一致*/
public class StringEqalsDemo {public static void main(String[] args) {String okname = "itheima";String okpassword = "123456";//输入登录密码和名称Scanner sc = new Scanner(System.in);System.out.println("用户名:");String name = sc.next();System.out.println("用户密码:");String password = sc.next();
​//判断用户输入的名称和密码与正确的用户名和密码是否相等if(okname.equals(name) && okpassword.equals(password)){System.out.println("登陆成功!");}else{System.out.println("用户名或密码错误!");}
​
​//忽略大小写比较内容的API:一般用于验证验证码这样的业务逻辑String Syscode = "23AdFh";String code1 = "23aDfH";System.out.println(Syscode.equals(code1));//falseSystem.out.println(Syscode.equalsIgnoreCase(code1));//true}
}

⑦objects

1.objects与object的关系。

        objects与object还是继承关系,objects类是从JDK1.7开始才有的。

        官方在进行字符串比较时,没有对象自己的equals方法,而是选择了Objects的equals方法来比较两个对象。

2.equals :

        objects的方法equals 比较结果是一样的,但更安全(比较两个对象,底层会先进行非空判断,从尔避免空指针异常,再equals比较);

3.isNull :

        判断变量是否为null,如果为null则返回true。

二、StringBuilder

1.概述:

        StringBuilder是一个可变的字符串类,我们可以把它看成是一个对象容器

2.作用:

        提高字符串的操作效率,如拼接和修改等

3.StringBuilder构造器

4.StringBuilder常用方法

5.代码演示:

/*** StringBuilder* 是一个可变的字符串类,我们可以把它看成是一个对象容器* 作用:提高字符串的操作效率,如拼接和修改等*/
public class Test {public static void main(String[] args) {StringBuilder sb = new StringBuilder();sb.append("a");sb.append("b");sb.append("c");System.out.println(sb);
​//机制:链式编程StringBuilder sb1 = new StringBuilder();sb1.append("2").append("c").append("v");System.out.println(sb1);
​//反转sb1.reverse().append("110");System.out.println(sb1);
​System.out.println(sb1.length());//StringBuilder只是拼接字符串的手段,最终结果要恢复成String类型
​StringBuilder sb2 = new StringBuilder();sb2.append("3").append("5").append("7");//恢复成String类型String rs = sb2.toString();check(rs);
​//Testint[] arr1 = null;System.out.println(toString(arr1));
​int[] arr2 = {10,22,44,32};System.out.println(toString(arr2));
​}
​public static String toString(int[] arr) {if (arr != null) {StringBuilder sb3 = new StringBuilder("[");for (int i = 0; i < arr.length; i++) {sb3.append(arr[i]).append(i == arr.length-1 ? "" : ",");}sb3.append("]");return sb3.toString();}else {return null;}}public static void  check(String date) {System.out.println(date);}
​
}

6.总结:

①为什么拼接、反转字符串建议使用StringBuilder?

        String:内容是不可变的、拼接字符串性能差;

        StringBuilder:内容是可变的、拼接字符串性能好、代码优雅。

        定义字符串使用String;

        拼接、反转字符串使用StringBuilder。

7.案例:打印整型数组内容

需求:

        设计一个方法用于输出任意整型数组的内容,要求输出成如下格式:

        "该数组内容为:[11,22,33,44,55]"

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

三、Math

1.概述:

        包含执行基本数字运算的方法,Math类没有提供公开的构造器。

2.Math的常用方法

3.代码演示:

/**Math类常用方法* abs 获取参数绝对值* ceil 向上取整* floor 向下取整* round 四舍五入* max  获取两个int中的较大值* pow(a ,b) 获取a 的b次幂* random  返回随机值*/
public class Math_Test {public static void main(String[] args) {//1.取绝对值:返回正数System.out.println(Math.abs(-10.4));
​//2.向上取整System.out.println(Math.ceil(4.0001));
​//3.向下取整System.out.println(Math.floor(4.9999));
​//4.指数次方System.out.println(Math.pow(2,3));
​//5.四舍五入System.out.println(Math.round(4.990099));
​//6.扩展 获取3~9之间的随机数 ==》 (0~6)+3int data = (int)(Math.random()*7)+3;System.out.println(data);}
}

四、System

1.概述:

        System的功能是通用的,都是直接用类名调用即可,所以System不能被实例化。

2.System类的常用方法

3.代码演示: ​

import java.util.Arrays;
/*** System 功能是通用的,都是用类名调用即可,所以System不能被实例化* 常用方法:* exit  :终止当前运行的Java虚拟机* currentTimeMillis  返回系统时间毫秒形式* arraycopy  数组拷贝*/
public class System_Test {public static void main(String[] args) {//1、System.out.println("程序开始");System.exit(0);System.out.println("程序结束");
​//2、计算机认为时间是有起源的  起始时间:1970年1月1日long time =System.currentTimeMillis();System.out.println(time);
​long startTime =System.currentTimeMillis();//进行时间计算,性能分析for (int i = 0; i < 100000; i++) {System.out.println("输出 :" +i);}long endTime =System.currentTimeMillis();System.out.println((endTime-startTime)/1000+"s");
​//3.数组拷贝/*** arraycopy(Object src,  int  srcPos,* Object dest, int destPos,* int length);* 参数一:被拷贝的数组* 参数二:从哪个索引开始拷贝* 参数三:复制的目标数组* 参数四:粘贴位置* 参数五:拷贝元素的个数*/int[] arr1 = {10,20,30,40,50,60,70};int[] arr2 = new int[6];//{0,0,0,0,0,0}==>[0,0,40,50,60,0]System.arraycopy(arr1,3,arr2,2,3);System.out.println(Arrays.toString(arr2));}
}

五、BigDecimal

1.作用:

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

2.使用步骤:

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

3.BigDecimal常用API

4.代码演示:

import java.math.BigDecimal;
import java.math.RoundingMode;
​
/**BigDecimal* 作用:用于解决浮点型运算精度是真问题* add 加法* subtract 减法* multiply 乘法* divide 除法* 获取对象:BigDecimal b = BigDecimal.valueOf(0.2);*/
public class Test {public static void main(String[] args) {double a = 0.1;double b = 0.2;double c = a+b;System.out.println(c);System.out.println("-------------");BigDecimal a1 = BigDecimal.valueOf(a);BigDecimal b1 = BigDecimal.valueOf(10.0);BigDecimal c1 = a1.add(b1);System.out.println(c1);System.out.println("----------------");/*** 参数一:除数* 参数二:保留小数点的位数* 参数三: 舍入模式*/BigDecimal c11 = a1.divide(b1,2, RoundingMode.HALF_UP);System.out.println(c11);}
}

http://www.ppmy.cn/news/11164.html

相关文章

【Redis】缓存穿透问题及其解决方案

【Redis】缓存穿透问题及其解决方案 文章目录【Redis】缓存穿透问题及其解决方案1. 缓存穿透概念及原因2. 解决方案2.1 缓存空对象2.1.1 缓存空对象的优缺点2.1.2 改进代码2.2 布隆过滤2.2.1 布隆过滤的优缺点1. 缓存穿透概念及原因 缓存穿透&#xff1a;客户端请求的数据在 缓…

软件著作权申请注意事项

​软著申请需要哪些材料 ①企业申请&#xff1a;企业营业执照副本复印件&#xff08;加盖公章&#xff09;、身份证复印件&#xff08;正反面&#xff09;。 个人申请&#xff1a;个人身份证复印件。 ②软件设计/使用说明书文档一份 文档可根据要求提供&#xff0c;可以是软件…

互联网摸鱼日报(2023-01-11)

互联网摸鱼日报&#xff08;2023-01-11&#xff09; InfoQ 热门话题 下一个十年&#xff0c;我们需要一款什么样的分析型数据库&#xff1f; VS Code有多么不安全&#xff1a;一个扩展就可能导致公司GitHub中的所有代码被擦除&#xff1f; OpenJDK提议Galahad项目合并GraalV…

Cesium 点击获取/拾取(PICK)的不同用法

Cesium 拾取有多个方法&#xff0c;下面就分别说明一下几种常用方法都是做什么用的&#xff0c;在什么场景下使用。 1. viewer.scene.pick 通过坐标位置&#xff0c;拾取 Entity 、 Primitive、3D-Tiles&#xff08;Cesium3DTileFeature&#xff09;对象。 例如获取 Entity …

【VUE2-02】vue2的指令和vue2的缺点

文章目录一、vue条件渲染 v-if二、vue循环渲染 v-for三、vue的事件 v-on四、vue的双向绑定 v-model五、VUE2的缺点5.1 vue底层原理解决方案在上节 【VUE2-01】vue2的起步,中写hello world&#xff01;例子的时候使用了一个指令 v-bind绑定元素属性一、vue条件渲染 v-if v-if控…

无需离开 Visual Studio 即可编写 Markdown

当您想要格式化代码但又不想牺牲易读性时&#xff0c;Markdown 是一个很好的解决方案。GitHub 将其用于自述文件&#xff0c;我们将其用作 Visual Studio 文档的标准。之前收到了不少来自开发者的反馈&#xff0c;大家希望在 Visual Studio 中使用 Markdown 编辑器。在最近的 V…

CSS知识点大全

目录 CSS Step1.我的第一个CSS程序 Step2.CSS编写的位置 内联样式表 内部样式表 外部样式表

内存函数:学习笔记7

目录 一.前言 二. memcpy模拟实现 三. memmove模拟实现 四.memcmp模拟实现 一.前言 计算机内存的实质就是以字节为编号单元的二进制序列集合&#xff0c;操作内存时我们应具有这样的视角。 二. memcpy模拟实现 库函数memcpy函数首部&#xff1a;void *memcpy( void *dest, …

强(矩阵快速幂)

题目描述 Lh&#xff1a;粉兔你教我一下抽屉原理吧 Clz&#xff1a;就是给你一个长度为 n 的序列&#xff0c;每个数只能取 0,1,2&#xff0c;那你连续取三个数必然有两个相等…… Lh&#xff1a;等等你梭啥&#xff0c;再说一遍 Clz&#xff1a;……emmm 当我没说 Marser&…

【C++】STL六大组件之一——适配器(adapters)

目录1. 前言2. 初始适配器2.1 适配器的概念2.2 适配器的分类3. 容器适配器&#xff08;container adapters&#xff09;3.1 认识deque3.1.1 逻辑结构3.1.2 物理结构3.1.3 deque的迭代器3.1.4 选择deque做stack/queue底层容器的原因3.2 stack3.3 queue3.4 另一种容器适配器 ——…

【 uniapp - 黑马优购 | 购物车页面(1)】如何创建购物车编译模式、 商品列表区域实现

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生&#xff0c;讨厌编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;小新爱学习. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc…

全网圣诞树最全完整源码下载合集【可下载】

文章目录一、全部源码打包下载&#xff1a;二、效果预览001-html版本 豪华动态圣诞树 抖音同款002-圣诞树灯光跟随音乐节拍一起呼吸点亮下雪动画效果代码003-圣诞树彩带飘动节日快乐效果代码004-圣诞树带音乐旋转拉伸动画效果005-python版本python取消延迟秒出图版 【全网最强无…

Linux——常用命令1.

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;linux &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;Linux常用命令 目录 …

【C进阶】指针笔试题汇总

家人们欢迎来到小姜的世界&#xff0c;<<点此>>传送门 这里有详细的关于C/C/Linux等的解析课程&#xff0c;家人们赶紧冲鸭&#xff01;&#xff01;&#xff01; 指针笔试题前言一、题1&#xff08;一&#xff09;题目&#xff08;二&#xff09;答案及解析&#…

FlinkCDC

目录1、CDC 简介1.1、什么是CDC1.2、CDC的种类1.3、Flink-CDC2、Flink CDC 网址3、运行原理5、简要安装6、开发案例7、扩展1、CDC 简介 1.1、什么是CDC CDC 是 Change Data Capture&#xff08;变更数据获取&#xff09;的简称。核心思想是&#xff0c;监测并捕获数据库的变动…

【Linux】Linux常用指令(28个,以及热键,关机重启)

文章目录1、ls 指令2、pwd 命令3、cd 指令4、touch 指令5、mkdir 指令6、rmdir和rm 指令7、man 指令8、cp 指令9、mv 指令10、cat11、echo(输出&#xff0c;输入&#xff0c;追加重定向)12、wc13、more14、less15、head16、tail(以及管道 | )17、date18、cal19、find(which、wh…

深度学习——循环神经网络RNN(笔记)

循环神经网络RNN&#xff1a;对于序列模型的神经网络 1.回顾&#xff1a;潜变量自回归模型 使用潜变量ht总结过去的信息 ①xt跟当前的ht和x(t-1)相关 ②ht跟ht-1和xt-1相关 ③n元语法模型中&#xff0c;单词xt在时间t的条件概率取决于前面n-1个单词 隐藏层和隐藏状态的区别…

strlen 的三种模拟方法

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; 前言&#xff1a; 在C/C 中&#xff0c;strlen函数是一种计算字符串长度的库函数&#xff0c;要模拟此函数有多种方法&#xff0c;这里总结三种模拟方法。 1. strlen 函数介绍 cplusplus - strlen strlen 函数…

巨量引擎·2023教育Future大会:扎根内容生态,做好经营提效

求知方寸间&#xff0c;如风过千川。当知识创作成为新的潮流&#xff0c;当教育数字化迈入直播与短视频新时代&#xff0c;当图书电商红红火火&#xff0c;如何做好教育全产业链升级与创新&#xff1f;新年伊始&#xff0c;巨量引擎举办“行知.行为.行万里 2023教育Future大会”…

前端与后端的技术通性

一、后端的JDK相当于前端的Node.js, 后端的JVM相当于前端的V8引擎【作用示例图&#xff0c;如下所示】 【Nodejs、JDK分别是前后端的运行环境】 二、后端的Maven&#xff08;基于项目对象模型-Project Object Model-POM的项目管理机制&#xff09;相当于前端的npm&#xff08;n…
最新文章