• Java,常用类与API,比较器与其他常用类的使用


    实现对象的排序,有两种方法:自然排序、定制排序。

    方式一:实现Comparable接口的方式(自然排序)

    步骤:

    ①具体的类实现Comparable接口

    ②重写comparaTo(Object o)方法,在此方法中指明比较类的对象的大小的标准。

    ③创建类的多个实例,进行大小的比较或排序。排序可以将对象放入对象数组中,调用Arrays.sort(数组)的方法。比较对象的大小,只要调用重写后的comparable方法(返回的是int型的以正负判断的数据)。

    方式二:实现Comparator接口的方式

    步骤:

    ①创建一个实现了Comparator接口的实现类

    ②实现类要求重写Comparator接口中的抽象方法compare(Object o1,Object o2),在此方法中指明要比较大小的对象的比较规则。

    ③创建此实现类的对象创建此实现类的实例,并将此实现类的对象传入相关方法的参数中。

    两种方式的对比:

    ·自然排序是单一的,唯一的。而定制排序是灵活的多样的

    ·自然排序实现后是一直可以方便使用的。而定制排序是临时的。


    StringBuffer和StringBuilder:

    三个类的对比:

    String:

    不可变的字符序列。

    StringBuffer:可变的字符序列。jdk1.0声明的,是线程安全的,效率低一些。

    StringBuilder:可变的字符序列。jdk5.0声明的,是线程不安全的,效率高一些。

    三者都是使用同样的底层,jdk8.0之前使用char[],jdk9.0及以后使用byte[]。

    关于StringBuffer与StringBuilder的可变性分析:

    二者都是继承于父类AbstractStringBuild。

    对于StringBuilder:

    内部的属性有:

    char[] value;     用来存储字符序列。

    int count;          实际存储的字符的个数

    当创建一个Stringbuilder对象:

    StringBuilder ss = new StringBuilder();

    名为StringBuilder()的构造器的结构为

    public StringBuilder()

    {

         super(16);

    }

    super调用了父类AbstractStringBuild的构造器:

    AbstractStringBuild(int capacity)

    {

          value = new char[capacity];

    }

    即将value字符数组的大小初始化为16。

    也可以在构造器中加上字符串。

    StringBuilder ss = new StringBuilder("abc");//value = new char["abc."length + 16];

    若value字符数组的元素的添加已经达到十六个了,需要继续向后添加,默认扩容为原有的容量的2倍加2。

    并将原有value数组中的元素复制到新的数组中。

    如果开发中需要频繁地针对于字符串进行增删改等操作,建议使用StringBuffer和StringBuilder。因为使用String效率低。

    如果开发中,不涉及到线程安全问题,建议使用StringBuilder替换StringBuffer,效率会更高一些。

    如果开发中大体确定要操作的字符的个数,建议使用int capacity参数的构造器。因为可以避免底层多次扩容操作,性能更高。

    StringBuilder和StringBuffer中常用的方法:

    (1)StringBuffer append(xx):提供了很多的append()方法,用于进行字符串追加的方式拼接。

    (2)StringBuffer delete(int start, int end):删除[start,end)之间字符。

    (3)StringBuffer deleteCharAt(int index):删除[index]位置字符。

    (4) StringBuffer replace(int start, int end, String str):替换[start,end)范围的字符序列为str。

    (5) void setCharAt(int index, char c):替换[index]位置字符。

    (6)char charAt(int index):查找指定index位置上的字符。

    (7) StringBuffer insert(int index, xx):在[index]位置插入xx。

    (8)int length( ):返回存储的字符数据的长度。

    (9)StringBuffer reverse():反转。

    其他的一些API:

    (1)int indexOf(String str):在当前字符序列中查询str的第一次出现下标。

    (2)int indexOf(String str, int fromindex):在当前字符序列[fromIndex,最后]中查询str的第一次出现下标。

    (3)int lastlndexOf(String str):在当前字符序列中查询str的最后一次出现下标。

    (4) int lastindexOf(String str, int fromindex):在当前字符序列[fromindex,最后]中查询str的最后一次出现下标。

    (5) String substring(int start):截取当前字符序列[start,最后]。

    (6)String substring(int start, int end):截取当前字符序列[start,end)(7)String toString0:返回此序列中数据的字符串表示形式(8) void setLength(int newLength):设置当前字符序列长度为newLength。


    其他常用类的使用:

    System类:

    ——属性:out(输出流)、in(输入流)、err(错误输出流)

    ——方法:

    native currentTimeMillis( ):

    获取当前时间对应的毫秒数。long类型,时间戳,返回当前时间与1970年1月1日0时零分零秒之间以毫秒为单位的时间差。

    void exit(int status):

    退出程序。status为0则正常退出,不为0则异常退出。使用该方法可以在图形的界面编程中实现程序的退出功能等。

    void gc( ):该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,取决于系统中垃圾回收算法的实现以及系统执行时的情况。

    String getProperty(String key):获得系统中名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示:

    属性名

    属性说明

    java.version

    Java运行时的环境版本

    java.home

    Java安装目录

    os.name

    操作系统的名称

    os.version

    操作系统的版本

    user.name

    用户的账户名称

    user.home

    用户的主目录

    user.dir

    用户当前的工作目录


    Runtime类:

    Runtime类使用的是单例模式(饿汉式)。每一个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。

    方法:

    public static Runtime getRuntime( ):返回与当前Java应用程序相关的运行时对象。应用程序不能创建

    自己的Runtime类实例。

    public long totalMemory( ):返回Java虚拟机中初始化时的内存总量。此方法返回的值可能随时间的推移而变化,这取决于主机环境。默认为物理电脑内存的1/64。

    public long maxMemory( ):返回Java 虚拟机中最大程度能使用的内存总量。默认为物理电脑内存的1/4。

    public long freeMemory( ):回Java 虚拟机中的空闲内存量。调用gc方法可能导致 freeMemory 返回值的增加。


    Math类:

    凡是与数学运算相关的操作,在此类中找相关方法。

    public static double abs(double a):返回double值的绝对值。

    public static double ceil(double a):返回大于等于参数的最小的整数。

    public static double floor(double a):返回小于等于参数的最大的整数。

    public static long round(double a):返回最接近参数的long。(四舍五入)

    public static double pow(double a,double b):返回a的b幂次方法

    public static double sqrt(double a):返回a的平方根

    public static double random( ):返回[0,1)的随机值

    public static final double PI:返回圆周率。(属性)

    public static double max(double x, double y):返回x,y中的最大值

    public static double min(double x, double y):返回x,y中的最小值

    其它:acos,asin,atan,cos,sin,tan 三角函数


    Random类:

    用于产生随机数

    方法:

    boolean nextBoolean( ):返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值。

    void nextBytes(byte[]bytes):生成随机字节并将其置于用户提供的byte数组中。

    double nextDouble( ):返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和 1.0之间均匀分布的double值。

    float nextFloat( ):返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的float值。

    double nextGaussian( ):返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其平均值是0.0,标准差是1.0。

    int nextInt( ):返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的int值。

    int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在0(包括)和指定值(不包括)之间均匀分布的int值。

    1ong nextLong( ):返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的long值。

  • 相关阅读:
    (十五)admin-boot项目之使用undertow来替代tomcat容器
    Android AMS——创建Application(七)
    【毕业设计】基于stm32的智能温控风扇设计与实现 - 物联网 单片机
    CSP-J 2023 第二轮认证入门级(不含答案)
    pytorch基础学习(4)
    【Python 之 Numpy】创建数组
    AcWing 5147. 数量 + 5148. 字符串匹配 - 思维+字符串处理
    通过openwrt查看连接设备的IP,MAC地址,设备名
    【AI视野·今日Robot 机器人论文速览 第四十五期】Mon, 2 Oct 2023
    ES6 - promise 与 async / await【Promise 封装丐版 Ajax】
  • 原文地址:https://blog.csdn.net/2302_79468488/article/details/134438730