Random、Date、BigDecimal、Calender、Math类、模式器、匹配器

1 Random类

package Random类;

import java.util.Random;

public class Test {
    public static void main(String[] args) {
//        Random() 创建一个新得随机数生成器
        Random random = new Random();
//        nextInt()
//          返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
        for (int i = 0; i < 10; i++) {
            int i1 = random.nextInt();//无参的这个方法表示生成int范围内的随机数
            System.out.println(i1);
            int i2 = random.nextInt(100);//有参的方法表示从100的范围内最大的生成随机数,其范围为0-99
            System.out.println(i2);
        }
        for (int i = 0; i < 100; i++) {
            double v = random.nextDouble();//生成随机小数0-1范围内
            System.out.println(v);
        }
        for (int i = 0; i < 20; i++) {
            boolean b = random.nextBoolean();
            System.out.println(b);
        }

    }
}
package Random类;

import java.util.Arrays;
import java.util.Random;

public class Test1 {
    public static void main(String[] args) {
//        nextBytes(byte[] bytes)
//          生成随机字节并将其置于用户提供的 byte 数组中。
        byte[] bytes=new byte[10];
        Random random = new Random();
        random.nextBytes(bytes);//这一步把数组放进去之后,就直接填充了数据了
        for (int i = 0; i < 10; i++) {
            System.out.println(bytes[i]);
        }
        System.out.println(Arrays.toString(bytes));//Arrays.toString可以将数组直接变成String字符串的形式,一定要记住啊!
        String sss=new String(bytes);//此表示的是将byte中的数字按照ASKII码表转换成String类型的对应字符串,两者要区分
        String s=new String("booleann");
        System.out.println(s);
//        Arrays中有copyof,equals,sort,toString方法,其中sort和toString这个方法很重要,sort中有个比较器,采用匿名内部类的方式

    }
}
package Random类;

import java.util.Random;

public class Test2 {
    public static void main(String[] args) {
//        Random()
//          创建一个新的随机数生成器。
//Random(long seed)
//          使用单个 long 种子创建一个新的随机数生成器。
        Random random = new Random();//括号里面就是种子,其实就是有无参数,无参就是没种子,代表每次生成随机数不一样
        for (int i = 0; i < 5; i++) {
            int i1 = random.nextInt(10);
            System.out.println(i1);
        }
        System.out.println("===============================");
        Random random1 = new Random(10L);//括号里面有种子了,就会根据种子去算一个固定的随机数,每次的生成的都是一样的
        for (int i = 0; i < 5; i++) {
            int i1 = random1.nextInt(10);
            System.out.println(i1);
        }
    }
}

2 Date日期类


import java.util.Date;

public class Trst1 {
    public static void main(String[] args) {
//        Date日期类,能精确到毫秒
//        月份由从0至11的整数表示,0为1月,1为2月,以此类推。
//        日期由1到31来表示
        Date date = new Date();
        System.out.println(date);//重写了toString,按照西方的格式输出日期
//        Date(long date)
//          分配 Date 对象并初始化此对象,
// 以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
        System.out.println("========================");
        Date date1 = new Date(1000 * 60 * 60);//此表示给计算机元年增加相应的毫秒值,只要里面有参就表示为从计算机元年开始
        System.out.println(date1);
    }
}
package 日期类;

import java.util.Date;
@Deprecated
public class Test2 {
    public static void main(String[] args) {
        Date date = new Date();
        long time = date.getTime();
        System.out.println(time);//获取1979年1月1日到现在的毫秒值
//        或者用Systyem自带的方法也可以
        long l = System.currentTimeMillis();
        System.out.println(l);
        System.out.println("===========================================");
        Date date1 = new Date();
        date1.setTime(1000 * 60 * 60 * 24);//在这相当于给元年的日期加了一天(里面的方法肯定是用date1这个引用了,不然
        //调用完这个方法之后,date1里面的数据不会改变 )
//        这里其实跟有参构造一样 new Date(1000 * 60 * 60 * 24);
        System.out.println(date1);
//  注意:如果想标注一个类或者一个方法过时的话,可以用@Deprecated标注,标注过后的类或方法就会中间有一条横线

    }
}
package 日期类;

import java.util.Date;

public class Test4 {
public static void main(String[] args) {
    //    Date 到Long的转换
//      Date到Long类型转换
    Date date = new Date();
    long time = date.getTime();
//    long到Date的转换
    Date date1 = new Date(1000 * 60);//(1)方式1,有参里面的形参为long类型
    Date date2 = new Date();
    date2.setTime(1000*60);//与1的形参一样
    System.out.println(date2);//(2)方式2

}
}
package 日期类;

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

public class Test5 {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
//        默认的日期展示格式咱们看着不习惯
//        下面变换成咱们习惯的方式
//        通过日期类格式化,把日期变成我们想要的式子
//        用下面这个类:
//        使用空参构造,按照默认格式来格式化:
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
        //        日期格式化:一定记住
        String format = simpleDateFormat.format(date);
        System.out.println(format);
        System.out.println("=========================");
//        按照我们指定的格式来格式化日期:
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format1 = simpleDateFormat1.format(date);
        System.out.println(format1);
//字母  日期或时间元素  表示  示例
//G  Era 标志符  Text  AD
//y  年  Year  1996; 96
//M  年中的月份  Month  July; Jul; 07
//w  年中的周数  Number  27
//W  月份中的周数  Number  2
//D  年中的天数  Number  189
//d  月份中的天数  Number  10
//F  月份中的星期  Number  2
//E  星期中的天数  Text  Tuesday; Tue
//a  Am/pm 标记  Text  PM
//H  一天中的小时数(0-23)  Number  0
//k  一天中的小时数(1-24)  Number  24
//K  am/pm 中的小时数(0-11)  Number  0
//h  am/pm 中的小时数(1-12)  Number  12
//m  小时中的分钟数  Number  30
//s  分钟中的秒数  Number  55
//S  毫秒数  Number  978
//z  时区  General time zone  Pacific Standard Time; PST; GMT-08:00
//Z  时区  RFC 822 time zone  -0800
//        其中字母是固定的,必须这样写,但是拼接符可以自己定义
//      如:  yyyy-MM-dd HH:mm:ss 可写成yyyy年MM月dd日 HH:mm:ss,自己定义好就可以
        Date date1 = new Date();
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss 星期F");
        String format2 = simpleDateFormat2.format(date1);
        System.out.println(format2);
    }
}
package 日期类;

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

public class Test6 {
    public static void main(String[] args) throws ParseException {
//        把一个日期字符串,格式化成一个日期对象。 String---》 Date
//        日期字符串
        String s="2020-06-25 16:21:32";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //这里一定要与上面的s里面的字符串对应一致,一定要对应一致,一定要对应一致!!!!


//        把日期字符串解析成日期对象
        Date parse = simpleDateFormat.parse(s);
        System.out.println(parse);

    }
}

3 Calendar日期类

package 日期类;

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

public class Test6 {
    public static void main(String[] args) throws ParseException {
//        把一个日期字符串,格式化成一个日期对象。 String---》 Date
//        日期字符串
        String s="2020-06-25 16:21:32";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //这里一定要与上面的s里面的字符串对应一致,一定要对应一致,一定要对应一致!!!!


//        把日期字符串解析成日期对象
        Date parse = simpleDateFormat.parse(s);
        System.out.println(parse);

    }
}
package Calendar日期类;

import java.util.Calendar;
import java.util.Scanner;

public class MyTest2 {
    public static void main(String[] args) {
//        或者去用Calendar的日期类对象去获取今年的2月份有多少天
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入年份");
        int i = scanner.nextInt();
        Calendar instance = Calendar.getInstance();
//        instance.set(Calendar.YEAR,i);
//        instance.set(Calendar.MONTH,2);
//        instance.set(Calendar.DAY_OF_MONTH,1);
//        上面这样写太麻烦了,可以直接一步设置
        instance.set(i,3,1);//这里就是一步设置了,可以把年月日时分秒全部设置出来,也可以设置其中一部分
        instance.add(Calendar.DAY_OF_MONTH, -1);
        System.out.println(i+"年的2月份有"+instance.get(Calendar.DAY_OF_MONTH)+"天");
    }
}
package Calendar日期类;

import java.util.Calendar;
//Calendar类就是用来替代Date中过时的方法,这里讲的是获取日期的方法
public class Test {
    public static void main(String[] args) {
//        Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等
//       日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
//        其是抽象类,通过new对象无法直接调这个类,但是这个类里面有静态方法,可以通过其内的静态方法去调用这个类
        Calendar instance = Calendar.getInstance();
//        Calendar.getInstance();调用的最后是其子类,这里还是用的多态
        System.out.println(instance);
        int i = instance.get(Calendar.YEAR);//用来获取年份
        int i1 = instance.get(Calendar.MONTH);//月,括号里面可以写数字,但是这样不好
        int i2 = instance.get(Calendar.DAY_OF_MONTH);//日
        int i3 = instance.get(Calendar.HOUR);//时(12小时制)
        int i4 = instance.get(Calendar.HOUR_OF_DAY);//时(24时制)//一般用这个
        int i5 = instance.get(Calendar.MINUTE);//分
        int i6 = instance.get(Calendar.SECOND);//秒


    }
}
package Calendar日期类;

import java.util.Calendar;

import static java.util.Calendar.*;

public class Test2 {
    public static void main(String[] args) {
//        这里讲的是设置日期的方法
        Calendar instance = Calendar.getInstance();
        instance.set(Calendar.YEAR, 2000);//将年份设置为2000年
        int i = instance.get(Calendar.YEAR);//这里获取到的就是2000年了
        System.out.println(i);
        System.out.println("====================");
//        一次性设完
        instance.set(1998,01,01,13,25,11);//注意,这里的月份
//        范围是0-11的,也就是说01表示的是2月了,set,get都是这个意思
        System.out.println(instance.get(Calendar.MONTH));


    }
}
package Calendar日期类;

import java.util.Calendar;

public class Test3 {
    public static void main(String[] args) {
//        给某个日期对象加上或减去相应的日期
        Calendar instance = Calendar.getInstance();
        instance.add(Calendar.MONTH,2);//给现在对应的月份加上两个月
        instance.add(Calendar.YEAR,10);//给现在对应的年份加上10年,以此类推
//        注意:这里没有对应的减的方法,所以只能amount为负数的时候,对应的为减法
        instance.add(Calendar.DAY_OF_MONTH,-10);//对应当前日期减五天,而且其会计算减5天后对应月份的日期,
//        比如 这个月为4月1号,我减10,那么他就会对应计算减10之后的上一个月的日期号,为22
        System.out.println(instance.get(Calendar.DAY_OF_MONTH));
    }
}

4 BigDecimal 类

package BigDecimal类;

import java.math.BigDecimal;

public class Test {
    public static void main(String[] args) {
        double a=2.12424214;
        double b=3.41241241421241;
        System.out.println(a*b);//这样算精度达不到很高
//        如果对精度很高,double类型就不能满足了
//        JAVA给我们提供了相应的类来满足精度要求
        BigDecimal bigDecimal = new BigDecimal("2.12424214");
        BigDecimal bigDecimal1 = new BigDecimal("3.41241241421241");//注意里面是字符串类型就行了
        BigDecimal multiply = bigDecimal.multiply(bigDecimal1);
        System.out.println(multiply);//乘
        BigDecimal add = bigDecimal.add(bigDecimal1);
        System.out.println(add);//加
        BigDecimal subtract = bigDecimal.subtract(bigDecimal1);
        System.out.println(subtract);//减
        BigDecimal divide = bigDecimal.divide(bigDecimal1,20,BigDecimal.ROUND_CEILING);
        System.out.println(divide);//除法                (1)不能整除的情况
//        需声明小数点后面需保留多少位,以及取舍模式,如上所示,取舍模式可以查看文档
        BigDecimal bigDecimal2 = new BigDecimal("10");
        BigDecimal bigDecimal3 = new BigDecimal("2");
        BigDecimal divide1 = bigDecimal2.divide(bigDecimal3);
        System.out.println(divide1);//(2)可以整除的情况下,没有什么多说的


    }
}
package BigDecimal类;

import java.math.BigInteger;
// BigInteger也是对高精度要求所提出来的类
public class Test1 {
    public static void main(String[] args) {
//        注意:打断点的话一般都是在第一行打断点
        long maxValue = Long.MAX_VALUE;//这是个包装类,获取了其long类型的最大值
        BigInteger bigInteger = new BigInteger(maxValue + "");//形参表示为字符串类型
        BigInteger bigInteger1 = new BigInteger("22");
        System.out.println(bigInteger.add(bigInteger1));//跟BigDecimal类的方法一样,且形参都为字符串类型
//        当然也可以选多个断点,按F9可以从上一个断点调到下一个断点,或者点类似播放键的那个就可以到下一个断点,想从这个断点出来的
//        的话就点类似窗口关闭的那个按钮,就出来了,播放的那个按钮可以和窗口关闭的那个按钮可以交替使用
//        类似窗口关闭的那个按钮是从当前断点出去,但是出去的时候依旧回到的是之前执行到的那个语句,如果按向上的箭头的话
//        JAVA就认为这个语句你已经看完了,直接跳到了下一个执行语句上了就
//        利用Alt+F8或者类似计算器的东西可以自己设置计算表达式,就是你可以设置从哪个数开始看(例如循环的时候),就不用从头开始看了
//        Alt+F9 或者计算表达式旁边那个就是可以直接一步到光标点到的位置进行debug,但是每一步只能用一次,除非你跳出去在进来可以在用一次
    }
}

5 模式器、匹配器

package Pattern模式器和Matcher匹配器;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) {
//        Pattern模式器就是封装一个正则表达式
//        即正则表达式的编译形式
//        如:
        Pattern p=Pattern.compile("a*b");
//        通过模式器封装一个正则表达式
//        通过模式器获得一个匹配器Matcher,并把待匹配的字符串传入,如:
        Matcher m=p.matcher("aaaab");
//        调用匹配器中的匹配方法进行匹配,如:
        boolean a=m.matches();
        System.out.println(a);
// 如果只是用匹配功能这个要求,不需要用这两个类中这么复杂的方法,只需要用以前的正则表达式匹配的就可以,但这两个类中远不
//        止这两个方法。
    }
}
package Pattern模式器和Matcher匹配器;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test2 {
    public static void main(String[] args) {
//        需求,获取一下字符串中由三个字符组成的单词
        String s="da jia ting wo shuo,jin tian yao xia yu ,bu shang wan zi xi, gao xing bu ?";//,是转义字符,表达逗号
//        时也要转义
//        传统方法
        String s1 = s.replaceAll("\\,|\\?+", " ");
        System.out.println(s1);
        String[] split = s1.split("\\s+");
        for (int i = 0; i < split.length; i++) {
            if (split[i].length()==3){
                System.out.println(split[i]);
            }
        }
        System.out.println("====================================================");
//pattern 与matcher方法:
//        1.我们定义一个正则表达式
        String regx="\\b[a-z]{3}\\b";//这个时候要注意,要加上单词边界,不然他就把空格也算上了
//        2.把正则表达式封装到模式器中
        Pattern compile = Pattern.compile(regx);
//        3.通过模式器,获取匹配器
        Matcher matcher = compile.matcher(s);

//   boolean find()
//       尝试查找与该模式匹配的输入序列的下一个子序列
//        String group()
//        返回由以前匹配操作所匹配的输入子序列
//        上述两个方发是先找有没有,才去在截,有才调用group,没有就不调用
//        4.先用查找的方法,再去匹配
//         boolean bb=matcher.find();
         while (matcher.find()){
             String group = matcher.group();
             System.out.println(group);//这个功能只能一次找一个,所以得用循环才能全部找完
         }



    }
}

6 Math 类

package Math类;

public class Test {
    public static void main(String[] args) {
//        Math类包含了用于执行基本数学得方法,如初等指数,对数,平方和三角函数等
        double pi=Math.PI;
        double e=Math.E;
        System.out.println(e);
        System.out.println(pi);
        System.out.println(Math.abs(-1));//获取绝对值
        System.out.println(Math.max(10,20));//获取两个数的最大值
        System.out.println(Math.max(Math.max(100,200),300));//获取三个数得最大值,依此类推
        System.out.println(Math.min(100,200));//最小值
        System.out.println(Math.min(Math.min(100,200),300));//三个数得最小值
        System.out.println(Math.ceil(3.14));//向上取整,变成了4.0了,
        System.out.println(Math.floor(3.14));//向下取整,变成了3.0
        System.out.println(Math.round(3.1222222222));//四舍五入,这个只取整数类型,为3
        System.out.println(Math.round(3.999999999));//4  它只看3得后一位小数,剩下的不看
        System.out.println(Math.sqrt(4));//对4取平方根 2,只取正得,且为小数形式,最终为2.0
        System.out.println(Math.pow(2, 16));//取次方,这个为2得16次方,也为小数形式,为65536.0
        System.out.println(Math.pow(8, 1 / 3.0));//对8取立方根(注意这里要用小数,几次方如果为分数得时候必须要用小数,整数次方不用)


    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值