JAVA基础学习6 常用的api(一·)

math类

  • 包含执行基本数字运算的方法,Math类没有公开的构造器
  • 如何使用类中的成员呢?看类的成员是否都是静态的如果是,通过类名就可以直接调用

Math类的常用方法

public static int abs(int a)-------------------//获取参数绝对值
public static double ceil(double a)------------//向上取整
public static double floor(double a)-----------//向下取整
public static int round(float a)---------------//四舍五入
public static int max (int a,int b)------------//获取两个int值中的较大值
public static double  pow(double a,double b)--//返回a的b次幂的值
public static double ramdom()----------------//返回值为double的随机值,范围[0.0,1.0)

public class mathh {
    public static void main(String[] args) {
//        取绝对值
        System.out.println(Math.abs(-12));
//        向上取整数
        System.out.println(Math.ceil(4.222));
//        向下取整数
        System.out.println(Math.floor(4.21));
//        求指数次方
        System.out.println(Math.pow(2,3));
//        四舍五入
        System.out.println(Math.round(4.23));
        System.out.println(Math.round(4.61));
        System.out.println(Math.random());//0.0-1任意数
    }
}

System类

  • System的功能是通用的,都是直接用类名调用即可,所以System不能被实例化(不能实例化俗解不能new)

System类常用的方法

public static void exit(int status)--------终止当前运行的java虚拟机,非零表示异常终止
public static long currentTimeMillis()----返回当前系统的时间毫秒值形式
public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)-拷贝数组

 public static long currentTimeMillis()----返回当前系统的时间毫秒值形式

计算程序跑了多长时间

public class SystemDome {
    public static void main(String[] args) {
        long l = System.currentTimeMillis();
        for (int i = 0; i <1000000 ; i++) {
            System.out.println("输出:"+i);
        }
        long l1 = System.currentTimeMillis();
        System.out.println((l1-l)/1000.0+ "s");
        System.out.println(System.currentTimeMillis());
    }
}

public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)-拷贝数组

import java.util.Arrays;

public class SystemDome {
    public static void main(String[] args) {
        long l = System.currentTimeMillis();
        for (int i = 0; i <1000000 ; i++) {
            System.out.println("输出:"+i);
        }
        long l1 = System.currentTimeMillis();
        System.out.println((l1-l)/1000.0+ "s");
        System.out.println(System.currentTimeMillis());

        int [] arry1={10,20,30,40,50,60,};
        int[] arry2=new int[6];
//        arraycopy(Object src,  int  srcPos,
//                                        Object dest, int destPos,
//                                        int length);
        System.arraycopy(arry1,3,arry2,3,3);//(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)
        System.out.println(Arrays.toString(arry2));
    }
}

 BigDecimal类

作用:解决精度失真的问题

使用步骤:

创建对象BigDecimal封装浮点型数据(最好的方式是调用方法)

public static BigDecimal valueOf(double val)---------包装浮点数成为BigDecimal对象。

BigDecimal常用api

public BigDecimal add(BigDecimal b)----------加法

pubilc BigDecimal subtract(BigDecimal b)----减法

public BigDecimal mltiply(BigDecimal b)------乘法

public BigDecimal divide(BigDecimal b)-------除法

public BigDecimal divide(另一个BigDecimal对象,精确几位,舍入模式)

package BigDecimall;
import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalDemo {
    public static void main(String[] args) {
        double a=0.1;
        double b=0.2;
        System.out.println(a+b);
        //包装浮点型数据成为大数据对象BigDecimal
        BigDecimal a1=BigDecimal.valueOf(a);
        BigDecimal b1=BigDecimal.valueOf(b);
        BigDecimal c=a1.add(b1);//调用加法 a1+b1
        BigDecimal cc=a1.subtract(b1);//a1-b1
        BigDecimal ccc=a1.multiply(b1);//a1乘b1
        BigDecimal cccc=a1.divide(b1);//a1除以b1
        System.out.println(ccc);
        System.out.println(cc);
        System.out.println(c);
        System.out.println(cccc);
        //注意BigDecimal一定要精度计算
        //10除以3=0.3333333....会报错
        BigDecimal a11=BigDecimal.valueOf(10.0);
        BigDecimal b11=BigDecimal.valueOf(3.0);
        BigDecimal z=a11.divide(b11,3, RoundingMode.UP);
        System.out.println(z);
        //转为double类型
        double as=c.doubleValue();
        System.out.println(as);
    }
}

 Data类

使用Data类的无参构造方法创建的对象可以获取本机的当前日期和时间

package datapakge;

import java.util.Date;

public class DataDemo {
    public static void main(String[] args) {
        Date date = new Date();//获取本机时间
        System.out.println(date);
       
    }
}

用由有参构造方法计算(时间过去一小时120秒)之后的时间是多少

package datapakge;

import java.util.Date;

public class DataDemo {
    public static void main(String[] args) {
        Date date = new Date();//获取本机时间
        System.out.println(date);
        long teme = date.getTime();//获取时间毫秒值
        teme += (60 * 60 + 120) * 1000;//在一小时一百二十秒后
        Date t = new Date(teme);//将时间毫秒值转换成时间
        System.out.println(t);//输出时间
    }
}

SimpleDateFormat类

  • 可以对Date对象或时间毫秒值格式化成我们喜欢的时间形式。
  • 也可以吧字符串的时间形式解析成日期对象
package datapakge;

import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatDemo {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
        //格式化这个日期对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");//EEE星期几 a代表上午或者下午
        //开始格式化日期对象成为字符串形式
        String as = sdf.format(date);
        System.out.println(as);
        //格式化时间毫秒值 121后的时间多少
        long s = System.currentTimeMillis();//获取时间毫秒值
        s += 120 * 1000;//增加120秒
        String format = sdf.format(s);//格式化时间毫秒值
        System.out.println(format);
    }
}

输出结果 

 计算出

2022年4月9日 23:20:20 往后2天14小时03秒的时间是多少
package datapakge;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatDemo1 {


    public static void main(String[] args) throws ParseException {
        //使用SimpleDateFormatDemo解析字符串时间成为日期对象
        //时间2022年4月9日 23:20:20 往后2天14小时03秒的时间是多少
        //把时间放到字符串中
        String a = "2022年4月9日 23:20:20";
        //把字符串解析日期对象
        SimpleDateFormat s = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date d = s.parse(a);//获得Sat Apr 09 23:20:20 CST 2022
        System.out.println(d);
        String format1 = s.format(d);
        System.out.println(format1);
        System.out.println("----------------------------------");
        System.out.println("往后2天14小时03秒的时间是:");
        //  long f1 = d.getTime();
        // System.out.println(f1);
        //往后走的时间   L防止
        long f = d.getTime() + (2L * 24 * 60 * 60 + 14 * 60 * 60 + 3) * 1000;//时间毫秒值
        String format = s.format(f);//格式化时间毫秒值 转换成2022年04月12日 13:20:23
        System.out.println(format);
    }
}

结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值