超详细的JAVA高级进阶基础知识03

news2025/6/6 22:38:13

目录

3. 面向对象高级 - 常用的API

3.1 Object 类

3.1.1 Object 类介绍

3.1.2 Object类的常用方法:

3.1.3 Objects 概述

3.2 Math 类

3.3 System 类

3.3.1 System 类概述

3.3.2 常用方法

3.4 BigDecimal 类

3.4.1 BigDecimal 类概述

3.4.2 BigDecimal 类使用

3.4.3 BigDecimal 类使用

3.5 包装类

3.5.1 包装类的介绍

3.5.2 包装类的好处 

3.5.3 基本类型对应的包装类 

3.5.4 以Integer包装类为例

3.5.5 Interger 常用方法

3.5.6 包装类面试题 

3.5.7 今日学习目标 


3. 面向对象高级 - 常用的API

什么是API?

  • API(Application Programming interface)  应用程序编程接口。
  • 简单来说:就是 Java 帮我们已经写好的一些类和方法,我们直接拿过来用就可以了

3.1 Object 类

3.1.1 Object 类介绍

  • 所有的类,都直接或者间接的继承了 Object 类 (祖宗类)
  • Object类的方法是一切子类都可以直接使用的,所以我们要学习Object类的方法。

3.1.2 Object类的常用方法:

  

public class ToStringDemo {
    /*
         public String toString() 返回该对象的字符串表示

            public String toString() {
                return getClass().getName() + "@" + Integer.toHexString(hashCode());
            }

            getClass().getName() : 类名称, 全类名(包名 + 类名)
            Integer.toHexString() : 转十六进制
            hashCode() : 返回的是对象内存地址 + 哈希算法, 算出来的整数 (哈希值)

         -------------------------------------------------------

         细节: 使用打印语句, 打印对象名的时候, println方法, 源码层面, 会自动调用该对象的toString方法.

             public static String valueOf(Object obj) {
                return (obj == null) ? "null" : obj.toString();
             }
     */
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a);
        System.out.println(a.toString());

        Student stu = new Student("张三",23);
        System.out.println(stu);

        ArrayList<String> list = new ArrayList<>();
        list.add("abc");
        list.add("abc");
        list.add("abc");

        System.out.println(list);

    }
}

class A {

    @Override
    public String toString() {
        return "大哥重写了toString方法";
    }
}

 

 

结论: Object类中的equals方法, 默认比较的是对象内存地址                                                               - 通常会重写equals方法, 让对象之间, 比较内容

3.1.3 Objects 概述

  Objects类与 Object 还是继承关系Objects类是从JDK 1.7开始之后才有的。

 

3.2 Math 类

包含执行基本数字运算的方法

 

 

3.3 System 类

3.3.1 System 类概述

  • System的功能是静态的,都是直接用类名调用即可  ------ 工具类 

3.3.2 常用方法

 

 

3.4 BigDecimal 类

3.4.1 BigDecimal 类概述

   用于解决小数运算中, 出现的不精确问题

BigDecimal类 : 解决小数运算中, 出现的不精确问题

BigDecimal创建对象 :

        public BigDecimal(double val) : 不推荐, 无法保证小数运算的精确
        ---------------------------------------------------------------
        public BigDecimal(String val)
        public static BigDecimal valueOf(double val)

BigDecimal常用成员方法 :

        public BigDecimal add(BigDecimal b) : 加法
        public BigDecimal subtract(BigDecimal b) : 减法
        public BigDecimal multiply(BigDecimal b) : 乘法
        public BigDecimal divide(BigDecimal b) : 除法
        public BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式) : 除法

注意: 如果使用BigDecimal运算, 出现了除不尽的情况, 就会出现异常

3.4.2 BigDecimal 类使用

  ● 常用方法

 

3.4.3 BigDecimal 类使用

  • divide 除法细节 

 

 

3.5 包装类

3.5.1 包装类的介绍

基本数据类型 , 包装成 ( 变成引用数据类型 )

 

3.5.2 包装类的好处 

 

3.5.3 基本类型对应的包装类 

基本数据类型, 包装成 (变成引用数据类型)

  

3.5.4 以Integer包装类为例

由于基本数据类型对应的包装类使用方式大同小异,以下以Interger包装类为例展开

包装类 : 将基本数据类型, 包装成类, 变成引用数据类型

----------------------------------------------------------------------------------

手动装箱: 调用方法, 手动将基本数据类型, 包装成类

            1. public Integer(int value) : 通过构造方法 (不推荐)
            2. public static Integer valueOf(int i) : 通过静态方法

手动拆箱: 调用方法, 手动将包装类, 拆成(转换)基本数据类型

            1. public int intValue() : 以 int 类型返回该 Integer 的值

JDK5版本开始, 出现了自动拆装箱 :

 

3.5.5 Interger 常用方法

 

3.5.6 包装类面试题 

 

public class InterView {
    /*
        看程序说结果, 并说明原因

        自动装箱的时候, 如果装箱的数据范围, 是-128~127, ==号比较的结果就是true, 反之都是false

        -----------------------------------------------------------------------------------

        自动装箱的原理 : 自动帮我们调用了 Integer.valueOf(127);

                                        // i = 127
            public static Integer valueOf(int i) {
                if (i >= -128 && i <= 127) {
                    return IntegerCache.cache[255];
                }
                return new Integer(i);
            }

            如果装箱的数据, 不在 -128 ~ 127 之间, 会重新创建新的对象
            如果装箱的数据, 在 -128 ~ 127 之间, 不会创建新的对象, 而是从底层的数组中, 取出一个提前创建好的Integer对象, 返回

                    - Integer类中, 底层存在一个长度为256个大小的数组, Integer[] cache
                            在数组中, 存储了256个Integer对象, 分别是 -128 ~ 127
     */
    public static void main(String[] args) {
        Integer i1 = 127;
        Integer i2 = 127;
        System.out.println(i1 == i2);       // true

        Integer i3 = 129;
        Integer i4 = 129;
        System.out.println(i3 == i4);       // false

        Long i11 = 129L;
        Long i22 = 129L;

        System.out.println(i11 == i22);
        System.out.println(i11.equals(i22));
    }
}

 

3.5.7 今日学习目标 

 

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

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

相关文章

windows 编译 open3d 下

1.安装cmake 快速通道&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1gZYAlGRRj4UVGgaTBaZXjg?pwd1klo 提取码&#xff1a;1klo --来自百度网盘超级会员V4的分享警告不用管编译中成功就是61开始配置 cmake 那时候选的路径glew.libglfw3.libjsoncpp.libOpen3D.libpng.l…

jdk和Android sdk 和 ndk 和 apache-ant环境变量配置

ANDROID_HOMEG:\android-sdk-windowsCLASSPATH.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\dt.jar;%ANT_HOME%\libJAVA_HOMEC:\Program Files (x86)\Java\jdk1.8.0_361NDK_HOMEG:\android-ndk-r25cant下载https://www.likecs.com…

win环境安装部署Jenkins

win环境安装部署Jenkins&#xff0c;2022年11月&#xff1a;从2022年 6 月 28 日发布的 Jenkins 2.357 和2022年9 月发布的 LTS 版本开始&#xff0c;Jenkins 需要 Java 11 才能使用&#xff0c;放弃 Java 8&#xff0c;如果用JDK1.8&#xff0c;那么Jenkins版本需要是2.357版本…

ChatGPT逐鹿:谷歌“翻车”,微软抢跑,国内概念股狂飙

2023年开年才一个月&#xff0c;微软、谷歌两大巨头在AI战场就上演了“神仙打架”。 1月里两家公司围绕OpenAI和ChatGPT发布的密集消息余温尚在&#xff0c;2月7日&#xff0c;谷歌就官宣了自家的ChatGPT竞品Bard&#xff0c;并发布演示Demo。2月8日&#xff0c;微软直接上线了…

室内三维地图怎么做的?室内地图怎么做好看?

室内导航、定位中须采用基于建筑平面图生产的室内地图&#xff0c;现有的生产室内地图的方法都是依靠人工去根据建筑平面图使用矢量绘图工具去绘制矢量化的室内地图示意图&#xff0c;然后再去标明具体的区域名称功能或者标注位置点。因此制作室内地图往往都比较耗时&#xff0…

blender基础操作

shiftc&#xff1a;游标回到世界中心 shifta: 添加物体 gx或y或z&#xff1a;沿x轴或y轴或z轴移动 gx加数字&#xff1a;往x轴方向移动几格 rx加度数&#xff1a;绕x轴旋转多少度 分割界面&#xff1a;右键单击间隙&#xff0c;选择verticle tab: 来回切换编辑界面和物体界面&…

下班前几分钟,逮到一个腾讯10年老测试开发,聊过之后大彻大悟...

优秀的人真的是比比皆是&#xff0c;不比不知道&#xff0c;一比吓一跳 老话说的好&#xff0c;这人呐&#xff0c;一单在某个领域鲜有敌手了&#xff0c;就会闲得蛋疼。就在昨天下班的前几分钟认识了一个在阿里工作了 10 年的测试开发&#xff0c;因为本人天赋比较高&#xff…

Nacos 配置管理最佳实践

作者&#xff1a;翼严 Nacos 简介 Nacos 是一个更易于构建云原生应用的微服务基础平台&#xff0c;核心包含动态服务发现&#xff0c;配置管理&#xff0c;服务管理平台。 配置管理是 Nacos 的核心功能&#xff0c;它提供了运行期不重启应用的情况下动态修改配置值的功能。 …

修改Vue项目运行的IP和端口

前言 我们在使用VsCode启动Vue项目的时候&#xff0c;我发现&#xff1a;默认的端口号好像和tomcat一样&#xff0c;默认都是8080&#xff0c;如果8080被占用了&#xff0c;就会使用8081,8082这样的方式以此类推。 那么&#xff0c;我们是否可以像后端一样&#xff0c;通过修改…

MySQL数据库04——索引

索引基础 使用索引的主要原因之一就是提供唯一的字段值。唯一索引强制表中任意两条记录的索引值互不相同。创建唯一索引需要使用UNIQUE关键字。下面通过例题说明创建和使用惟一索引的方法。 创建和使用唯一索引 首先&#xff0c;在MySQL 中创建例题中将要使用的testuni表&…

独立图片服务器有什么突出之处

服务器是网络中非常重要的设施&#xff0c;承载着不同流量的访问&#xff0c;这就要求服务器具有快速的吞吐量、高稳定性和高可靠性。独立图片服务器作为独立服务器的衍生品&#xff0c;在数据利用方面的应用可以为企业在数据处理和分析方面带来一场革命。本文就将介绍独立图片…

windows 重启redis的方法

目录打开本地的文件夹选中文件的路径输入cmd在cmd命令窗口中输入以下的指令指令的内容以及对应的命令含义前言&#xff1a;最近在本地搭建redis环境&#xff0c;突然发现本地的redis启动失败了&#xff0c;使用reids的启动命令也不行&#xff0c;于是找了不少的方法&#xff0c…

windows下Spark环境搭建

一、下载 我的是hadoop3.0.0,下载Hadoop3.0&#xff1a;下载链接 自己选择一个盘&#xff0c;我这里是 D:\software 1、配置Hadoop_HOME环境变量 新建系统变量 2、在Path环境变量&#xff0c;添加 %HADOOP_HOME%\bin3、修改配置文件&#xff1a;在hadoop-3.0.0\etc\hadoop…

原创 | arXiv上成功发表的预印本有什么特征?这样写,你的论文也能中!

作者&#xff1a;林嘉亮审校&#xff1a;陈之炎本文约4400字&#xff0c;建议阅读8分钟本文介绍了专注于科学和工程领域的印刷本平台——arXiv的特征。“预印本&#xff08;preprint&#xff09;是一份完整的科学论文手稿&#xff08;通常也会同时提交给需要同行评审的期刊&…

Linux centos系统安装argoverse-api问题解决

1、遇到带有sklearn关键字的报错 将setup.py中的sklearn改为scikit-learn 2、遇到CMake 3.1 or higher is required. You are running version 2.8.12.2....... 在python包管理器发现版本正常 于是使用centos命令手动安装 1、移除老版本cmake版本并安装依赖包 yum remove c…

[Unity 打包WebGL用本地服务器Tomcat测试]

打包WebGLUnity-WebGL-环境部署、打包1、 步骤流程图&#xff1a;不要忘记把场景加上去发布时不要勾选Development Build&#xff0c;勾选后文件非常大&#xff0c;然后点击上图左下角的 Player Settings设置一下分辨率、做一个 UI 自适应。strip engine code&#xff1a;官方文…

从降本增效到电机控制知识树

回顾永磁同步电机控制应用场景&#xff0c;电机控制算法的发展大体归结于四个字&#xff0c;降本增效。以下内容围绕这四个字&#xff0c;增效、降本两个方面梳理该领域相关知识&#xff0c;串联永磁同步电机控制技术体系。 1、 增效 增效即提高控制性能&#xff0c;具体落脚…

[Nginx]Ngnix基础

文章目录一、基础1.1 what can nginx do1.1.1 基本HTTP服务1.1.2 高级HTTP服务1.1.3 Nginx常用的功能模块1.1.4 Nginx的核心组成1.2 why nginx?1.3 安装(略&#xff09;1.4 nginx的目录结构1.5 nginx.conf的几个关键配置keepalive_timeoutkeepalive_requestsserver块和locatio…

Python自动化测试实战篇(4)selenium+unttest+ddt实现自动化用例测试,模拟用户登陆点击交互测试,Assert捕获断言多种断言

这些是之前的文章&#xff0c;里面有一些基础的知识点在前面由于前面已经有写过&#xff0c;所以这一篇就不再详细对之前的内容进行描述 Python自动化测试实战篇&#xff08;1&#xff09;读取xlsx中账户密码&#xff0c;unittest框架实现通过requests接口post登录网站请求&…

详讲常见的字符函数

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前是C语言学习者 ✈️专栏&#xff1a;C语言航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&a…