正则表达式
描述格式:符合一定规则的字符串。
- 字符类别
- 字符
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 + "日."); } }