java工具类
**
Math类
**
- Math是final的,并且所有的方法都是静态的
- abs()
- double cell() 天花板
- double floor()地板
- int或long round()四舍五入
- max()
- min()
- pow()
- random()返回带正号的double值,大于或等于0.0,小于1.0
- 练习:怎么输出1-500间的随机数,直到输出1或500为止?并记录循环次数
import java.util.Random;
/**
* @author Hancheng
* 练习:怎么输出1-500间的随机数,直到输出1或500为止?并记录循环次数
*/
public class Demo08_01 {
public static void main(String[] args) {
Random rd = new Random();
int a = 0;
int count = 0;
while(a!=1&&a!=500) {
a = rd.nextInt(502)+1;
count++;
System.out.println(a);
}
}
}
System类
-
System类中包括一些系统相关的重要方法和变量
-
System类中的所有成员都是静态对的,如:表示标准输入和输出的in和out变量
-
exit方法,通知系统提前终止虚拟机运行,即退出应用程序
public static void exit(int status)
其中参数status的取值由应用程序德运行情况而定 -
非零值:程序出现异常而结束运行
-
零值:程序正常退出
-
currentTimeMillis方法,返回1970-01-01 0:0:0起至今以毫秒为单位的时间,以long型表示
public static long currentTimeMillis()
日期类
- java.util.Data:包装了一个long型数据,表示与GMT的1970-01-01 0:0:0起至今以毫秒为单位的时间(毫秒数)。
- java.text.DataFormat:对日期进行格式化
- java.util.Calendar:可灵活的设置或读取日期中的年、月、日、时、分、秒等信息
(API!!!!!)
Java垃圾回收机制(了解)
- 垃圾回收——garbage collect(gc)
当一个对象不能被程序中处于活动状态的部分所引用时,就成了无用对象或者说垃圾对象,java虚拟机会不定时的去检测这样的对象,并回收其占用的内存空间。
T t = new T(); //这里创建了一个T对象
t = null; //上面创建的T对象不能够再被程序所引用,成为了垃圾对象,java虚拟机会回收其所占用的内存空间。
- 垃圾回收的通知机制
当java虚拟机即将回收一个对象的时候,会调用这个对象的finalize方法来通知它,以方便这个对象做一些最终清理工作。
所以当我们希望在对象即将被清理的时候做一些事情,可以在对象中定义如下方法:
public void finalize(){
System.out.println(“我即将被回收”);
}
- System.gc()
垃圾收集处于低优先级的线程内,当可用内存较少时运行,但不能保证何时运行。
不可能强制运行垃圾收集线程。但是调用语句System.gc()有可能激活垃圾收集程序
思考题:
1.String、Stringbuffer和Stringbuilder的区别
String 类不可变,内部维护的char[] 数组长度不可变,为final修饰,String类也是final修饰,不存在扩容。字符串拼接,截取,都会生成一个新的对象。频繁操作字符串效率低下,因为每次都会生成新的对象。
StringBuilder 类内部维护可变长度char[] , 初始化数组容量为16,存在扩容, 其append拼接字符串方法内部调用System的native方法,进行数组的拷贝,不会重新生成新的StringBuilder对象。
它是非线程安全的字符串操作类, 其每次调用 toString方法而重新生成的String对象,不会共享StringBuilder对象内部的char[],会进行一次char[]的copy操作。
StringBuffer 类内部维护可变长度char[], 基本上与StringBuilder一致,但其为线程安全的字符串操作类,大部分方法都采用了Synchronized关键字修改,以此来实现在多线程下的操作字符串的安全性。其toString方法而重新生成的String对象,会共享StringBuffer对象中的toStringCache属性(char[]),但是每次的StringBuffer对象修改,都会置null该属性值。