常用类/正则表达式/枚举

Java第九天学习

常用类/正则表达式/枚举
1:常用类(Math类,Random类,System类, Runtime类,Date类,SimpleDateFormat类,Calendar类)
1.1.Math类
Math 类提供了一序列基本数学运算和几何函数的方法。
Math类是final类,并且它的所有成员变量成员方法都是静态的。
静态方法列举:

double pow (double a, double b)

计算 的 次方

double sqrt  (double a) 

计算给定值的平方根

int abs (int a) 

计算 int 类型值 a的绝对值,也接收 longfloat 和 double 类型的参数

double ceil (double a)

返回大于等于 a的最小整数的double

double floor (double a) 

返回小于等于 a的最大整数的double

int max(int a, int b)

返回 int 型值 和 中的较大值,也接收 longfloat 和 double 类型的参数

int min(int a, int b)

返回 和 中的较小值,也可接收 longfloat 和 double 类型的参数

int round(float a);

四舍五入返回整数

double random()

返回带正号的double值,该值大于等于0.0且小于1.0


eg:
package common;


public class MathDemo {


public static void main(String[] args) {
double powResult=Math.pow(2,3);
System.out.println("2的3次方为:"+powResult);
System.out.println("8的平方根:"+Math.sqrt(8));
System.out.println("-7.35的绝对值是:"+Math.abs(-7.35));
System.out.println("8.1向上取整:"+Math.ceil(8.1));
System.out.println("9.9向下取整:"+Math.floor(9.9));
System.out.println("8.499四舍五入的结果:"+Math.round(8.499));
System.out.println("8.5四舍五入的结果:"+Math.round(8.5));
System.out.println("随机返回一个从0.0(包括)到1.0(不包括)值:"+Math.random());
int ran=(int)(Math.random()*16)+3;
System.out.println("随机返回3到18的数字:"+ran);
System.out.println("圆周率是:"+Math.PI);
}
}

1.2.Random类
Random类的对象可以生成“伪随机数”。
     常用方法:
   (1).  public int nextInt(int   bound)     (返回从0(包含)到bound(不包含)的一个“伪随机”   整数值.)
 
      (2).public boolean nextBoolean()     (返回一个“伪随机”的boolean值)
eg:
package common;

import java.util.Random;

public class RandomDemo {

	public static void main(String[] args) {
		Random ran=new Random();
		int result=ran.nextInt(12)+3;
		System.out.println("随机返回3到14的数字:"+result);
		System.out.println("随机返回boolean值:"+ran.nextBoolean());

	}

}


1.3.System类
成员变量
System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
(1)成员方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
int[] a = {1,2,3,4};
int[] b = new int[5];
System.arraycopy(a,1,b,3,2);
(2)exit()方法
public static void exit(int status)
该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。
(3)gc()方法
public static void gc()
该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。
垃圾回收时,会先调用finalize()方法,释放非java资源
eg:
package common;

public class SystemDemo {

	public static void main(String[] args) {
		System.out.println("正常输出信息...");
		System.err.println("输出标准错误信息...");
		int[] a = {1,2,3,4};
		int[] b = new int[5];//一创建一个长度为5的新数组
		System.arraycopy(a,1,b,3,2);   // 数组拷贝,将A处索引为1的(数字2)开始以后的元素copy到b中(从索引为3中开始copy)
		
        for(int x:b){
        	System.out.print(x+"  ");
        }
        System.exit(0);   // 退出程序  exit方法

	}

}
gc方法:
eg:
package common;

public class FinalizeDemo {

	public static void main(String[] args) {
		Person per=new Person();
		per=null;   // 将per引用置为null,使堆内存中的Person对象变为“垃圾”
        System.gc();  // 显式请求JVM进行垃圾回收gc
	}

}
(4)currentTimeMillis方法
public static long currentTimeMillis()
以毫秒为单位返回从1970年1月1日午夜到当前时间的毫秒数
eg:
package common;

public class CurrentTimeMillisDemo {
	public static long currentTimeMillis(){
		CurrentTimeMillis C=new CurrentTimeMillis();
		System.out.println("以毫秒为单位返回从1970年1月1日午夜到当前时间的毫秒数"+C.currentTimeMillis());
	}
}
1.4.Runtime类
作用:使应用程序与其运行的环境相关联
通过使用getRuntime()静态方法获得实例。
exec(String command)在单独的进程中执行指定的字符串命令,该方法返回Process对象,使用Process对象的 destroy()方法可以杀掉进程
eg:
package common;

import java.io.IOException;
import java.util.Scanner;

public class RuntimeDemo {

	public static void main(String[] args) {
		Runtime rt= Runtime.getRuntime();
		rt.gc();    // 显式请求JVM进行垃圾回收gc
        System.out.println("当前JVM的内存总量是:"+rt.totalMemory()+"字节");
        System.out.println("JVM试图使用的最大内存量:"+rt.maxMemory());   
        System.out.println("当前JVM的空闲内存量:"+rt.freeMemory());
        try {
			rt.exec("notepad");
			rt.exec("calc");
			Process qq=rt.exec("E:\Program Files\TGP\tgp_daemon.exe");   // 打开TGP
			Scanner scan=new Scanner(System.in);
			System.out.print("要打开腾讯游戏平台么?y/n");
			String choice=scan.next();
			if("y".equals(choice)){
				qq.destroy();   // 销毁进程
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
1.5.Date类与SimpleDateFormat类
Date类:表示日期和时间:提供操作日期和时间各组成部分的方法
SimpleDateFormat类:用于定制日期时间的格式
方法:
Date date = new Date();    //创建日期对象  
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-  
    MM-dd HH:mm:ss");//定制日期格式
String now = sdf.format(date);
System.out.println(now);
eg:
package common;

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("xxxx.xx.xx HH:mm:ss.SSS");   // 传递日期模版,实例化SimpleDateFormat对象
		System.out.println("现在时刻:"+sdf.format(date));//调用方法
	}

}
1.6.Calendar类
抽象类
  用于设置和获取日期/时间数据的特定部分
Calendar类提供一些方法和静态字段来操作日历

方法或属性

说明

int get(int field)

返回给定日历字段的值

MONTH

指示月

DAY_OF_MONTH

指示一个月中的某天

DAY_OF_WEEK

指示一个星期中的某天

eg:
package common;


import java.util.Calendar;


public class CalendarDemo {


	public static void main(String[] args) {
		Calendar cal=Calendar.getInstance();
		System.out.println("第几个月:"+(cal.get(Calendar.MONTH)+1));
        System.out.println("当前月的第几天:"+cal.get(Calendar.DAY_OF_MONTH));
        System.out.println("星期几:"+cal.get(Calendar.DAY_OF_WEEK));
        System.out.println("今年的第几天:"+cal.get(Calendar.DAY_OF_YEAR));
        System.out.println("*******************************");
        cal.set(1937, 6, 7);   // 调整日历
        System.out.println("第几个月:"+(cal.get(Calendar.MONTH)+1));
        System.out.println("当前月的第几天:"+cal.get(Calendar.DAY_OF_MONTH));
        System.out.println("星期几:"+cal.get(Calendar.DAY_OF_WEEK));
        System.out.println("今年的第几天:"+cal.get(Calendar.DAY_OF_YEAR));
	}


}
二:正则表达式
正则表达式(regex)是使用字符串来描述、匹配一系列符合某个句法规则的字符串
用途:
匹配、切割、替换、获取字符串
常见元字符:

元字符

描述

^

匹配输入字符串的开始位置

$

匹配输入字符串的结束位置

\d

匹配一个数字字符。等价于[0-9]

\D

匹配一个非数字字符。等价于[^0-9]

\s

匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \n\r\t\f]

\S

匹配任何非空白字符。等价于[^\n\r\t\f]

\w

匹配包括下划线的任何单个字符。等价于"[A-Za-z0-9_]"




\W

匹配任何非单个字符。等价于“[^A-Za-z0-9_]”

.

匹配除“\r\n”之外的任何单个字符

{n}

n是一个非负整数。匹配确定的n

{n,}

n是一个非负整数。至少匹配n

{n,m}

mn均为非负整数,其中n<=m。最少匹配n次且最多匹配m

          *

匹配前面的子表达式零次或多次(大于等于0)

                  ??

匹配前面的子表达式零次或一次

       +

匹配前面的子表达式一次或多次(大于等于1次)

“\”到底是个啥?****
在Java中反斜线”\”有三种含义:
1. 反斜线后面可以加特定字符,组成所谓的“转义字符”。eg:  \n    \t  
2. 用于取消元字符的意义,使元字符变为普通字符。eg:  “\\” 代表”\”。
3. 用于组成正则表达式中的元字符
     eg:  “\d” 在正则表达式中代表“匹配一个数字字符”。

2.1.Pattern类与Matcher类
    1. Pattern类与Matcher类都在java.util.regex包    中定义。
     2. Pattern类的对象代表正则表达式编译之后的对象;Matcher类主要用于执行验证。
     3.Pattern类的主要方法:
        public static Pattern compile(String regex);
        public Matcher matcher(CharSequence input)
        Matcher类的主要方法:
        public boolean matches();
eg:
package regex;

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

public class RegexMatch {

	public static void main(String[] args) {
		String birthday="1994-02-25";
		String regex="\\d{4}-\\d{2}-\\d{2}";
		Pattern pat=Pattern.compile(regex);  // 将正则表达式封装到Pattern对象中
		Matcher mat=pat.matcher(birthday);   // 创建一个匹配器Matcher,该Matcher对象可以根据正则表达式判断传入的字符串是否符合要求
		if(mat.matches()){
			System.out.println("匹配成功!");
		}else{
			System.out.println("匹配失败...");
		}

	}

}
2.2.String类对正则表达式的支持
1.  public boolean matches(String regex)
     判断字符串是否与给定的正则表达式匹配。


2. public String replaceAll(String regex,String replacement)   字符串替换


3. public String[] split(String regex) 字符串拆分 
eg:
package regex;

public class StringRegex {

	public static void main(String[] args) {
		String str="hello1java22regex333python4444C55555";
		if(str.matches("\\w+")){
			System.out.println("匹配成功!");
		}
		System.out.println("替换后的字符串为:"+str.replaceAll("\\d+","#")); //将数字字符替换为#
		
		String City="西安|绥德|四十铺|薛家寺";
		String[] array=City.split("\\|");
		for(String c:array){   //数组拷贝
			System.out.print(c+"  ");
		}

	}

}
1.  正则表达式中的问号?有两种作用:
          第一种作用:重复前面表达式0次或1次。
          第二种作用:在表示次数的元字符后加上?    代表取消默认的贪婪匹配模 式,变为“非贪婪匹配模式”。

eg:
package regex;

public class GreedyRegex {

	public static void main(String[] args) {
		String str="abbbbbbb";
		System.out.println("贪婪模式匹配: "+str.replaceAll("ab+","#"));    // "贪婪匹配"
		System.out.println("非贪婪模式匹配: "+str.replaceAll("ab+?","#"));

	}

}
输出结果:
贪婪模式匹配: #
非贪婪模式匹配: #bbbbbb
练习:中国的邮政编码都是6位
手机号码都是11位,并且第1位都是1
Email验证
eg:
package regex;

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

public class EmailRegex {

	public static void main(String[] args) {
		String emailRegex="\\w+@\\w+\\.\\w+\\.?\\w+";
		
        Scanner scan=new Scanner(System.in);
        System.out.print("请输入邮箱:");
        String email=scan.next();
        Pattern pat=Pattern.compile(emailRegex);  // 将正则表达式封装到Pattern对象中
		Matcher mat=pat.matcher(email);   // 创建一个匹配器Matcher,该Matcher对象可以根据正则表达式判断传入的字符串是否符合要求
		if(mat.matches()){
			System.out.println("恭喜,邮箱格式正确!");
		}else{
			System.out.println("对不起,邮箱格式不正确!");
		}

	}

}
package regex;

import java.util.Scanner;

public class PhoneNumber {

	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.print("请输入手机号码:");
		String phone=scan.next();
		if(phone.matches("1\\d{10}")){
			System.out.println("恭喜,手机号码符合要求");
		}else{
			System.out.println("不符合要求!");
		}
		

	}

}
三. 枚举类型
1. 枚举类型使用一组常量值来表示特定的数据集合,该集合中数据的数目确定(通常较少),且这些数据只能取预先定义的值。
2. Java枚举类型均自动继承java.lang.Enum类(该类继承了Object类)。
声明枚举类型:
[public] enum 枚举类型名称{
     枚举对象1,枚举对象2,…,枚举对象n ;
}


eg:  public enum Color{
       RED,GREEN,BLUE;
}
获取枚举对象的两种方法:
方法一:取得单个枚举对象
                枚举.对象名


方法二:取得全部枚举对象
                枚举.values()
     注意:枚举.values()返回的是一个对象数组,  可以通过遍历该对象数组获取所有枚举对象。
eg:
package enumdemo;

public enum ColorEnum {
   RED,GREEN,BLUE;
}



package enumdemo;

public class TestColor {

	public static void main(String[] args) {
		ColorEnum r=ColorEnum.RED;
		System.out.println(r);
		System.out.println("遍历所有枚举对象:");
		for(ColorEnum c:ColorEnum.values()){
			System.out.print(c+"  ");
		}

	}

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值