java学习--常用类及正则表达式

声明:由于学习所用环境为JDK1.8,所有java代码均在JDK1.8环境中测试通过,如果环境发生变化,可能会发生错误!

一、常用类

1、Math类
(1)Math 类提供了一序列基本数学运算和几何函数的方法。
    Math类是final类,并且它的所有成员变量和成员方法都是静态的

(2)Math类的常用属性和方法

a、静态常量--PI:圆周率的double值

b、静态方法:

	      System.out.println("5的3次方为:"+Math.pow(5,3));
        System.out.println("9的平方根:"+Math.sqrt(9));
        System.out.println("-8.90的绝对值是:"+Math.abs(-8.90));
        System.out.println("8.4向上取整:"+Math.ceil(8.4));
        System.out.println("6.9向下取整:"+Math.floor(6.9));
        System.out.println("6.4四舍五入的结果:"+Math.round(6.4));
        System.out.println("8.5四舍五入的结果:"+Math.round(8.5));
        System.out.println("随机返回一个从0.0(包括)到1.0(不包括)值:"+Math.random());
        int ran=(int)(Math.random()*10)+2;
        System.out.println("随机返回2到11的数字:"+ran);
        System.out.println("圆周率是:"+Math.PI);
2. Random类
Random类的对象可以生成“伪随机数”。
常用方法:
      (1)public int nextInt(int   bound)
      返回从0(包含)到bound(不包含)的一个“伪随机”   整数值。
      (2)public boolean nextBoolean()
      返回一个“伪随机”的boolean值

                Random ran=new Random();
		int result=ran.nextInt(16)+3;
		System.out.println("随机返回3到18的数字:"+result);
		System.out.println("随机返回boolean值:"+ran.nextBoolean());
3. System类
成员变量
System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
成员方法
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);
exit()方法
public static void exit(int status)

该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。

                System.out.println("正常输出标准信息!");
		System.err.println("输出标准错误信息!");
		int[] a={1,5,6,9,4};
		int[] b=new int[5];
		System.arraycopy(a, 1,b,3, 2);
		for(int x:b){
			System.out.print(x+" ");
		}
		System.exit(0);  //正常退出程序
gc()方法
public static void gc()

该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。
垃圾回收时,会先调用finalize()方法,释放非java资源
public class Person {
    @Override
    protected void finalize() throws Throwable {
    	System.out.println("调用gc之前执行finalize");
    }
}
public class Finalizedemo {

	public static void main(String[] args) {
		Person person=new Person();
		person=null;
		System.gc();
		//System.out.println("123");
	}

}
currentTimeMillis方法
public static long currentTimeMillis()

以毫秒为单位返回从1970年1月1日午夜到当前时间的毫秒数
        long start=System.currentTimeMillis();
        long end=System.currentTimeMillis();
        System.out.println("耗时"+(end-start)+"毫秒");
4. Runtime类
作用:使应用程序与其运行的环境相关联
通过使用getRuntime()静态方法获得实例。
exec(String command)在单独的进程中执行指定的字符串命令,该方法返回Process对象,使用Process对象的 destroy()方法可以杀掉进程
        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");
}
		} catch (IOException e) {
			e.printStackTrace();
		}
}


5. Date类与SimpleDateFormat类
Date类:表示日期和时间
提供操作日期和时间各组成部分的方法
SimpleDateFormat类
用于定制日期时间的格式
                Date date=new Date();
		System.out.println(date);
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String now=sdf.format(date);
		System.out.println(now);
6.  Calendar类:
  抽象类
  用于设置和获取日期/时间数据的特定部分

Calendar类提供一些方法和静态字段来操作日历

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


邮箱的验证:

public static void main(String[] args) {
		System.out.println("请输入邮箱:");
	    Scanner scan=new Scanner(System.in);
	    String email=scan.next();
	    String regex="\\w+@\\w+.\\w+";
	    Pattern pattern=Pattern.compile(regex);
	    Matcher matcher=pattern.matcher(email);
	    if(matcher.matches()){
	    	System.out.println("输入正确");
	    }else{
	    System.out.println("输入错误");
	    }
	}

正则表达式的分组

public static void main(String[] args) {
		String string="hdjjfkfdmnjava111fhfkdjava222fhjjksckjava333";
		String regex="(java\\d+)";
		Pattern pattern=Pattern.compile(regex);
		Matcher matcher=pattern.matcher(string);
		while(matcher.find()){
			System.out.println(matcher.group(1));  //“1”表示正则表达式的第一个分组(正则表达式的()表示一个分组)
		}
	}
反向引用

public static void main(String[] args) {
	   String string="adhxyzxyzcjifjafxafxdhiuwsdrsdr";
	   /* 
	    * 在正则表达式中,\num代表“反向引用”第num个分组中的内容
	    */
	   String regex="([A-Za-z]{3})\\1";
	   Pattern pattern=Pattern.compile(regex);
	   Matcher matcher=pattern.matcher(string);
	   while(matcher.find()){
		   System.out.println(matcher.group(0));
	   }
“\”的几种解释:

1. 反斜线后面可以加特定字符,组成所谓的“转义字符”。eg:  \n    \t  
2. 用于取消元字符的意义,使元字符变为普通字符。eg:  “\\” 代表”\”。
3. 用于组成正则表达式中的元字符。eg:  “\d” 在正则表达式中代表“匹配一个数字字符”。
2、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();
3、String类对正则表达式的支持
(1)public boolean matches(String regex)  判断字符串是否与给定的正则表达式匹配。
(2)public String replaceAll(String regex,String replacement)   字符串替换
(3) public String[] split(String regex) 字符串拆分

public static void main(String[] args) {
		String string1="helloabbbbbb12345";
		String string2="中国|加拿大|美国|墨尔本";
		System.out.println(string1.matches("hello\\w+"));//判断字符串是否与给定的正则表达式匹配
        System.out.println(string1.replaceAll("\\d","*"));//字符串替换
        String[] array=string2.split("\\|");  //字符串拆分
        for(String x:array){
    	   System.out.print(x+" ");
     }
补充:
     1.  正则表达式中的问号?有两种作用:
          第一种作用:重复前面表达式0次或1次。
          第二种作用:在表示次数的元字符后加上?
                                代表取消默认的贪婪匹配模式,变为“非贪婪匹配模式”。
public class GreedyRegex {

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

	}

}

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

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

方法二:取得全部枚举对象
                枚举.values()
注意:枚举.values()返回的是一个对象数组,  可以通过遍历该对象数组获取所有枚举对象。
public enum SexEnum{
    
	MALE("我是男生",1), FEMALE("我是女生",0); // 枚举对象必须写在第一行
	private String name;
	private int id;
	
	private SexEnum(){
	}
	
	// 枚举的构造方法必须是private
    private SexEnum(String name,int id){   
		this.name=name;
		this.id=id;
	}
    
    // 自定义的方法,通过id查找枚举对象
    public static SexEnum findSexById(int id){
    	for(SexEnum sex:SexEnum.values()){
    		if(sex.id==id){
    			return sex;
    		}
    	}
    	return null;
    }
public class TestSex {

	public static void main(String[] args) {
		SexEnum sex=SexEnum.findSexById(1);
		System.out.println(sex);
		

	}

}




          




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值