目录
实现对象的排序,有两种方法:自然排序、定制排序。
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。
其他常用类的使用:
——属性: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类使用的是单例模式(饿汉式)。每一个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 返回值的增加。
凡是与数学运算相关的操作,在此类中找相关方法。
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 三角函数
用于产生随机数
方法:
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值。