版权声明:转载请注明出处 : https://blog.csdn.net/coder_what/article/details/89437221
Copyright©Stonee
平时码代码的时候,会调用一些常用的类,如:String,StringBuffer,StringBuilder,Math,io,util,Random,System,Date,Calender等
1. Math类
Math类再lang包下,所以使用时不用导包。同时,Math类中的方法和字段全为静态,所以Math类中的构造方法时private的
点击查看官方文档
package math;
public class Demo1 {
public static void main(String [] args){
System.out.println(Math.PI);
System.out.println(Math.E);
System.out.println(Math.abs(-10)); //取绝对值
System.out.println(Math.ceil(12.34)); //取13
System.out.println(Math.floor(12.34)); //取12
System.out.println(Math.max(20,30)); //去最大值
System.out.println(Math.round(12.3f)); //四舍五入
System.out.println(Math.pow(2,3)); //8
System.out.println(Math.random()); //0-1之间的随机数
//底层调用的是random的nextdouble方法
System.out.println(Math.sqrt(4)); //开平方
}
}
2. Random类
Random类是util包,使用时需要导包
该类的一个实例用于生成伪随机数流。该类使用一个48位种子,该种子使用一个线性全等公式进行修改。
点击查看官方文档
package Random;
import java.util.Random;
public class Demo1 {
public static void main(String [] args){
Random r = new Random(); //使用的随时间变化的种子,所以随机数不固定
System.out.println(r.nextInt());
System.out.println(r.nextInt());
System.out.println(r.nextInt(100));//范围为0-99
Random r1 = new Random(1000);
//种子固定,生成的随机数也固定
System.out.println(r1.nextInt());
System.out.println(r1.nextInt());
}
}
3. System类
位于lang包下,不需要导包。构造方法为private,修饰符为final,不能继承,不能实例化
点击查看官方文档
- 字段:
static PrintStreamerr //The "standard" error output stream.
static InputStreamin //The "standard" input stream.
static PrintStreamout //The "standard" output stream.
- 常用方法
package Otherclass;
public class Demo3_System {
public static void main(String[] args) {
long start = System.currentTimeMillis(); //获取从1970到现在的时间差毫秒
long end = System.currentTimeMillis();
for (int i = 0; i< 1000; i++){ }
System.out.println(end - start); //计算上面for运行时间
new Demo();
System.gc(); //object类中有个finalize方法会回收垃圾。cg会调用此方法
System.exit(0); //非0状态异常终止,退出jvm
int [] src = {1,2,3,4,5};
int [] des = new int[10];
System.arraycopy(src,0,des,0,src.length); //将一个数组拷贝到另一个数组
}
}
class Demo {
@Override
public void finalize() { // finalize已经被弃用
System.out.println("垃圾被清扫了");
}
}
4. 大数类
点击查看官方文档
BigInteger
BigDecimal :
BigDecimal a = new BigDecimal("2.0"); //此处用字符串更精确也可调用value方法,但本质一样
BigDecimal b = new BigDecimal("1.0");
System.out.println("a.subtract(b)"); //0.9
5. Date,DateFormat和Calendar类
Date存在于sql和util包,常用util,但是Date有被Calendar代替的趋势
DateFormat常用于字符串和日期的转换
Calendar是静态类,构造方法私有无法被实例化
- Date
Date d1 = new Date();
System.out.println(d1);
Date d2 = new Date(0);
System.out.println(d2); //因为电脑时间是在东8区,所以是8点
System.out.println(d1.getTime()); //获得毫秒值
System.out.println(System.currentTimeMillis());
d2.setTime(1000); //设置毫秒值,改变时间对象
System.out.println(d2);
- DateFormat
因为DateFormat为抽象类,所以我们常用它的派生类SimpleDateFormat来代替它
//DateFormat df = new DateFormat(); //抽象类,不能实例化,需要SimpleDateFormat继承
DateFormat df = DateFormat.getDateInstance(); //返回一个DateFormat对象
Date d = new Date(); //获取时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); //创建日期格式化对象
System.out.println(sdf.format(d)); //将日期对象转换为格式化字符串
//将时间字符串转换为日期对象
String tim = "2000年08月08日 8:8:8";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 H:m:s");
Date da = sdf1.parse(tim); //此处需要抛出或者捕获异常
System.out.println(da);
- Calender
//Calendar c = new Calendar(); //无法实例化
Calendar c = Calendar.getInstance();//父类引用指向子类对象
//System.out.println(c);
c.add(Calendar.MONTH,-1);
c.set(Calendar.YEAR,2000);
c.set(2000,1,18); //修改
System.out.println(c.get(Calendar.YEAR));
System.out.println(c.get(Calendar.MONTH)); //从0开始计数
System.out.println(c.get(Calendar.DAY_OF_WEEK)); //从周日开始计数