黑马程序员——高新技术---Java基础-常用类-正则表达式,Math类,Random类,System类,Date类

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

正则表达式:

字符类:

利用正则表达式验证字符串是否已h开头,以d结尾,而且中间只有一个字符,而且是原元音字母a,e,i,o,u?

String str= "had";

Stringregex = "h[aeiou]d";

str.matches(regex);

 

逻辑运算符:&&,|

判断小写辅音字母

Stringregex ="[a-z&&[^aeiou]]";

判断首字母为h,或H,后跟一个元音字母,并以d结尾

String regex ="[hH][aeiou]d";

Stingregex = "[h|H][a|e|i|o|u]d";//这个跟上面的效果是一样的。

 

预定义字符类:

1,  .任何字符

2, \d任何数字,是[0-9]的简写形式

3, \D任何非数字[^0-9]的简写形式

4, \s任何空白字符。空格,制表符(\t)换行符(\n

5,\S任何非空白字符,是[^\s]的简写形式

6,\w任何大写、小写字母,或数字或下划线,是[a-zA-Z_0-9]的简写形式

7,\W任何非单词字符。是[^\w]的简写形式

 

判断是三位的数字:

String regex = "\\d{3}"

 

判断字符串是否以h开头,中间是任何字符,并以d结尾:

String regex ="h.d";

 

判断字符串是否是"had.";

Stringregex = "had\\.";

 

判断手机号码(1开头,第二位是:3,58,后跟9位数字)

String regex ="1[358]\\d{9}"

 

限定符:

X?              X,一次或一次也没有

X*              X,零次或多次

X+              X,一次或多次

X{n}           X,恰好 n

X{n,}          X,至少 n

X{n,m}      X,至少 n次,但是不超过 m

 

正则表达式-分组

A: String[] arr=str.split(",");

B: String[] arr = arr =str.split("\\.");

C: String[] arr = str.split("");

  String[] arr = str.split(" +");

D: String[] arr=str.split("(.)\\1+");

组和捕获

捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C)))中,存在四个这样的组:

 

1    ((A)(B(C)))

2    A

3    (B(C))

4    (C)

 

组零始终代表整个表达式。

 

以左括号(来找是第几个组.

为了提高规则的复用,()进行封装,每一个括号都有一个编号,1开始.

为了复用这个规则,可以通过编号来完成该规则的调用.需要对编号数字进行转义.

\\1就代表获取第一组规则,表示这个地方的字符和第一组规则相同


A:String reg ="[a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\\.[a-zA-Z]+)+";//组出现一次或者多次

B. da jia ting wo shuo,jin tian yaoxia yu,bu shang wan zi xi,gao xing bu?

 

验证如下序列号:

String str =“DG8FV-B9TKY-FRT9J-6CRCC-XPQ4G”;

方式一:

str.matches(“[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}”;

方式二:

str.matches("([A-Z0-9]{5}-){4}[A-Z0-9]{5}");

str.matches(“[A-Z0-9]{5}(-[A-Z0-9]{5}){4}”);

 

 

String类切割功能

使用String类中的split方法。

举例:

A.切割字符串"aa,bb,cc";

B.切割字符串"aa.bb.cc";

C.切割字符串“-1 99 4 23”;

"-1   99 4    23";

   将切割后的字符串按升序排序

 

替换功能

使用String类中的replaceAll方法。

A: String s =str.replaceAll("(.)\\1+","#");

B: //$符号 可以获取到该方法中正则实际参数中的某一个存在的组,通过$加组编号即可

  String s = str.replaceAll("(.)\\1+","$1");

CString s = str.replaceAll("\\d+","*");

   String s = str.replaceAll(“\\d{5}","*");

举例:

用”#”替换叠:"sdaaafghccccjkqqqqql";

把多个叠词变成一个。用上面的字符串;

实际应用:有些论坛不允许发电话,qq,银行账号等.把数字用“*”替换wert13245asfklwyoeworewsfd6744232433fafs

练习一:邮件校验

获取功能:PatternMatcher的概述

获取由三个字符组成的单词

 

 

 

 

Math:

 

包含算数运算的方法。没有构造方法。全是静态方法,用类名打点直接调用。

public staticint abs(int a)返回 int 值的绝对值。

public staticdouble ceil(double a)返回最小的(最接近负无穷大)double值,该值大于等于参数,并等于某个整数。(向上取整)

public staticdouble floor(double a)返回最大的(最接近正无穷大)double值,该值小于等于参数,并等于某个整数。

public staticint max(int a,int b) min自学 ab的最大值

public staticdouble pow(double a,double b)返回第一个参数的第二个参数次幂的值。

public staticdouble random()返回带正号的 double值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。

public staticint round(float a)参数为double的自学返回最接近参数的 int。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为

int类型。(四舍五入的取整)

public staticdouble sqrt(double a)返回正确舍入的double 值的正平方根。(求平方根运算)

 

Random类:java.util.Random;

 

此类用于产生随机数

如果用相同的种子创建两个Random实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。

它与Math()类的random()类似,但Random类的功能更强大,随机性更强。

 

构造方法

publicRandom()

publicRandom(long seed)  //使用相同的种子生成的随机数序列是固定的,不会变的。

 

成员方法:

publicint nextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。

publicintnextInt(int n) 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。(生成0--n-1之间的随机数)

 

获取随机数:1-100之间

int number =(int)(Math.random()*100)+1

 

获取随机数:startend之间

public static intgetRandom(int start, int end) {

return(int) (Math.random() *(end - start + 1)) + start;

}

 

获取0--某个范围的随机数可以用Random类的成员方法publicintnextInt(int n) (生成的是0--n-1之间的随机数)

Random r = new Random();

int n = r.nextInt(10);//获取的是0--9之间的随机数。

 

System:System类包含一些有用的类字段和方法。它不能被实例化。

public static void gc()运行垃圾回收器

public static void exit(int status)结束java虚拟机,结束掉应用程序

public static long currentTimeMillis()返回以毫秒为单位的当前时间(经常被我们用来计算代码执行时间)

public static voidarraycopy(Object src,int srcPos,Object dest,int destPos,int length)从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。

 

BigInteger: java.Math.Biginteger

可以将超过Integer范围内的数据进行运算

构造方法

public BigInteger(Stringval)

 

成员方法:

public BigIntegeradd(BigInteger val) //

public BigIntegersubtract(BigInteger val)//

public BigIntegermultiply(BigInteger val)//

public BigIntegerdivide(BigInteger val)//

public BigInteger[]divideAndRemainder(BigInteger val)//返回包含 (this / val) 后跟(this % val) 的两个 BigInteger 的数组。 (这个封装的BigInter[]的长度是2,一个是除法的结果,一个是取余的结果)

 

BigInteger bi1 = newBigInteger("100");

BigInteger bi2 = newBigInteger("50");

System.out.println(bi1.add(bi2));//150

System.out.println(bi1.subtract(bi2));//50

System.out.println(bi1.multiply(bi2));//5000

System.out.println(bi1.divide(bi2));//2

BigInteger[] b =bi1.divideAndRemainder(bi2);

System.out.println(b[0]);//2

System.out.println(b[1]);//0

 

BigDecimal类:

由于在运算的时候,float类型和double很容易丢失精度,所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal

浮点运算不要使用基本数据类型double

构造方法

public BigDecimal(String val)

成员方法:

public BigDecimal add(BigDecimal augend)//

public BigDecimal subtract(BigDecimalsubtrahend)//

public BigDecimal multiply(BigDecimalmultiplicand)//

public BigDecimal divide(BigDecimaldivisor)//

public BigDecimal divide(BigDecimaldivisor,int scale, int roundingMode)//(这里可以设置取小数点后多少位,四舍五入等方法)

 

日期类:

Date  java.util.Date

构造方法

public Date() 使用当前系统时间构造

public Date(long date) 使用一个毫秒值构造

成员方法

public long getTime() 获取毫秒值

public void setTime(longtime) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time毫秒的时间点。设置一个新的毫秒值。

 

DateFormat

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。

是抽象类,所以使用其子类SimpleDateFormat

SimpleDateFormat构造方法

public SimpleDateFormat() 用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

public SimpleDateFormat(Stringpattern) 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

 

-->SimpleDateFormat sdf1 = newSimpleDateFormat("yyyy-MM-dd HHmmss")

Ststem.out.println(sdf1.format(new Date()));

 

成员方法

public final Stringformat(Date date) 将一个 Date 格式化为日期/时间字符串。

public Date parse(Stringsource)  从给定字符串的开始解析文本,以生成一个日期。

 

Calendar

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

可以使用子类:

Java.util.GregorianCalendar

 

可以使用Calendar类的成员方法,获取一个子类对象:

public static Calendar getInstance() 通过这个方法获取的是其实是GregorianCalendar的对象。这个就是当前的日期

常用的成员方法:

public int get(int field)此方法兼容性很强,可以获取任何字段的值,可以通过参数来区分;参数是一个int值,这些int值在Calendar类中有相应的常量表示。

public void add(int field,intamount)在某个字段上添加amount的值;

public final void set(intyear,int month,int date)设置日历字段YEAR、MONTH 和 DAY_OF_MONTH 的值。保留其他日历字段以前的值。

 ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

你可能感兴趣的:(java基础学习笔记)