常用API(StringBuffer类和正则表达式以及常用的一些类)

时间:2022-03-25 12:00:41


这边文章中我会把自己在学习StringBuffer和正则表达式,和常用的类Math,Random,PatternMatcher,BinInteger,System,DateFormat以及他的子类SimpDateFormat,Calender类,我会把这些类中在今后开发过程中涉及到的方法我会列举具体案例分析,(个人学习理解,欢迎建议,不喜勿喷)

(一)StringBuffer

StringBuffer是字符缓冲区 1,是一个线程安全的可变字符序列,也可以把它看成一个可变的容器. 2,可以操作多种数据类型,而数字只能是一种. 3,最好会通过toString()方法转成字符串.
注意:StringBuffer和StringBuilder基本一样但是,开发中我们使用StringBuild,两者区别在于,前者线程安全或者线程不安全,效率高之后的博客中我会提及到jdk1.5特性中lock的问题,它可以解决线程安全问题也这样StringBuild不仅仅效率高而且安全,但是这里我们介绍StringBuffer,因为两者功能方法是一致的.

(1):StringBuffer构造方法

public StringBuffer():无参构造方法
public StringBuffer(int capacity):指定容量的字符串缓冲区对象
 public StringBuffer(String str):指定字符串内容的字符串缓冲区对象

(2)StringBuffer常见的功能(方法)
1,存储(增删改查)
StringBuffer append();将指定的数据作为参数添加到已有的数据结尾处.
StringBuffer insert (index,数据);可以将数据插入到指定位置处.
(访问的还是原缓冲区对象)
2,删除
StringBuffer delete(start,end);删除缓冲区中的数据,包含开头不含结尾.
StringBuffer deleteCharAt(index);删除index指定位置上的字符


3,获取
chat charAt(int index)
int indexOf(String str);
int lastIndexOf(String str);
int length();

注意:
 String substring(int begin);
 String substring(int begin,int end);
 返回的不是StringBuffer,是String


4,修改(要玩就玩这个)
StringBuffer replace(int begin,int end,String str)        替换当中的一部分.
//头   尾  替换的部分.
void setCharAt(int index,char ch);                      替换当中的一个字符(不返回)
以为替换单个字符用''来引用

5,反转.

 StringBuffer reverse();


6,  将缓冲区中指定数据存储到指定  字符数组  中.
void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin);
圆的开始位   圆的结束位      目的     目的开始位
eg:"abcdef"==>char[0]=a;char[1]=b;char[2]=b;等等

StringBuffer sb = new StringBuffer("abcdef");//建立一个对象
char[] chs = new char[4];//建立一个
sb.getChars(1,4,chs,1);
//从1开始,到4,存到chs去,从chs1开始存.

(3)String转换成StringBuffer 1,通过构造函数 StringBuffer sb = new StringBuffer(String str); 2,通过append方法,(这个方法返回值的是StringBuffer) (4)StringBuffer转换成String
1,toString() 2构造方法 String s = String(StringBuffer sb); 3,substring()返回值是String类型的
(5)基本数据类型(包装类) 这里我就拿int的包装类来举例,来讲解一些Integer的常用方法,和JDK1.5新特性自动拆箱和装箱机制.
1,构造方法
public Integer(int value)
public Integer(String s)
(2,)int转换成String类型
1,直接和"" 字符串进行拼接. 2,通过String.valueOf()  可以把任意类型转换
(3,)String类型转换成int类型
1,pareXxx方法可以转换(除了char类型,因为他有自己特有方法toCharArray())

(6)自动拆箱和装箱

Integer i = 100;    自动装箱 i+=200;自动拆箱
在这里提一下需要注意的地方就是, -128到127是byte的取值范围,如果在这个取值范围内,自动装箱就不会新创建对象,而是从常量池中获取
给一个代码说明一切
public class Demo5_Integer {

/**
* @param args
*/
public static void main(String[] args) {
Integer i1 = new Integer(97);
Integer i2 = new Integer(97);
System.out.println(i1 == i2);//false
System.out.println(i1.equals(i2));//true
System.out.println("-----------");

Integer i3 = new Integer(197);
Integer i4 = new Integer(197);
System.out.println(i3 == i4);//false
System.out.println(i3.equals(i4));//true
System.out.println("-----------");

Integer i5 = 127;
Integer i6 = 127;
System.out.println(i5 == i6);//true
System.out.println(i5.equals(i6));//true
System.out.println("-----------");

Integer i7 = 128;
Integer i8 = 128;
System.out.println(i7 == i8);
System.out.println(i7.equals(i8));//true

/*
* -128到127是byte的取值范围,如果在这个取值范围内,自动装箱就不会新创建对象,而是从常量池中获取
* 如果超过了byte取值范围就会再新创建对象
*
* public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)//i>= -128 && i <= 127
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
*/
}

}

(二)正则表达式(在这里我只写一些比较常见的)
正则表达式的概述:是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用

(1)字符类

[abc] a、b 或 c(简单类) 
[^abc] 任何字符,除了 a、b 或 c(否定) 
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) 
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集) 
[a-z&&[def]] d、e 或 f(交集) 
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去) 
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去) 

(2)预定义字符类
 . 任何字符(与行结束符可能匹配也可能不匹配) 
\d 数字:[0-9] 
\D 非数字: [^0-9] 
\s 空白字符:[ \t\n\x0B\f\r] 
\S 非空白字符:[^\s] 
\w 单词字符:[a-zA-Z_0-9] 
\W 非单词字符:[^\w] 

(3)数量词

    
X? X,一次或一次也没有
    
X* X,零次或多次
     X+ X,一次或多次
     X{n} X,恰好 n 次 
    X{n,} X,至少 n 次 
    X{n,m} X,至少 n 次,但是不超过 m 次 

(三)Pattern和Matcher类常见的操作.
对于以下我介绍的类只要适当了解即可: 一般这两个类通常使用在正则表达式的获取功能上下面给一个通常的介绍
Pattern类全部是静态的方法,可以直接类名调用,也就是说他的构造函数被私有化 了.下面列举,常见方法. complie()  将正则表达式编译到Pattern模式中 pattern() 返回其中编译过在这个模式中的正则表达式      返回值是String matecher() 创建匹配给定输入与此模式的匹配器  返回值是Matcher
Matcher类全部静态,可以类名调用 find() 查找与这个模式匹配的输入序列的下一个子序列 matches() 尝试将整个区域与模式匹配
一般这样出现:
Patter p = Pattern.compile();  获取编译表达式
Matcher m = p.matcher(); 获取匹配器
boolean b = m.matches(); 看是否匹配

(四)Math,Random,System,BigInteger,Date,SimpleDateFormat,Calendar类

(1)Math类和Random类,System类BinInteger类

只需要掌握一些方法既可以* public static int abs(int a)
* public static double ceil(double a)      
获取比a大的最小整数
* public static double floor(double a)
获取比a小的最大的整数
* public static int max(int a,int b) 

* public static double pow(double a,double b)
返回a的b次米
* public static double random()
返回0.0到0.1(不包括1.0)的随机数
* public static int round(float a) 参数为double的自学
求四舍五入
* public static double sqrt(double a)
去a的平方根
1)Random类方法构造函数public Random()
public Random(long seed)
成员方法public int nextInt()
public int nextInt(int n)
2)System类方法
public static void gc()不定时的垃圾回收
public static void exit(int status)
直接退出
 public static long currentTimeMillis()
获取当前时间毫秒值
3)BigInteger类可以让超过Integer范围的数据进行运算 
 构造方法  public BigInteger(String val)

成员方法public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)

public BigInteger multiply(BigInteger val)
乘以
public BigInteger divide(BigInteger val)
除以

(2)Date类和Calendar类,SimpleDateFormat类.

(1)Date类的方法基本上已经过时了,它基本上被Canlendar抽象类替代了,这里Date就介绍几个方法Date类的概述是util包下的,不能导入sql包的
类 Date 表示特定的瞬间,精确到毫秒。 
构造方法
 public Date()
public Date(long date)
成员方法
 public long getTime()返回时间对象,获取,毫米值,Syste中也有一个同样的方法
public void setTime(long time)

设置毫秒值,改变时间对象
(2)Calendar类和SimpleDateFormat类
Calendar类是一个抽象的,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法.而且全部静态的使用 可以类名调用.

(1)Calendar类的常用方法.
public static Calendar getInstance() 获取当前时区的日历
public int get(int field)field(字段常量) 获取该个字段的日期
他的set和add方法
public void add(int field,int umout) 相应字段日期时间的加减
public final void set(int year,int mouth,int date) 修改制定字段的时间
下面通过一个案列说明下(只写相应代码)
<span style="font-size:24px;">Calendar c = Calendar.getInstance();   获取当前时区日历   这里是父类引用指向子类对象.
SOP(c.get(Calendar.YEAR));</span>


set和add方法.
<span style="font-size:24px;">Calendar c = Calendar.getInstance(); // 获取当前时间对象
c.add(Calendar.YEAR,-1);//减去相应字段时间的相应时间
c.set(Calendar.YEAR,2000);//修改制定字段</span>

(2)SinmpleDateFormat.类的常用方法.
格式化时间日期
在聊SinmpleDateFormat之前我先谈谈DateFormate,这个是一个抽象类,他有一个方法是 format()这个是我们在他的子类要用到的SinmpleDateFormat
1)SinmpleDateFormat.
构造方法 public Format(); 这个是父类的方法.因为子类中没有一个参数的这个方法所以调用父类的方法
2.常用的方法
A,将日期对象转换成字符串
通过代码来说
<span style="font-size:24px;">Date d = new Date();
SimpleDateFormat sdf = new SinmpleDateFormat("yyyy年MM月dd日HH:mm:ss");//格式化对象
System.out.println(sdf.format(d));
//format() 方法是父类的方法</span>


B,将时间字符串转换成日期对象. 通过代码说明
<span style="font-size:24px;">String str = "2000年08月08日 08:08:08";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date d = sdf.parse(str);//将时间字符串转换成日期对象
System.out.println(d);</span>



一口气写完,累死了.不过挺充实的每写一篇,自己有温习了一次,每天进步一点点.