java基础笔记(6)StringBuffer,正则表达式,random随机数,Date类使用

1.StringBuffer
频繁增删工作, 就会产生大量的对象
StringBuilder
字符串缓冲区
String 不可变的字符序列 功能强大 但是不适用于频繁增删字符串内容的情况(会导致出现大量的无用内存)
StringBuffer 可变字符序列 适用于频繁增删操作字符串 线程安全的 效率较低 多线程情况下
StringBuilder 可变字符序列 适用于频繁增删操作字符串 线程不安全的 效率高 单线程情况下

public class Test {
	public static void main(String[] args) {	
		// 必须通过new来创建对象
		StringBuffer  buffer = new StringBuffer();
		buffer.append("abc");
		buffer.append("def");
		buffer.append("fff");
		System.out.println(buffer);		
		// 左闭右开
		buffer.delete(0, 3);
		System.out.println(buffer);		
		//插入 
		buffer.insert(1, "zz");
		System.out.println(buffer);		
		//翻转
		buffer.reverse();
		System.out.println(buffer);		
		String string = buffer.toString();
		System.out.println(string);		
		a(string);		
	}	
	public static void a(String str){		
	}
	}

2.正则表达式

public class Test1 {
	public static void main(String[] args) {
		String  str = "abcaaabdaabaa#def#ff#hhh";
		String string = str.replace("#", "?");//replace("#", "?"); 将所有符合条件的字符串全部替换, 不支持正则表达式
		System.out.println(string);	
		// 只替换第一个符合正则表达式的部分
		String first = str.replaceFirst("[abcdef]+", "?");
		System.out.println(first);
		// 替换所有符合正则表达式的部分
		String all = str.replaceAll("[abcdef]+", "?");
		System.out.println(all);		
		// 字母 数字 下划线     6 ~8位
		// 手机号  11位数
		// 身份证号 18位 
		String string2 = "aaaa";
		boolean matches = string2.matches("[a]+");
		System.out.println(matches);		
		// subString 截取
		String string3 = "abcdefg";	
		/*
		 *   [abc]
		 *   [a-zA-Z_0-9]  
		 *   预定义字符
		 *   \d  0-9数字
		 *   \w  [a-zA-Z_0-9]
		 *   . 任意字符  
		 *   aaa@aaaccom
		 *   @[][.]
		 *   @[abc1236][.](com|cn) 
		 *   aaaaa 
		 *   [a]+ 
		 *   *  任意多个
		 *   +  至少一个 
		 *   {6}   恰好6比
		 *   {6,}   至少6次
		 *   {6,8}  6到8次 
		 *   [a-zA-Z_0-9]{6,8}
		 *   \w{6,8}
		 *   身份证号   钱17位 都是数字   第18位  0-9 X 
		 *   [0-9]{17}[0-9X]
		 *   手机号
		 *   11位   
		 *   1[3584796]\d{9}  
		 */	
		// subString 截取
		String string4 = "abcdefagefdfd";
		String string5 = string4.substring(3);
		System.out.println(string5);		
		String string6 = string4.substring(3, 6);//[左闭右开]
		System.out.println(string6);		
		// split 拆分, 分割
		String string7=  "abc*def*fff";
		String[] strings = string7.split("[*]");
		for (String string8 : strings) {
			System.out.println(string8);
		}				
		String string8 = "张三*12*男#李四*14*女#李四*14*女#李四*14*女";
		String[] split = string8.split("#");
		for (String string9 : split) {
			String[] split2 = string9.split("#");
			// 创建Student对象
			Student stu = new Student(strings2[0],strings2[1],strings2[2]);
		}
	}
}

3.random随机数

public class Test3 {
	public static void main(String[] args) {				
				double d = Math.random();// [0,1); 0.99999999999
				System.out.println(d);				
				// (int)(Math.random()*(最大值-最小值+1)+最小值)
				// 10~20
				int num = (int)(Math.random()*(20-10+1)+10);
				System.out.println(num);				
				// -36 ~ 36 之间的数
				int num2 = (int)(Math.random()*(36-(-36)+1)+(-36));
				System.out.println(num2);				
				//(int)4.5 = 4
				// 四舍五入
				long l = Math.round(4.4);
				System.out.println(l);
	}
}

4. Date类

public class Test5 {
	public static void main(String[] args) {
		// ed Jan 06 11:38:00 IRKT 2021
				//  2021-01-06 11:39:50;
				// 通过符号进行  解析
				//SimpleDateFormat  将Date-->String
				Date date = new Date();
				SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd  HH:mm:ss SSS WW ");
				String string = dateFormat.format(date);
				System.out.println(string);				
				// 2012年03月09日入职的 , 计算这个人从入职到现在多少天
				// 也可以将String 存储的时间, --> Date
				String string2 ="2012年03月09日";
				SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年M月dd日");
				try {
					Date date2 = simpleDateFormat.parse(string2);
					//计算这个人从入职到现在惊了多少天 
					long t = date2.getTime();// 从1970年到date2时间经历的毫秒数     123
					System.out.println(t);					
					Date date3 = new Date();// 当前时间
					long t2 = date3.getTime();// 当前时间和1970的差值      256
					System.out.println(t2);					
					long t3 = t2-t;// t3代表的是从2021-2012时间差
					System.out.println(t3);
					// 将毫秒数转成天数:
					long day = t3/(24*60*60*1000);					
					System.out.println("从入职到现在经历的天数:"+day);					
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
	}
}
public class DateTest {
	public static void main(String[] args) {		
	Date date = new Date();
	System.out.println(date);	
	date.setYear(122);
	date.setMonth(24);	
	date.setDate(32);	
	System.out.println("年"+date.getYear());// 从1900开始算
	System.out.println("月"+date.getMonth());// 0~11
	System.out.println("日"+date.getDate());
	System.out.println("星期:"+date.getDay());	
	System.out.println("时:"+date.getHours());
	System.out.println("分:"+date.getMinutes());
	System.out.println("秒:"+date.getSeconds());	
	// 从1970年1月1日凌晨 到现在的经历
	System.out.println(date.getTime());	
	Calendar calendar = Calendar.getInstance();
	int year = calendar.get(Calendar.YEAR);
	System.out.println(year);
	System.out.println("月"+calendar.get(Calendar.MONTH));// 月是从0开始的
	System.out.println("日"+calendar.get(Calendar.DAY_OF_MONTH));
	System.out.println("小时"+calendar.get(Calendar.HOUR_OF_DAY));
	System.out.println("分"+calendar.get(Calendar.MINUTE));
	System.out.println("秒"+calendar.get(Calendar.SECOND));	
	System.out.println(calendar);
}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值