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

目录

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

StringBuffer和StringBuilder:

System类:

Runtime类:

Math类:

Random类:


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

方式一:实现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值。

你可能感兴趣的:(java)