Java 正则功能
java.util.regex.Pattern 中
java String 支持 正则
mathch(正则表达式)
将一个字符串与正则表达式进行匹配,如果匹配成功就返回true 否则返回false
package day24;
import java.util.Scanner;
import org.apache.commons.lang.StringUtils;
public class Demo01 {
public static void main(String[] args) throws Exception{
Scanner in =new Scanner(System.in);
String name = in.nextLine();
boolean pass = name.matches("^\\w{8,10}$");
System.out.print(pass);
}
}
package day24;
public class Demo02 {
public static void main(String[] args) throws Exception{
String str = "2016-01-13,192.168.0.100,admin,1q@W3E";
String[] data = str.split(",");//按照指定字符串转换为数组
System.out.println(Arrays.toString(data));
String s = str.replaceAll(",", "|");//替换所有匹配的字符串
System.out.println(s);
char[] chs = s.toCharArray();//字符组转为字符数组
System.out.println(Arrays.toString(chs));
String ss = new String(chs,0,10);//将字符数组转为字符串可以加范围
System.out.println(ss);
ss = new String(chs);
System.out.println(ss);
}
}
String 不可变得字符串
StringBuilder 可变字符串
这个类所产生的对象默认会有16个字符的长度
String{char[]+算法(不改变内容,经常返回新字符串)}
StringBuilder{char[] + 算法(改变了char[]的内容,当容量不足时候,进行扩容操作)}
String 和 StringBuilder 可以相互转换
toString可以将StringBuilder转为String
package day01;
public class Demo04 {
public static void main(String[] args) throws Exception{
//StringBuilder 的API 方法是对其内部的char[]内容进行增删改查
StringBuilder sb =new StringBuilder();
sb.append("浪").append("浪漫").append("浪漫的").append("浪漫的偷")
.append("浪漫的偷笑").delete(0, 1).insert(0, "lmdtx");
System.out.println(sb);
}
}
java的字符串连接的过程是利用StringBuilder 实现的
大量字符串计算计算利用StringBuilder完成。
package day24;
public class Demo05 {
public static void main(String[] args){
System.out.println(test2(500000));
System.out.println(test1(500000));
}
public static long test1(int n){
long start = System.currentTimeMillis();
String s ="";
for(int i = 1; i<n;i++){
s+="A";
}
long end = System.currentTimeMillis();
return end-start;
}
public static long test2(int n){
long start = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for(int i = 0;i<n;i++){
sb.append("A");
}
String s = sb.toString();
long end = System.currentTimeMillis();
return end-start;
}
}
StringBuffer 开始就有 是线程安全的同步处理的性能稍慢。 多线程使用 这个
StringBuilder java1.5 是非线程安全的,并发处理的性能稍快。 单线程使用这个
用法的一样 就是把类名换一下
java 中代表字符串的有char[] String StringBuilder
char[] 只是字符数据,没有算法,可以自己实现,麻烦
String 是不可变字符串,是最常用的字符串,java字符数据大多使用String输出
StringBuilder 是可变字符串,在字符串的内容计算, 采用StringBuilder实现
java 中的时间
时间计算的远离:是毫秒数的+- 与历法规则有关
是一个long类型的整数,是GMT19700101到现在累计的毫秒数
java.util.Date 封装了公元历法算法
Date{long + 公元历法 算法} 有缺点:2000年问题;时区和国家问题
不适合时间计算
使用Calendar替代
Date API 方法
getYear(); 有2000年问题,返回2位数年份
getMonth();
getDate();
getDay();
getTime(); 返回的是long毫秒数
setTime(long); 修改时间毫秒数
package day24;
import java.util.Date;
import java.text.SimpleDateFormat;
public class Demo06 {
public static void main(String[] args){
Date date = new Date();//默认是当前的时间
int year =date.getYear()+1900;
int month = date.getMonth()+1;
int d = date.getDate();
int day = date.getDay();
int hours = date.getHours();
int minutes = date.getMinutes();
int seconds = date.getSeconds();
System.out.println(year +"-"+month+"-"+d +" "+hours +":"+minutes+":"+seconds);
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd E HH:mm:ss");
// yyyy 2016
// yy 16
// MM 01
// M 1
// dd 13
// d 6
// E 星期三
// a a- 下午
// H 24小时制
// h 12小时制
// m 份
// s 秒
//
String str = fmt.format(date);
System.out.println(str);
System.out.println(fmt.format(0));//long 直接给他
}
}