Java常用API

news2024/11/25 20:47:39

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));  // 10
        System.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)); // 4
        System.out.println(Math.round(4.5)); // 5
        // 随机数0.0 - 1.0
        System.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.09999999999999999
        System.out.println(1.0 - 0.32);  //0.6799999999999999
        System.out.println(1.015 * 100); //101.49999999999999
        System.out.println(1.301 / 100); //0.013009999999999999
        System.out.println("----------------");
        double a = 0.1;
        double b = 0.2;
        double c = a + b;
        System.out.println(c); // 0.30000000000000004
        System.out.println("----------------");
        // 包装浮点型数据成为大数据对象BigDeciaml
        BigDecimal a1 = BigDecimal.valueOf(a);
        BigDecimal b1 = BigDecimal.valueOf(b);
        BigDecimal c1 = a1.add(b1);
        System.out.println(c1); // 0.3
        // 目的:double
        double 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.33333
        System.out.println(c11); // 3.33
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68520.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA中变量与常量

文章目录0 写在前面1 变量1.1 声明变量1.2 变量初始化2 常量3 写在最后0 写在前面 所有程序设计语言一样&#xff0c;Java 也使用变量来存储值。常量就是值不变的变量。 1 变量 1.1 声明变量 格式 类型 变量名; 例如&#xff1a; int index; double salary; long earthPop…

华为云发布CodeArts Req需求管理工具,让需求管理化繁为简

摘要&#xff1a;华为云正式发布CodeArts Req&#xff0c;这是一款自主研发的软件研发管理与团队协作工具&#xff0c;旨在助力企业大规模研发转型成功&#xff0c;释放组织生产力。本文分享自华为云社区《华为云发布CodeArts Req需求管理工具&#xff0c;让需求管理化繁为简》…

代码随想录刷题day56 583. 两个字符串的删除操作;72. 编辑距离;编辑距离总结篇

代码随想录刷题day56 583. 两个字符串的删除操作&#xff1b;72. 编辑距离&#xff1b;编辑距离总结篇 关于编辑距离的一些题目。 583. 两个字符串的删除操作 583. 两个字符串的删除操作 - 力扣&#xff08;Leetcode&#xff09; 化简这一步不容易想到。原理就是两个都删除…

华为云大数据BI赋能企业数字化发展

企业在数字化转型过程中面临着不少挑战&#xff0c;比如数据整合能力有限、不足的需求快速响应能力、缺乏数据管理机制和保障、自建分析平台成本高等等。所以各大企业都希望通过一个大数据智能系统来全方位帮助企业处理数据分析&#xff0c;做好智能决策。因此&#xff0c;对于…

基于SOPHON TPU架构实现 Faiss 的两个查询接口

文章目录1. Faiss 简介2. 距离度量3. 在 Sophon TPU 上的接口实现3.1 Sophon TPU3.2 indexflat 实现3.3 indexPQ 实现 1. Faiss 简介 Faiss 库是 Facebook 开发的一个用于稠密向量相似性搜索和聚类的库&#xff0c;该库包含有诸多向量相似性搜索的算法。向量相似性搜索是将一…

【Pytorch】第 2 章 :马尔可夫决策过程和动态规划

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

python之对比两张图像的相似度

python之图像背景识别 本着结合实际工作&#xff0c;实际落地并已应用的态度去码文。 python之对比两张图像的相似度 需求&#xff1a;在某个手机端项目中&#xff0c;有多个页面图片&#xff0c;但每个图片都做了相应的修改&#xff0c;由于这种图片非常多&#xff0c;高达上万…

澳亚通过聆讯:上半年营收近3亿美元 元气森林与新希望乳业是股东

雷递网 雷建平 12月6日澳亚集团有限公司&#xff08;简称&#xff1a;“澳亚集团”&#xff09;日前通过聆讯&#xff0c;准备在港交所上市。澳亚集团是2022年10月中旬递交招股书&#xff0c;不到2个月时间&#xff0c;澳亚集团就通过上市聆讯&#xff0c;这在最近两年的港交所…

小型扫雪机结构设计

目 录 摘 要 I ABSTRACT II 1、绪论 1 1.1 选题意义 1 1.2小型扫雪机国内发展现状 1 1.2.1国内小型扫雪机械现状 1 1.2.2犁式小型扫雪机 2 1.2.3旋切式小型扫雪机 2 1.2.4国内小型扫雪机械的发展方向 3 1.3国外道路小型扫雪机械技术发展概况 3 1.3.1综合式扫雪 3 1.3.2融雪扫雪…

【华为上机真题 2022】数组组成的最小数字

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

深入探索 Kubernetes 网络模型和网络通信

Kubernetes 定义了一种简单、一致的网络模型&#xff0c;基于扁平网络结构的设计&#xff0c;无需将主机端口与网络端口进行映射便可以进行高效地通讯&#xff0c;也无需其他组件进行转发。该模型也使应用程序很容易从虚拟机或者主机物理机迁移到 Kubernetes 管理的 pod 中。 …

PR-39 TFA 是富含脯氨酸和精氨酸的天然抗菌肽

PR-39 TFA 是富含脯氨酸和精氨酸的天然抗菌肽&#xff0c;是一种非竞争性&#xff0c;可逆和变构的蛋白酶体 (proteasome) 抑制剂。PR-39 TFA 可逆地结合到蛋白酶体的 α7 亚基上&#xff0c;并通过泛素-蛋白酶体途径阻断 NF-κB 抑制剂 IκBα 的降解。PR-39 TFA 刺激小鼠的血…

Java中的final关键字,你清楚吗?

前言 在学习Java基础阶段应该都认识关键字 final,在声明常量和匿名内部类时都会用到它。我们最熟悉的 String 类就是 final类&#xff0c;如果经常查看API源码&#xff0c;肯定还会遇到其他 final类。本篇就来深入了解一下关键字 final&#xff0c;加深对它的运用。 概览 可用…

java计算机毕业设计ssm线上拍卖系统设计6luor(附源码、数据库)

java计算机毕业设计ssm线上拍卖系统设计6luor&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

CRC 循环冗余检验【计网必考】

CRC 循环冗余检验作为一个重点&#xff0c;也是数据链路层必考的一个考点&#xff0c;所以我把差错检测单独拿出来分析一起看一下。总结不易&#xff0c;一个简单的攒&#xff0c;Thanks♪(&#xff65;ω&#xff65;)&#xff89; 目录 一、介绍及工作原理 二、校验计算过程…

zookeeper四字命令_java培训

zookeeper支持某些特定的四字命令&#xff0c;他们大多是用来查询ZK服务的当前状态及相关信息的&#xff0c; 通过telnet或nc向zookeeper提交相应命令&#xff0c;如&#xff1a;echo ruok | nc 127.0.0.1 2181 运行公式&#xff1a;echo 四字命令 | nc 主机IP zookeeper端口…

一文读懂Linux内存分配策略

转载&#xff1a;一文读懂Linux内存分配策略-今日头条 (toutiao.com) 在 Linux 操作系统中&#xff0c;虚拟地址空间的内部又被分为内核空间和用户空间两部分&#xff0c;不同位数的系统&#xff0c;地址空间的范围也不同。比如最常见的 32 位和 64 位系统&#xff0c;如下所示…

r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现

原文链接&#xff1a;http://tecdat.cn/?p3795Glmnet是一个通过惩罚最大似然关系拟合广义线性模型的软件包。正则化路径是针对正则化参数λ的值网格处的lasso或Elastic Net&#xff08;弹性网络&#xff09;惩罚值计算的&#xff08;点击文末“阅读原文”获取完整代码数据&…

[附源码]JAVA毕业设计社区图书馆借阅管理系统(系统+LW)

[附源码]JAVA毕业设计社区图书馆借阅管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项…

【微服务】版本确认完成,传统方式安装Nacos

目录安装Nacos1.4.1【微服务】SpringCloud和SpringBoot版本选择 【微服务】传统方式安装Nacos 安装Nacos1.4.1 Github地址&#xff1a;https://github.com/alibaba/nacos/releases Nacos1.4.1版本下载地址&#xff1a;https://github.com/alibaba/nacos/releases/download/1.…