常用类与比较器

常用类
    学一个类,先搞清楚继承关系,再看源码
    
    包装类Wrapper
        jdk5之前是手动装箱拆箱
        jdk5及之后是自动装箱拆箱(调用valueOf方法(自动默认)/创建对象的构造方法,XXXvalue方法)
            直接赋值就是自动拆装箱,编译器会自动补全 调用valueOf的方法  在对象数组里,与jvm字节码的后直接跟小值无关
            自动拆装箱是与自身的包装类有关的,不是随便就可以:比如object o=true是不行的
        继承关系
            父类是Numbeer(Boolean与character不是,父类是object)
            实现了Comparable接口(可比较的),Serializable接口(代表可以串行化,就可以网络传输)
        源码:
            valueOf源码可以看到是从一个cache数组中直接取,或创建一个对象【面试题重点,类加载时,-128-127数组就创建赋值好了】
        
        常用方法:
            Integer.MIN_VALUE返回最小值
            Integer.MAX_VALUE返回最大值
            
            Character.isDgit(字符)            判断是不是数字
            Character.isLetter(字符)        判断是不是字符
            Character.isUpperCase(字符)        判断是不是大写
            Character.isLowerCase(字符)        判断是不是小写
            Character.ToUpperCase(字符)        转为大写
            Character.ToLowerCase(字符)        转为小写
            Character.isWriteSpace(字符)    判断是不是空格
            
        包装类-》String
            1 +“”
            2 包装类的toString方法(基本练习自动转包装类,包装类点toString方法)
            3 String类的valueOf方法(静态方法,参数接收对象)
        String-》包装类
            1 包装类的parseXXX方法            此方法是把string的每一个char取出判断是不是数字,然后转为int
            2 直接new,参数传String
            
    String
        字符串字符采用Unicode编码,也就是char,占2字节(不论是字母还是汉字)
        继承关系
            父类是object    
            实现了Comparable接口,Serializable接口,charSequence接口
        源码:
            构造器参数:空参,字符串常量,char数组(可有索引),byte数组(网络编程)        
            String 是final类,不能被继承
            源码看到底层是char/byte数组(value[])
                value[]是final,一旦创建不能修改(地址不能修改(字符串对象不能改,否则不是一个了),而不里面的字符不能修改)
        创建方式:
            1 直接赋值
                先看常量池中有没有,有,引用直接指向,没有,常量池创建后,引用指向,最终,引用都是指向常量池
            2 构造器创建  【相当于 用String对象包了一层】
                先在堆中创建空间,【引用指向堆】(堆中的空间有value属性,其查看常量池,有value直接指向,没有,常量池创建指向)
            但是注意:String类的equals方法是比较value数组的,所以为真(注意equals到底是object还是string)
                        ==就是比较地址了,是false
                        调用intern方法时,如果对象equals()方法 常量池中某对象,返回值是常量池地址,
                            否则,将其加入常量池,返回常量池地址
        字符串相加【面试题】
            string常量相加
                常量池常量对象有编译器优化的
            string变量相加
                创建一个空的StringBuilder对象-》调用其append方法到最后-》调用toString方法(new一个String对象返回)
                    所以相加返回的相对于是new构造器创建的对象string,堆中value指向常量池 
        常用方法:
            equals方法            不忽略
            equalsIgnoreCase    忽略大小写
            length    方法        返回长度int
            indexOf    方法        返回字符/字符串的最先索引  源码是KMP
            lastIndexOf方法        返回字符/字符串的最后索引  源码是KMP
            subString            截取字符串,返回string    左闭右开
            trim                去前后空格,返回string
            ChatAt                获取索引字符,不能用Str[index]获取
            
            toUpperCase            转大写
            toLowerCase            转小写
            concat                拼接,就是+号
            replace                返回值是替换字符串,替换所有,对于其本身没有影响
            split                返回字符串数组,对于地址符等特殊字符,字符串分割时,需要加入转义符\
            compareTo            一个个字符比,返回前-后的ASCII码,前者大,返回正数,后者大,返回负数;
                                    比到没得比,返回 让前面字符串总长度-后面字符串总长度
            toCharArray            转为字符数组
            format                格式化字符串 : %s表示字符串   %c字符    %d整型      %.2f浮点型,保留小数点后2位(四舍五入)
                                    返回格式好的字符串,第一个参数是带占位符的string,后面变量替换占位符
                                    (c语言形式:但是c语言不是四舍五入)
    StringBuffer
        代表可变的字符序列,buffer代表缓冲区
        java.lang.StringBuffer
        是一个容器,线程安全
        继承关系:
            父类是AbstractStringBuffer,父类实现了charSequence接口,Appendable接口,再父类是object类
            实现了Serializable接口,charSequence接口
        源码:
            其父类AbstractStringBuffer中有value[]属性,不是final类型,存放字符串内容,不是final,是存放在堆中的
            stringBuffer是final类
            构造器参数:空参,字符串(此构造器指定容量是当前字符串长度+16),指定缓冲区容量(默认16)
                构造器的参数不能是null,会抛空指针异常
            
        常用方法:
            append                            增,追加,返回的还是stringBuffer,【追加的如果是null,则会置null字符串(不会抛异常)】
            delete(start,end)            删,返回的还是stringBuffer,左闭右开
            replace(start,end,string)    改,左闭右开
            indexOf                            查第一次出现的索引
            insert(start,string)            插,在索引位置插入,后面往后移            应用:3位数字插入逗号(先找小数点,往前3位插,循环处理)
            length                            获取长度
        string与stringBuffer
            string是字符串常量,里面值不能改,每次string类更新其实是改地址,效率低(value[]是fianl的)
            stringBuffer保存的是字符串变量,里面的值可以修改,每次是更新内容,不用每次不用改地址,效率高(value[]在堆中)
                只有value指向的数组(也在堆中)不够,才更新地址(扩大,拷贝,更新)
            相互转换:
                string-》stringBuffer
                    stringBuffer构造器
                    stringBuffer的append方法
                stringBuffer-》string
                    stringBuffer的toString方法
                    使用String构造器
            string类效率较低,复用常量池,复用率很高,如果对string做大量修改,用buffer或builder
            stringbuilder与stringBuffer提高效率:配置文件string表示常量的值
    StringBuilder
        【stringBuffer的替代】,但是所有方法都不是线程安全的(不保证同步),效率最高
            【单线程】使用,优先使用此类,因为比stringBuffer快
        是final类
        主要操作append与insert方法,可以重载这些方法,接收任意类型数据
        继承关系:与stringBuffer一样
            父类是AbstractStringBuilder,父类实现了charSequence接口,Appendable接口,再父类是object类
            实现了Serializable接口,charSequence接口
    Math
        数学运算的static方法
        abs            绝对值
        pow            求幂
        ceil        向上取整
        floor        向下取整
        round        四舍五入
        sqrt        求开方,负数是NAN
        random        求随机数    [0,1)随机小数   多敲,搞清楚【a,b】随机数写法
        max            两数最大
        min            两数最小
    
    Arrays
        static方法,管理和操作数组(比如排序和搜索)/包装类数组/引用类型数组
        Arrays有静态内部类arraylist,NaturalOrder,LagacyMergeSort
        
        toString方法,返回数组的字符串形式
        sort方法(自然排序和定制排序),数组是引用类型,排序会直接影响到参数
            定制排序要传递comparator接口参数 源码程序调用程序员实现的方法,拿到返回值,根据正负,决定 二叉树排序逻辑
        binarySearch 通过二分搜索 进行查找,要求必须排好序
        copyOf(arr,int x)拷贝原数组前x个元素到新数组,如果负数,抛异常,如果长度大于原数组,补null
        fill(arr,int x)数组元素的填充(使用后面数,替换原来所有数)
        equals(arr,arr)元素完全一样,返回真
        asList将一组值转换为list,编译类型是List,运行类型是arraylist(静态内部类)
        
    System
        exit退出当前程序,参数代表状态,0代表正常退出
        arraycopy复制数组元素,一般是底层调用才用 (我们一般用的arrays.copyOf就是用的它)  
                    参数5个,原数组,原数组起始位置,目的数组,目的数组起始位置,长度,出错报异常
        gc垃圾回收
        currentTimeMills返回当前时间毫秒数
        println方法,默认调用toString方法
        
    BigInteger,BigDecimal
        底层就是将其当作字符串处理,再转为对象
        保存比较大的整数(long存不下),保存精度高的浮点型(小数过多)
        构造器参数是字符串数字
        在对于bigInteger/bigDecimal  +,-,*,/有专门方法,不能用符号,
            bigDecimal的除法可能抛异常(精度太高,可能除不尽)--》在除法方法多传一个BigDecimal的静态变量作为精度(保留分子精度)
        
    Date,Calendar,localDate 3代发展
        jdk1.0
        Date构造器无参/毫秒值    getTime方法获得毫秒值
        SimpleDateFormat格式化  构造器传字符串   format方法/parse方法(parse有异常的)
        
        jdk1.1
        Calendar是抽象类,getInstance静态方法获取对象并且提供大量方法和字段给我们使用
        没有专门格式化方法。要自己组合
        线程不安全,还不能处理闰秒(每2天,多1秒)
        
        jdk8
        localDate,localTime,localDateTime
            日期     时分秒        都有
            now方法获取当前对象,getXXX(VALUE)方法获取字段,
            检测是否是闰年等,加/减一个时间(890天后等)得到新日期等各种方法
        DateTimeFormater格式化类似simpleDateFormat
        Instant时间戳类,now方法可以获取当前时间,可以与Date相互转换兼容

    比较器
    comparable接口是给类实现的
        里面的compareTo方法 有1参数,表示自己this与其他自己的比较o  方法返回值是int
        将比较逻辑的正负值与返回值的正负值有所关联就行
    comparator接口是当参数的
        里面的compare方法主要   接口当作参数时,匿名内部类重写的方法 ,有2参数,表示自己与其他自己(o1,o2) 
        方法返回值是int

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

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

相关文章

mongdb配置ssl

mongodb5.0.9 centos7.6 x86 1、正常启动mongod -f mongodb.conf 【前言】 ssl配置流程步骤,按照以下顺序处理即可。 1.生成证书,根证书,服务端证书,客户端证书 2.配置服务端ssl配置,测试she…

vue form表单的封装--使用的是elementUI

该组件是一个动态生成表单的Vue组件,通过传入formList参数和插槽的方式实现表单项的定制化渲染 组件的封装 HCommonFormItem 根据传入的"formList"参数生成一组表单项,并通过插槽(slot)将表单项渲染出来。 在component…

编程模拟支付宝能量产生过程--数据控制流

#模拟支付宝蚂蚁森林的能量产生过程 behavior_points { # 定义行为对应的积分"步行": 2,"生活缴费": 10,"线下支付": 5,"网络购票": 5,"共享单车": 10 }total_points 0 # 初始化总积分while True: # 开…

【Python】基础练习题_文件及数据格式化

(1)从键盘输入一些字符,逐个把它们写到磁盘文件"test1.txt"上,直到输入一个#为止。 file_name "test1.txt"with open(file_name, "w") as file:while True:char input("请输入字符&#xf…

10倍提升启动的时间?Graalvm打包Springboot+MyBatis实测

graalvm使用前后对比图 相关代码博客:https://blog.csdn.net/weixin_43914278/article/details/134446327 工具大小时间graalvm打包的exe文件84.14MB0.251秒graalvm打包的docker文件121.27MB0.253秒jar包51.34MB2.153秒 解析 文件大小: graalvm打包的Docker文件…

苍穹外卖项目笔记(7)— 微信登录、商品浏览

前言 苍穹外卖项目代码:https://github.com/Echo0701/take-out 1 HttpClient 1.1 介绍 HttpClient 是 Apche Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且支持 HTTP 协议最新…

CUDA简介——For循环并行化

1. 引言 前序博客: CUDA简介——基本概念CUDA简介——编程模式 kernel相关语法定义为: kernel函数定义,与常规C函数定义类似。不同之处在于,有__global__关键字。 为说明符,告诉编译器该函数应编译运行在device上&a…

java easyPOI导出一对多数据,设置边框,字体,字体大小

java easyPOI导出一对多数据,设置边框,字体,字体大小 需求总是千奇百怪,解决的方式也可以是多种多样。 今天碰到导出excel是一对多结构的,以往导出的数据都是一条一条的,所以采用的是比较方便简单的方法eas…

linux 路由表的优先级

查看路由规则 [rootlocalhost cc]# ip rule list 0: from all lookup local 32765: from 10.0.19.24 lookup 4096 32766: from all lookup main 32767: from all lookup default 现在有 4 条路由规则,优先级是怎样的,0 代表最低优先级还是最高优先级 在…

pytest-yaml 测试平台.新增项目和用例

基于pytest-yaml-yoyo 框架写的接口测试平台,在web网页平台上维护yaml测试用例,执行用例,并查看allure报告。 pytest-yaml-yoyo 框架简介 pytest-yaml-yoyo 框架是上海-悠悠 2023年自主开发的pytest结合yaml框架。gitee项目地址https://gite…

综合指南:如何创建有效的知识地图?

知识地图是知识管理中的重要工具,使企业能够有效地利用其资产。它促进了解决问题、新人整合和组织学习。此外,它还提高了生产力,实现了数据驱动的决策,并优化了流程。通过捕获和组织有价值的知识资产,它确保了专业知识…

前后端分离vue+Nodejs社区志愿者招募管理系统

1、首页 1)滑动的社区照片册 使用轮播图,对社区的活动纪念与实时事件宣传。 每个图片附有文字链接,点击跳转对应社区要闻具体页。 2)社区公告栏 日常的社区公告以及系统说明在此区域中进行说明与展示。 2、志愿活动 1)志愿活动发布 想发布需要登录 2)志愿…

kubekey部署k8s

服务器配置 nameipmaster192.168.57.61 node1192.168.57.76 master 安装需要2H4G 磁盘空间至少需要20G node1 安装需要4H4G 磁盘空间至少需要50G 安装k8s环境依赖,在每台服务器执行以下命令 命令:yum install -y socat conntrack ebtables ipset 下载…

【C语言】【堆排序实现TOPK问题】写一个堆排序,并且在一百万个数中找出最大的前K个

1.堆排序的实现: 如果要升序输出,则实现大堆 如果要降序输出,则实现小堆 逻辑:(升序输出) 将堆顶的元素和最后一个元素交换位置,此时左子树和右子树分别仍是大堆的顺序,交换位置后…

保障Adams许可管理数据库安全:备份与恢复的最佳实践

在工程仿真领域,Adams软件是一款广泛应用于动力学分析的工具。然而,随着项目的不断扩大和复杂化,如何备份和恢复Adams许可管理数据库成为了一个重要的问题。为了帮助用户更好地理解和掌握Adams许可管理数据库备份与恢复的最佳实践&#xff0c…

【matlab程序】matlab画螺旋图|旋转图

%% 数学之美====》螺旋线 % 海洋与大气科学 % 20231205 clear;clc;close all; n=10; t=0:0.01:2pin; R=1; xx=nan(length(t),1);yy=nan(length(t),1); for i=1:length(t) xx(i)=Rcos(t(i)); yy(i)=Rsin(t(i)); R=R+1; end figure set(gcf,‘position’,[50 50 1200 1200],‘col…

中文手写数字数据识别

实验环境 python3.7torch1.13.1cu117 torchaudio0.13.1cu117 torchvision0.14.1数据下载地址:Mnist中文手写数字数据集Python资源-CSDN文库 这些汉字包括: 零、一、二、三、四、五、六、七、八、九、十、百、千、万、亿 总共15个汉字,分别…

浅谈ArrayBuffer、Blob和File、FileReader

ArrayBuffer、Blob和File都是JavaScript中处理二进制数据的对象。 ArrayBuffer 用于表示一个通用的、固定长度的原始二进制数据缓冲区。它不能直接操作缓冲区中的数据,而需要通过一个类型化数组TypedArray(如Int8Array、Uint8Array等)或者一…

linux 中crontab 定时任务计划创建时间文件夹示例

1.创建一个sh脚本 /usr/bin/mkdir 是mkdir命令的路径 /usr/bin/chmod 是chmod命令的路径 2.编辑定时任务 crontab -e

爆款开放式耳机哪一款性价比最高?3款热门机型推荐,小白速看

随着生活水平的提升,越来越多的人对蓝牙耳机的需求不再局限于简单的音乐欣赏。他们对耳机的要求越来越高,包括音质表现、舒适度、环境感知等方面也有极大的期待,正是因为这样,开放式耳机应运而生。 身为一个数码测评小博主&#x…