常用类

常用类

本文主要介绍java中的常用类,包括系统相关类(System、Runtime)、字符串相关类(String、StringBuffer、StringBuilder)、日期相关类、数学运算类、包装类和正则表达式。
在这里插入图片描述

System类

System运行平台(windows、unix、linux)

  System.out.print( System.currentTimeMillis())//获取当前时间的函数

在这里插入图片描述
System.nanoTime()该函数并非是系统当前时间的函数,它是一个获得系统计时器的函数,它只能表示从某一个不确定的时间,到当前时间的时间差(从CPU开始运行时,计算与当前时间的时间差)该函数与钟表定义的时间无关。它的作用是计算代码的执行时间。计算与当前时间的时间差。

System.out.print(System.nanoTime());

在这里插入图片描述
System.exit(0)关闭虚拟机 //慎用
System.gc 由垃圾回收器决定
System.getProperty();

Runtime运行环境(JVM)

Runtime类的相关方法用于统计处理器和内存容量
Runtime. getRuntime()返回与当前Java应用程序关联的运行时对象。

System.out.println(Runtime.getRuntime());

在这里插入图片描述
maxMemory 返回Java虚拟机将尝试使用的最大内存量。 如果没有固有的限制,则返回值
freeMemory()当前空闲内存
totalMermory()使用内存
availableProcessors()处理器的个数
traceMethodCalls()启用/禁用方法调用的跟踪。
exec(String command)
在单独的进程中执行指定的字符串命令。

Runtime.getRuntime().exec(“notepad.exe”)// 打开记事本

在这里插入图片描述

String 字符串

我们常用的各种语句都作为字符串格式应用于程序中。
String str=”abc”

下面这行代码,创建了两个对象,一个在堆中,一个在常量池中。

String str01=new String(“abc”)

字符串相关类
str.length//字符串的长度

str.cahrAt(2)//获得指定索引的值,范围(0- length-1)

str.codePointAt(2)//返回ASCILL值

codePointBefore(int index)//返回index前面的值(1-length)

str.compareTo(“abc”)//比较字符串

str.concat(“e”)//字符串拼接 ,此时创建3个对象,abc,e,abce

str.contains(“d”)//判断字符串中是否存在某个字符串
str.contentEquals(“”)//判断两个字符串是否相等
str.endwith(“”)判断字符串是以某一段字符串结束

str.startWith();开始

copyValueOf(char[] data)//复制字符串

str.equals()字符串的操作,先进性非空判断

equalsIgnoreCase(String anotherString) //将此 String 与另一个 String 比较,不考虑大小写。

 Str.split();//Split拆分字符串

哈希值,并非是对象的本身
在String 是把字符串的值,转换为哈希值
Str.indexOf(“b”)b在str中第一次出现的索引
Indexof(int ch,int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
Str.lastIndexOf()在str中最后一次出现的索引
Str.replace()替换
字符串获取长度length方法

“abcd”.toUpperCase()大写转换

“abcd”.toCharArray();转换为字符数组

Char[] arrs=“abcd”.toCharArray();//把字符串转换为字符数组

String.valueOf(arrs)//字符数组转换为String 数组
“ ab cd ”.trim();可以忽略字符串前后的空格

Str.substring(beginIndex)//从哪里截取字符串
Str.substring(int beginIndex, int endIndex)从哪儿开始,到那而结束。包前不包后
String.valueOf() 让基本数据类型和引用数据类型,以字符串的方式相转换。

StringBuffer(加锁)
如果经常要对字符串进行修改,建议使用StringBuffer();
语法:
StringBuffer buffer=new StringBuffer(“abc”);
StringBuffer 在进行字符串处理时,不产生新的对象,在内存上优于String
不能直接使用buffer=”abc”必须通过构造器。
StringBuffer()初始容量为16个字符
Buffer.capacity()//得到StringBuffer类中的字符数组的长度
Buffer.length();得到已存放的元素个数
Buffer.append()追加
Buffer.insert()插入
Buffer.toString()//转换为字符串
Buffer.reverse()数组倒序排量
Buffer.setCharAt();使用新的字符,去代替某个位置上的原数
Buffer.substring(3,7);//结果为String 型,从开始位置到结束位置的字符串(包前不包后)

StringBuffer和StringBuilder区别

StringBuilder(不加锁)线程不同步
StringBuffer安全性更高,线程同步
效率比不上StringBuilder
StringBuilder 线程不同步
String不可变的字符串 stringBuilder和StringBuffer都是可变长的字符串,可以动态的扩容、缩容以及查插删改的操作,通过数组的复制实现。StringBuffer和StringBuilde声明使用方法都一致,它们之间的区别是,StringBuffer是加锁的,安全性更高,但效率有时候比不上StringBuilder,是一种线程同步的string类。

日期相关的类:

Date类

必须新创对象

Date date=new Date();得到系统的当前时间
System.out.println(date);

在这里插入图片描述
此时得到的时间是格林威治时间,是以1970年1月1日0时0分0秒为起点。这个时间的特殊意义是Unix系统的诞生。
Date(long )根据时间差返回过去
默认情况下,日期的输出格式,采用的是:EEE MMM dd HH:mm:ss yy
toGMTString()日期的输出格式,使用格林威治时间:dd MMM yyy HH:mm:ss
System.out.print(date)//输出的是yyyy-MM-dd

DateFormat

DateFormat是日期/时间格式化子类的抽象类,它以语言无关的方式格式化和分析日期或时间。 日期/时间格式化子类(如SimpleDateFormat )允许格式化(即日期文本),解析(文本日期)和归一化。 该日期表示为一个Date对象,或自1970年1月1日00:00:00 GMT以来的毫秒。但DateFormat无法实例化对象,是一个抽象类,但它有一个子类SimpleDateFormat可以帮助我们实现格式化日期。
SimpleDateFormat
SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。 它允许格式化(日期文本),解析(文本日期)和归一化

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");//新建一个SimpleDateFormat 实例对象
df.applyPattern("yyyy-MM-dd");//应用模板格式
System.out.println(df.format(date));//输出格式化后的字符串

在这里插入图片描述

parse(String text, ParsePosition pos)
从字符串中解析文本以产生一个 Date 。

String dateStr = "2000-12-12";
Date date=null;
 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");//新建一个SimpleDateFormat 实例对象
    df.applyPattern("yyyy-MM-dd");//应用模板格式
    try {
			date = df.parse(dateStr);
			System.out.println(date);
			}catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		

在这里插入图片描述
Calendar 日历类
调用getInstance()获得Calendar抽象类的子类的实例
默认取得是系统日期及
GregorianCalendar是Calendar的实例
//默认取得是系统日期以及系统时间

      Date date=new Date();
		Calendar calendar = Calendar.getInstance();
			
			//将自定义的时间,装给calender
	calendar.setTime(date);
			
	System.out.println(calendar.get(Calendar.YEAR));//获得年份
	System.out.println(calendar.get(Calendar.MONTH));//获得月份
	System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//一个月中的那一天
		System.out.println(calendar.get(Calendar.HOUR_OF_DAY));//一天中的多少小时
	System.out.println(calendar.get(Calendar.MINUTE));//分钟数
	System.out.println(calendar.get(Calendar.SECOND));//秒数

在这里插入图片描述

数学运算类

Math类
Math类一般用于数学运算,如绝对值、开方、正切值、余弦、正弦等

System.out.println(Math.abs(-4));//取得一个数的绝对值
	System.out.println(Math.cbrt(63));//63的立方根
	//返回double值的多维数据集根。 对于正有限x , cbrt(-x) == -cbrt(x) ; 也就是说,负值的多边形根是该值的大小的立方根的负数。 
	System.out.println(Math.ceil(Math.cbrt(63)));//返回大于或等于参数的最小(最接近负无穷大) double值
	System.out.println(Math.floor(Math.cbrt(63)));//返回小于或等于参数的最大(最接近正无穷大) double值,等于一个数学整数。 向下取整
	System.out.println(Math.pow(2, 8));//计算某一个值得N次方,2^8
	//取值2--10之间的随机值
	System.out.println((int)(Math.random() * 8) + 2);
	//计算某一个值的正平方根
	System.out.println(Math.sqrt(4));
	//勾股定理(勾三股四弦五)
	System.out.println(Math.hypot(3, 4));
	//返回最接近参数并等于某一整数的 double 值。如果两个同为整数的 double 值都同样接近,那么结果取偶数。
	System.out.println(Math.rint(-4.5));
	//四舍五入求值
	System.out.println(Math.round(-3.5));//(long)Math.floor(a + 0.5d)四舍五入
![在这里插入图片描述](https://img-blog.csdn.net/20180921185119291?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4NTI3NDI3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

在这里插入图片描述
随机数Random
相同的种子,得到的随机序列也相同,一般用于模拟上次的随机值。

         Random random = new Random();
		System.out.println(random.nextInt());

在这里插入图片描述

得到10以内的随机数:

  Random random = new Random();
		System.out.println(random.nextInt(10));

在random.nextInt()中,可写一个参数,将产生一个0~n的一个随机数(包括0不包括n)
在java中产生随机数的方式有3种:
1.通过System.currentTimeMillis()产生随机数
2.通过Math.random()产生一个随机数
3.通过Random产生随机数

包装类

Java中将这八种基本数据类型封装成类,称为包装类。
包装类,也属于引用数据类型,赋初值为null

基本数据类型包装类
booleanBoolean
byteByte
shortShort
intInteger
longLong
shortShort
longLong
charCharacter
floatFloat
doubleDouble

八种包装类实际上分为两种组:一组是数值型的,包括Integer、Byte、Short、Long、Float、Double,这些类包装类都是Number类的子类,而Number类的父类是Object类;另外一组是Character和Boolean类,这两个类的父类都是Object类。
String字符串转换为int
在实际应用中,输入的数据类型一般为String字符串,而在程序中需要得到计算值,所以我们需要转换为基本数据类型int,然而在java中并不支持引用数据类型与基本数据类型相转换。这时一般有两种常见方法:
1.ParseInt解析
2.ValueOf取得的值,转为int

正则表达式

一般来说,正则表达式由普通字符、字符类、通配符和数量词组成。字符类、通配符和数量词是一些特殊的字符,这些特殊字符在正则表达式中有特殊的用途。表12-10列出了正则表达式中的特殊字符
正则表达式:
1.普通字符:普通符号(字母、单词、数字、下划线、具有一定含义的符号:!;。、.)
2.转义符号:\t 、\n、\f(换页)、\r、\、$、^
3.标准字符集合:\s、\S、\w、\w、\b、\B、\d、\D、.
4.自定义的字符集合:[ ] 可放置转义符号、标准字符集,除了 .(点)、$(美元符号)
但是具有某些特殊含义的标点符号,被装入自定义集合,会被认为就是一个普通符号,没有任何其他含义。
会包含标准字符集合
5.量词:用于修饰正则表达式中字符号的匹配次数的符号,代表了前面符号出现的次数。
{n}出现的次数为n次
\d{2},匹配两次\d
{n,m}出现的次数为n到m次,如果m不写就是无穷词

  • 匹配1次或多次{1,}
  • 前面的子表达式出现的次数0次或多次{0,}
    ?这个符号一般跟随在上面的4个符号后面,主要作用是将贪婪模式改成非贪婪模式,所谓的贪婪模式,就是尽可能的执行更多次数,非贪婪模式,是让我们的子表达式尽可能的执行最少次。
    6.选择符和分组
    | 所有表达式都会执行
    ()捕获组:它会从字符串中,捕获符合我们条件的,装入内存中,以便下次使用
    ^在正则表达式中,一般存在两种含义:
    1、 限定开头
    2、 取反
    当该字符出现在一个自定义字符集合模式的第一个字符时,表示取反
    [^a]表示“匹配除了a的任意字符”
    [^a-zA-Z0-9]表示“找到一个非字母也非数字的字符”
    但是^出现在自定义字符集中,就是普通的字符^
    例如:[^abc]

例:校验四川地区身份号,以51开头,第3位0~3中的一个数字,第4-6位,0-9均可。第7位-第14位为出生日期,出生年月要么为19开头,要么20开头。月份最多12月,日期最多31天。15-17为,0-9中的数字随意,最后一位要么为0-9,要么为x.

	String regexIdCard="51[0-3]\\d{3}[1-2]\\d{3}(1[0-2]|0[0-9])(([1-2]\\d{1})|3[0-1])\\d{3}(x|[0-9])";
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入四川地区的身份证号");
		String inputId=sc.next();
		boolean flag=Pattern.matches(regexIdCard, inputId);
		if(flag) {
			System.out.println("这是一个正确的身份证号!");
		}else {
			System.out.println("这不是一个正确的身份证号!");
		}

正确的情况:
在这里插入图片描述
错误情况:
在这里插入图片描述

更多常用正则表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值