JavaSE基础部分--常用类

常用类

1.Math类

Math类概述
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
成员变量
public static final double E : 自然底数
public static final double PI: 圆周率
C:成员方法
public static int abs(int a) 取绝对值
public static double ceil(double a) 向上取整
public static double floor(double a) 向下取整
public static int max(int a,int b) 获取最大值
public static int min(int a, int b) 获取最小值
public static double pow(double a,double b) 获取a的b次幂
public static double random() 获取随机数 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
public static int round(float a) 四舍五入
public static double sqrt(double a)获取正平方根

public class MyTest {
    public static void main(String[] args) {
        System.out.println(Math.PI);//静态常量PI==3.141592653589793
        System.out.println(Math.E);//静态常量E==2.718281828459045
        System.out.println(Math.abs(-1));//取绝对值
        System.out.println(Math.ceil(3.1));//向上取整 4.0
        System.out.println(Math.floor(3.1));//向下取整 3.0
        System.out.println(Math.random());//取随机数 0.0-1 之间的随机数 含0 不含1
        System.out.println(Math.max(3.1, 36.2));//两数之间取最大值
        System.out.println(Math.max(Math.max(3.1, 36.2),36));
        System.out.println(Math.min(3.3, 68));//两数之间取最小值
        System.out.println(Math.pow(3, 3));//次方
        System.out.println(Math.sqrt(4));//平方根
        System.out.println(Math.round(3.5));//四舍五入
        System.out.println(Math.pow(8, 1/3.0));
    }
}

2.Random

Random 可以生生成一些随机数据

Random()创建一个新的随机数生成器 没有给定种子,使用的是默认的。

成员方法
public int nextInt()//没有参数 表示的随机数范围 是int类型的范围
public int nextInt(int n)//可以指定一个随机数范围
void nextBytes(byte[] bytes) 生成随机字节并将其置于用户提供的空的 byte 数组中。

public class MyTest2 {
    public static void main(String[] args) {
        Random random = new Random();
        for (int i = 0; i < 100; i++) {
            int num= random.nextInt() //指定范围来生成随机数
            int num = random.nextInt(10);; //生成的范围是int的范围  小于10的随机数
            System.out.println(num);
            double v = random.nextDouble();//double类型小于1的随机数
            System.out.println(v);
            boolean b = random.nextBoolean();//boolean类型随机数
            System.out.println(b);
        }

      /*  void nextBytes ( byte[] bytes)
        生成随机字节并将其置于用户提供的 byte 数组中。*/

        byte[] bytes = new byte[10];
        random.nextBytes(bytes);

        System.out.println(Arrays.toString(bytes));
    }
}

Random( long seed) 给定一个long类型的种子,给定以后每一次生成的随机数是相同的

public class MyTest3 {
    public static void main(String[] args) {
       /*Random( long seed)
        使用单个 long 种子创建一个新的随机数生成器。*/
       //给了种子,就会根据种子算出一些随机数,你每次重新运行,生成的随机数就不变了。
        Random random = new Random(10L);
        for (int i = 0; i < 10; i++) {
            int i1 = random.nextInt(10);
            System.out.println(i1);
        }
    }
}

3.System

System 类包含一些有用的类字段和方法,它不能被实例化。

 /* in
  public static final InputStream in“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。*/

/*  out
  public static final PrintStream out“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
  对于简单独立的 Java 应用程序,编写一行输出数据的典型方式是:
  System.out.println(data)*/
 /*exit(0) 退出虚拟机   0表示正常退出  非0表示强制退出
   System.currentTimeMillis()  获取从 1970 01-01 00:00:00 到现在的间隔的 毫秒值
   System.gc();运行垃圾回收器,回收垃圾。
 */
in out 代码举例:
  public class MyTest {
    public static void main(String[] args) {
        InputStream in = System.in;
        PrintStream out = System.out;
        out.println("abc");//打印abc
        System.out.println(200);//打印200
        System.out.println("=============================");
        System.err.println("错误信息");//输出错误 红色字体
    }
}
currentTimeMillis()代码举例:
public class MyTest3 {
    public static void main(String[] args) {
        long timeMillis = System.currentTimeMillis();
        System.out.println(timeMillis);
        for (int i = 0; i < 500000; i++) {
            System.out.println(i);
        }
        long timeMillis2 = System.currentTimeMillis();
        System.out.println("耗时"+(timeMillis2-timeMillis)+"毫秒");
    }
}

4.BigDecimal

1.BigDecimal的概述
由于在运算的时候,float类型和double很容易丢失精度,所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal不可变的、任意精度的有符号十进制数。

2.构造方法
public BigDecimal(String val)
3.成员方法
public BigDecimal add(BigDecimal augend)//加
public BigDecimal subtract(BigDecimal subtrahend)//减
public BigDecimal multiply(BigDecimal multiplicand)//乘
public BigDecimal divide(BigDecimal divisor)//除法
public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)//scale 小数点后面保留几位
// roundingMode 取舍模式 比如四舍五入

public class MyTest {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("1.333333555555");
        BigDecimal b = new BigDecimal("2.366363388888888");
         BigDecimal bigDecimal = a.multiply(b);//乘
        BigDecimal bigDecimal1=a.subtract(b);//减
        System.out.println(bigDecimal.toString());
        System.out.println(bigDecimal1.toString());//toString方法被重写了,因此输出的不是地址值
        
        BigDecimal c = new BigDecimal("10");
        BigDecimal d = new BigDecimal("3");
        BigDecimal divide = c.divide(d, 50, BigDecimal.ROUND_FLOOR);
        //除法 scale 小数点后面保留几位
        System.out.println(divide);
    }
}

5.补充 BigInteger概述 可以让超过long范围内的数据进行运算

BigInteger概述

​ 可以计算超过long范围的数据

构造方法
public BigInteger(String val)
成员方法
public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)
public BigInteger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger[] divideAndRemainder(BigInteger val)

代码举例:

public class MyTest {
    public static void main(String[] args) {
        //BigInteger概述 可以计算超过long范围的数据
      /*  long max=Long.MAX_VALUE;  long类型的最大值
        System.out.println(max+1);*/
        BigInteger a = new BigInteger(Long.MAX_VALUE + "");
        BigInteger b = new BigInteger(Long.MAX_VALUE + "");
        BigInteger add = a.add(b);
        System.out.println(add);
    }
}

6.Date

Date类的概述
类 Date 表示特定的瞬间,精确到毫秒。

构造方法:

​ public Date()
​ public Date(long date) //把一个long类型的毫秒值转换成一个日期对象

常用方法:

getTime()获取计算机元年到现在的毫秒值;

setTime()给计算机元年加上毫秒值

代码举例:

public class MyTest {
    public static void main(String[] args) {
        Date date = new Date();//获取当前时间,精确到毫秒
        System.out.println(date);
       /* Date( long date)
        分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。*/
        Date date1 = new Date(1000*60*60);//把一个long类型的毫秒值转换成一个日期对象 给 1970 年 1 月 1 日 00:00:00 计算机元年加上相应的时间量。
        System.out.println(date1);//结果为:Thu Jan 01 09:00:00 CST 1970  在1970年基础上加一个小时,由于美国时间与北京时间差8小时时差,因此结果是9点  美国时间应该是1点
    }
}

getTime()与setTime()方法:

public class MyTest2 {
    public static void main(String[] args) {
        Date date = new Date();   
        long time = date.getTime();//获取从 1970 年 1 月 1 日 00:00:00 到现在 所间隔的毫秒值
        long l = System.currentTimeMillis();

        System.out.println(time);
        System.out.println(l);
		System.out.println(l==time);//两种方法结果相同,都是获取 1970 年 1 月 1 日 00:00:00 到现在 所间隔的毫秒值
        System.out.println("==============================");

        Date date2 = new Date();
        date2.setTime(1000*60*60*24);//给计算机元年加上毫秒值 在这里加了1天的毫秒值
        System.out.println(date2);
    }
}

Date类型与long类型之间的相互转换

1.Date-----long
通过getTime()方法进行转换
Date date = new Date();
long time = date.getTime();
2.long-----Date
直接将long类型数据赋给Date
Date date1 = new Date(1000 * 60);
利用setTime()方法将long类型数据转换成Date类型
Date date2 = new Date();
date2.setTime(200000);

7.SimpleDateFormat

SimpleDateFormat概述:

SimpleDateFormat类实现日期和字符串的相互转换,可以把一个日期对象格式化成一个文本(字符串) , 也可以把一个日期字符串解析成一个日期对象

构造方法:

public SimpleDateFormat():使用默认的模式来创建一个SimpleDateFormat对象

public SimpleDateFormat(String pattern):使用指定的模式(规则比如yyyy:MM:dd HH:mm:ss)来创建一个SimpleDateFormat对象。

日期和时间格式由日期和时间模式 字符串指定,如下

字母日期或时间元素表示示例
GEra 标志符TextAD
yYear1996; 96
M年中的月份MonthJuly; Jul; 07
w年中的周数Number27
W月份中的周数Number2
D年中的天数Number189
d月份中的天数Number10
F月份中的星期Number2
E星期中的天数TextTuesday; Tue
aAm/pm 标记TextPM
H一天中的小时数(0-23)Number0
k一天中的小时数(1-24)Number24
Kam/pm 中的小时数(0-11)Number0
ham/pm 中的小时数(1-12)Number12
m小时中的分钟数Number30
s分钟中的秒数Number55
S毫秒数Number978
z时区General time zonePacific Standard Time; PST; GMT-08:00
Z时区RFC 822 time zone-0800

成员方法:

public String format(Date date): 把一个日期对象格式化成一个字符串

public Date parse(String dateStr): 把一个日期字符串解析成一个日期对象 注意要以指定格式解析

代码举例:

你来到这个世界多少天案例?
public class demo1 {
    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的生日:");
        String s=sc.nextLine();
        Date date1 = new Date();//可以new Date对象来获取当下的毫秒值
        //long date= System.currentTimeMillis();//可以使用System.currentTimeMillis()方法获取当下的毫秒值
       // long  time = new SimpleDateFormat("yyyy-MM-dd").parse(s).getTime();//链式编程
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//定义日期模式,将Date类型转换成字符串类型
        String s1=sdf.format(date1);//转换成字符串
        Date d1=sdf.parse(s);//解析,把一个日期字符串解析成一个日期对象 按照指定格式解析
        Date d=sdf.parse(s1);
        long daysBetween=((d.getTime()-d1.getTime())/(60*60*24*1000));// getTime() 得到间隔的毫秒值 并对数据进行操作计算
        System.out.println(daysBetween);//打印输出
    }
}


  //JDK1.8 提供的关于日期的类
        public class MyTest2 {
    public static void main(String[] args) {
        LocalDate birthdayDate = LocalDate.of(1995, 06, 16);//获取过去的时间 年 月 日
        LocalDate nowDate = LocalDate.now();//获取当下的时间 年 月 日
        System.out.println(birthdayDate);
        System.out.println(nowDate);
        Period period = Period.between(birthdayDate, nowDate);//计算两个日期之间的间隔
        int years = period.getYears();//年
        int months = period.getMonths();//月
        int days = period.getDays();//日
        System.out.println(years);
        System.out.println(months);
        System.out.println(days);
    }
}

8.Calendar

1.Calendar类的概述
Calendar 类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance()来获取他的对象。它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
2.成员方法
public static Calendar getInstance() 使用默认时区和语言环境获得一个日历对象
public int get(int field) 获得给定日历字段对应的值 field通过Calendar提供的字段来拿
public void add(int field,int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量
public final void set(int year,int month,int date) 设置日历时间 年月日

3.代码举例:

获取当下日历:
public class MyTest {
    public static void main(String[] args) {
        Calendar rightNow = Calendar.getInstance();//使用默认时区和语言环境获得一个rightNow日历对象
        System.out.println(rightNow);
        int year = rightNow.get(Calendar.YEAR);//通过方法获得年
        int month = rightNow.get(Calendar.MONTH);//月
        int day = rightNow.get(Calendar.DAY_OF_MONTH);//日
        int hour = rightNow.get(Calendar.HOUR);//时
        int minute = rightNow.get(Calendar.MINUTE);//分
        int s = rightNow.get(Calendar.SECOND);//秒
        System.out.println(year + " "+month + " "+day + " "+hour + " "+minute + " "+s);

    }
}

get()、set()和add()代码举例

{
    public static void main(String[] args) {
        Calendar instance = Calendar.getInstance();
        //设置对应的日期。
        instance.set(Calendar.YEAR,2018);
        instance.set(Calendar.MONTH, 10);
        instance.set(Calendar.DAY_OF_MONTH,10);
        
        System.out.println(instance.get(Calendar.YEAR));//取到设置的日期
        System.out.println(instance.get(Calendar.MONTH));
        System.out.println(instance.get(Calendar.DAY_OF_MONTH));
        System.out.println("========================================");
        Calendar instance2 = Calendar.getInstance();//使用默认时区和语言环境获得一个rightNow日历对象
        //add(Calendar.YEAR,-2); 给对应的日期。添加或减去相应的时间量 你传入负数,就是减去。
        instance2.add(Calendar.YEAR,-6);
        System.out.println(instance2.get(Calendar.YEAR));//2014
    }
}

应用实例举例:判断某一年二月多少天

public class MyTest3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年份");
        int year = sc.nextInt();
       //把这个日期设置为这一年的3月1号
        //然后再减去1天。
        Calendar cal = Calendar.getInstance();
        cal.set(year,2,1);//在这里设置的是2,实际指的是三月,由于月份在java中是从0开始数的。
        cal.add(Calendar.DAY_OF_MONTH,-1);
        int i = cal.get(Calendar.DAY_OF_MONTH);
        System.out.println(i);        
        System.out.println("=============================");

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值