正则表达式&Math&System&Data&Calendar

正则表达式

描述格式:符合一定规则的字符串。

  • 字符类别
  • 字符
x		字符x,如'a'表示字符'a'.
\\		反斜线
\n		新行(换行)符号('\u000A')
\r		回车符号('\u000D')
  • 字符类
[abc]		a或b或c。
[^abc]		除了a,b,c之外的字符。
[a-z][A-Z]	所有大小写字母。
[0-9]		0-9数字,含边界。
  • 预定义字符
.		表示任何字符。若是.,则需要\.。
\d		数字0-9。
\w		单词字符:[a-zA-Z_0-9]。正则表达式里组成单词的东西必须有这些东西组成。
  • 边界匹配
^		行的开头.
$		行的结尾.
\b		单词边界,不是单词的地方.for example:hello world?haha;xixi
  • Greedy 数量词
X? 		X,一次或一次也没有.
X* 		X,零次或多次. 
X+ 		X,一次或多次.
X{n}		 X,恰好 n 次. 
X{n,}		X,至少 n 次. 
X{n,m} 	  X,至少 n 次,但是不超过 m 次.
/*for example,校验首非0,数字其余位数字,合计15位.*/
public static boolean checckString(String str){
	String regex = "[1-9][0-9]{4,14}";
	boolean flag = str.mathchse(regex);
	return flag;
	//return str.matches("[1-9][0-9]{4,14}"); 一句话.
	//return str.matches("[1-9]\\d{4,14}");一句话.
}

分割功能

描述:按照给定的正则表达式分割字符串。

//public String[] split(String regex)
	String mainString = "12454543|43433";

	String regex = "\\|";	//这个是转义

	String regexAa = "-"	//这个不是转义.

	String regexBb = " "//这个不是转义.

	String[] mainArray = mainString.split(regex);
	System.out.println(mainArray[0]);
	System.out.println(mainArray[1]);
  • 带分隔符的String排序

    • 将带同一分割符号的数据,去除符号后进行排序并输出。
    package TestAa;	
    import java.util.Arrays;
    
    public class CompareAa {
    	public static void main(String[] args) {
    		// public String[] split(String regex)
    		String Aa = "66,11,22,33,44,55";
    		System.out.println("Source: " + Aa);
    
    		//分割.
    		String[] AaArray = Aa.split(",");
    		int[] IntArray = new int[AaArray.length];
    
    		//String[]->int[]转化
    		for (int i = 0; i < AaArray.length; ++i) {
    			IntArray[i] = Integer.parseInt(AaArray[i]);
    		}
    		Arrays.sort(IntArray);
    
    		//拼接
    		StringBuilder sf = new StringBuilder();
    		for (int i = 0; i < AaArray.length; ++i) {
    			sf.append(IntArray[i]).append(" ");
    		}
    
    		//StringBuilder->String转化
    		String Result = sf.toString().trim();
    		System.out.println("Result: " + Result);
    	}
    }
    
  • 正则表达式的替换

    • Public string replaceAll(String regex,String replacement).
    package TestAa;
    public class CompareAa {
    	public static void main(String[] args) {
    		String Aa = "44fasdfa4f646ffasd4f";
    		String regex = "\\d";
    		System.out.println("Aa:" + Aa);
    		System.out.println("--------------");
    		System.out.println(Aa.replaceAll(regex, "*"));
    
    	}
    }
    
  • 正则表达式的获取-Pattern&Matcher

    • 判断功能.
    /*for example:实现判断功能.*/
    //public static Pattern compile(String regex);
    	Pattern Aa = Pattern.compile("a*b");
    //public Matcher Matcher(CharSequence input);
    	Matcher m = Aa.matcher("aaaaab");
    //public static boolean matches(String regex, CharSequaence input);
    	boolean b = m.matches();
    	System.out.println("B:" + b);
    
    • 获取满足条件序列.
    /*获取达到预定字符数的单词,比如:3.*/
    package TestAa;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class CompareAa {
    	public static void main(String[] args) {
    		String strAa = "Javashì yī men min xig  ,bú jǐn xī  zhǒng yōu dn ,hái jiě lng ";
    		String regex = "\\b\\w{3}\\b";
    		Pattern Pa = Pattern.compile(regex);
    		Matcher ma = Pa.matcher(strAa);
    			//Matcher类:public boolean find(); 查找模式输入序列的下一个子序列。
    		while (ma.find()) {
    			//Matcher类: public String group(); 返回由以前匹配操作所匹配的输入的子序列。
    			System.out.println(ma.group());
    		}
    
    /*应该含有内部迭代器,find(),group()一次...
    StringBuilder sAa = new StringBuilder();
    sAa.append(ma.group()).append(" ");
    */
    
    	}
    }
    

Math类

描述:常用的数学运算,毋须导包。

  • 成员变量:

    public static final double PI;
    public static final double E;

  • 成员方法:

    public static int abs(int a); //有多个…
    public static double ceil(doubel a); //向上取整
    public static double floor(double a); //向下取整.
    public static int max(int a, intb);
    public static double pow(double a, double b); //a^b,a的b次方.
    public static double random()
    public static int round(float a); //四舍五入。
    public static doubel sqrt(double a); //正开方数.

      - 调用格式
      `Math.abs(-10)`	//10.
      ```
      random:[start,end]
      int num = (int)(Math.random * (end - start + 1) + start);
      ```
    

Random类

描述:生成随机数,有构造所以需要实例化-造对象…。

  • 构造方法

    Random()	//使用该构造方式创建对象,对象生成的随机数随机.
    Random(long seed)//使用该构造方法创建对象,对象生成的随机数种子化-固定.
    
  • 成员方法

    public int nextInt():	//返回int范围的随机数.
    public int nextInt(int n)://返回[0,n)范围随机数.
    

System类

描述:包含一些有用的类字段和方法,它不能被实例化-不能造对象.

  • 成员方法
    public static void gc();		
    public static void exit(int status);
    public static long currentTimeMillis();
    public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
    
  •   > System.gc()运行垃圾回收器.垃圾回收器,会默认调用Object底层的finalize()清理垃圾,除非肯定垃圾过多,否则不使用。一则是会自己运行,二则是强制启动会占用过的资源。
    
  •   > System.exit(),终止当前的虚拟机,非0表示异常退出。
    
  •   > System.currentTimeMillils(),获取当前时间,以毫秒为单位,可计算运行时间。
    
  •    > System.arraycopy()//src:源数组;srcPos:源数组起始位置;dest:目标数组;destPos:目标数据的起始位置;length:复制数组的长度。--目标对应位置的元素被覆盖。
    

BigInteger

描述:只需要掌握一种用法即可。

  • 构造方法

    BigInteger Bi = new BigInteger(String);
    BigInteger Bi = new BigInteger("1000");
    
  • 类成员方法

    public BigeInteger add(BigeInteger val);	//加
    public BigeInteger substract(BigeInteger val);//减
    public BigeInteger multiply(BigeInteger val);//乘
    public BigeInteger divide(BigeInteger val);//除
    public BigeInteger[] divideAndRemainder(BigeInteger//返回商-余数数组. val);
    

BigDecimal

描述:不可变的、任意精度的有符号十进制数。只需要掌握一种构造方法即可。

  • 构造方法

    BigDecimal Bi = new BigDecimal(String);
    BigDecimal Bi = new BigDecimal("0.0001");
    
  • 类成员方法

    public BigDecimal add(BigDecimal val);	//加
    public BigDecimal substract(BigDecimal val);//减
    public BigDecimal multiply(BigDecimal val);//乘
    public BigDecimal divide(BigDecimal val);//除
    

//返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。(商 小数位数 舍取规则)
public divide(BigDecimal divisor, int scale, RoundingMode roundingMode)-BigDecimal.ROUND_HALF_UP;

Data

  • 构造方法
    • public Data(); 默认毫秒值创建对象。
    • public Data(long data); 根据给定毫秒值创建对象。
  • 成员方法
    Date da = new Date(); 
    long timeMilli = da.getTime();//得到时间的毫秒值,起始为1975年0时.
    

SimpleDateFormat

  • 主要方法:

    Format类方法:public String format(Object obj)	格式化一个对象以生成一个字符串。 
    
    SimpleDateFormat类方法:public Date parse(String text)     解析字符串的文本,生成 Date。
    
  • String&Date转换

    /*for example:结合Date类.*/
    package TestAa;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class CompareAa {
    	public static void main(String[] args) throws ParseException {
    		//Date---->String;
    		Date da = new Date();
    		System.out.println("DateSource:" + da);
    		SimpleDateFormat simForm = new SimpleDateFormat("YYYY年MM月dd日  HH:mm:ss");
    		String top = simForm.format(da);
    		System.out.println("Simple: " + top);
    		//String---->Date;
    		String Aa = "17:31 2018/10/27";
    		SimpleDateFormat simCc = new SimpleDateFormat("HH:mm yyyy/MM/dd");
    		Date test = simCc.parse(Aa);
    		System.out.println("Test:"+ test);
    		//匿名对象&链式编程.
    		System.out.println("-------------分割线------------");
    		System.out.println("一句话:"+ dateToString(da, "YYYY年MM月dd日  HH:mm:ss"));
    	}
    	public static String dateToString(Date da, String format){
    	return new SimpleDateFormat(format).format(da);
    	}
    }
    
  • 总结
    SimpleDateFormat对应的函数,若自己认为应该存在但是实际上无法查找,可能是在继承的父类里面。如上式使用到的两个函数…

Calendar类

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

  • Java.util.Calendar,需要导包。
  • 构造方法
protected  Calendar()	构造一个带有默认时区和语言环境的 Calendar。 
protected  Calendar(TimeZone zone, Locale aLocale)	构造一个带有指定时区和语言环境的 Calendar。 
  • 成员方法
    系统默认的类型,文章统一给成public性质。

    public static Calendar getInstance()	使用默认时区和语言环境获得一个日历。
    
    Calendar cal = Calendar.getInstence();	本质返回的是子类对象。
    
  • 举例

    package TestAa;
    import java.util.Calendar;
    
    public class CompareAa {
    	public static void main(String[] args) {
    		Calendar now = Calendar.getInstance(); // 子类对象
    		int yY = now.get(Calendar.YEAR);
    		int mM = now.get(Calendar.MONTH);
    		int dD = now.get(Calendar.DATE);
    		System.out.println(yY + "年 " + (mM+1) + "月 " + dD + "日");
    	}
    }
    
    
  • 成员方法

  • abstract  void add(int field, int amount)	根据日历的规则,为给定的日历字段添加或减去指定的时间量。-直接使用,子类已重写。
     public final void set (int year, int month, int date)	设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。 			
    
  • 上述成员方法举例

    package TestAa;
    import java.util.Calendar;
    
    public class CompareAa {
    	public static void main(String[] args) {
    		Calendar now = Calendar.getInstance(); // 子类对象
    		int yY = now.get(Calendar.YEAR);
    		int mM = now.get(Calendar.MONTH);
    		int dD = now.get(Calendar.DATE);
    		System.out.println(yY + "年 " + (mM + 1) + "月 " + dD + "日");
    
    		// 10年后的1月前10天前.
    		// abstract void add(int field, int amount)
    		now.add(Calendar.YEAR, 10);
    		now.add(Calendar.MONTH, -1);
    		now.add(Calendar.DATE, -30);
    		int yY1 = now.get(Calendar.YEAR);
    		int mM1 = now.get(Calendar.MONTH);
    		int dD1 = now.get(Calendar.DATE);
    		System.out.println(yY1 + "年 " + (mM1 + 1) + "月 " + dD1 + "日");
    
    		// public void set(int year, int month, int date);
    		now.set(2025, 9, 25);
    		int yY11 = now.get(Calendar.YEAR);
    		int mM11 = now.get(Calendar.MONTH);
    		int dD11 = now.get(Calendar.DATE);
    		System.out.println(yY11 + "年 " + mM11 + "月 " + dD11 + "日");
    
    	}
    }
    

总结-计算任一年2月份天数:

  • 	package TestAa;
    	
    	import java.util.Calendar;
    	import java.util.Scanner;
    	
    	public class CompareAa {
    		public static void main(String[] args) {
    			System.out.println("Please input date:");
    			Scanner sc = new Scanner(System.in);
    			int year = sc.nextInt();
    			Calendar cal = Calendar.getInstance();
    			cal.set(year, 2, 1);
    			cal.add(Calendar.DATE, -1);
    			int yY = cal.get(Calendar.YEAR);
    			int dD = cal.get(Calendar.DATE);
    			System.out.println(yY + "年, 2月份只有 " +  dD + "日.");	
    		}
    	}
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值