常用类2

包装类

StringBuilder
1.重载的public StringBuilder append(…)方法, 可以为该StringBuilder 对象添加字符序列,仍然返回自身对象。
2. 方法 public StringBuilder delete(int start,int end),可以删除从start开始到end-1为止的一段字符序列,仍然返回自身对象。
3. 方法 public StringBuilder deleteCharAt(int index),移除此序列指定位置上的 char,仍然返回自身对象。
4. 重载的public StringBuilder insert(…)方法, 可以为该StringBuilder 对象在指定位置插入字符序列,仍然返回自身对象。
5… 方法 public StringBuilder reverse(), 用于将字符序列逆序,仍然返回自身对象。
5. 方法 public String toString() 返回此序列中数据的字符串表示形式。
6. 和 String 类含义类似的方法:

	StringBuilder sb=new StringBuilder();
		for(int i=0;i<26;i++) {
			char temp=((char)('a'+i));
			sb.append(temp);	//字符累加
		}
		System.out.println(sb);
		sb.reverse();			//倒序
		System.out.println(sb);
		sb.setCharAt(3, '嘿');	//setCharAt指定位置更换
		System.out.println(sb);
		sb.insert(2, '小').insert(5,'大').insert(9, '中');		//链式调用,核心:该方法调用了return this,把自己返回了
		System.out.println(sb);
		sb.delete(26, 27);		//删除指定位置(区间),也可以链式调用
		System.out.println(sb);

可变字符序列和不可变字符序列的陷阱

String str="";
		//本质上使用StringBuilder拼接, 但是每次循环都会生成一个StringBuilder对象
		long num1=Runtime.getRuntime().freeMemory();	//获取系统剩余内存空间
		 long time1 = System.currentTimeMillis();		//获取系统的当前时间
		for(int i=0;i<5000;i++) {
			str=str+i;									//相当于产生了10000个对象
		}
		 long num2 = Runtime.getRuntime().freeMemory();
	     long time2 = System.currentTimeMillis();
		 System.out.println("String占用内存 : " + (num1 - num2));
	     System.out.println("String占用时间 : " + (time2 - time1));
	     
	     StringBuilder sb1 = new StringBuilder("");
	     long num3 = Runtime.getRuntime().freeMemory();
	     long time3 = System.currentTimeMillis();
	     for(int i=0;i<5000;i++) {
	    	 sb1.append(i);
	     }
	     long num4 = Runtime.getRuntime().freeMemory();
	     long time4 = System.currentTimeMillis();
	     System.out.println("StringBuilder占用内存 : " + (num3 - num4));
	     System.out.println("StringBuilder占用时间 : " + (time4 - time3));
	     

> 编译:
>   String占用内存 : 12305272
	String占用时间 : 65
	StringBuilder占用内存 : 0
	StringBuilder占用时间 : 1
     

DateFormat类

  1. 把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。
  2. DateFormat是一个抽象类,一般使用它的的子类SimpleDateFormat类来实现。
public static void main(String[] args) throws ParseException {
		/*把时间对象按照"格式字符串指定的格式"转成相应的字符串*/
		DateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm;ss");
		String str=	df.format(new Date(2020));		//String类型
		System.out.println(str);					//1970-01-01 08:00;02
		/*把字符串按照"格式字符串指定的格式"转成相应的事件对象*/
		DateFormat df2=new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");	//必须按照当前这个格式
		Date date=df2.parse("1998年9月17日  07时19分38秒");		//从给定字符串的开始解析文本以生成日期。 该方法可能不会使用给定字符串的整个文本
		System.out.println(date);
		

> 		1970-01-01 08:00;02
		Thu Sep 17 07:19:38 CST 1998	

其他的格式字符

DateFormat df3=new SimpleDateFormat("D");
		String str2=df3.format(new Date());
		System.out.println(str2);	
		//获得当前时间是今年的第几天
> 270

Calendar

  1. Calendar 类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示和计算。
  2. GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
public static void main(String[] args) {
		/*获得日期的相关元素*/
		Calendar calendar=new GregorianCalendar(2020,10,26	);
		int year=calendar.get(Calendar.YEAR);
		System.out.println(year);			//获得年份
		int month=calendar.get(Calendar.MONTH);
		System.out.println(month);			//获得月份
		int day=calendar.get(Calendar.DAY_OF_MONTH);
		System.out.println(day);			//获得日
		int weekday=calendar.get(Calendar.DAY_OF_WEEK);
		System.out.println(weekday);		//获得周几
		
		/*设置日期的相关元素*/
		Calendar calendar2=new GregorianCalendar();//什么都不传,默认生成今天对应的日期
		calendar2.set(Calendar.YEAR, 2000);			//设置年(设置方法和上面获得方法雷同)
		System.out.println(calendar2);		
		
		/*日期的计算*/
		Calendar calendar3=new GregorianCalendar();
		calendar3.add(Calendar.DATE, 100);			//往后一百天
		System.out.println(calendar3);
		
		/*日期对象和时间对象的转换*/
		Date d=calendar3.getTime();
		Calendar calendar4=new GregorianCalendar();
		calendar4.getTime();
		System.out.println(d);
		
		
		printCalendar(calendar4);
		
	}
	public static void printCalendar(Calendar c) {
		//格式: xxxx年x月x日   xx时xx分xx秒  周x
		int year=c.get(Calendar.YEAR);
		int month=c.get(Calendar.MONTH)+1;	//0-11
		int day=c.get(Calendar.DATE);
		int dayweek=c.get(Calendar.DAY_OF_WEEK)-1;	//1是周日,2是周一,所以-1
		String dayweek2=dayweek==0?"日":dayweek+"";	//判断是否为0
		int hour=c.get(Calendar.HOUR);				//时
		int minute=c.get(Calendar.MINUTE);			//分
		int second=c.get(Calendar.SECOND);			//秒
		System.out.println(year+"年"+month+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒"+"周"+dayweek2);
	}
}

> 	2020
	10
	26
	5
	java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2000,MONTH=8,WEEK_OF_YEAR=39,WEEK_OF_MONTH=4,DAY_OF_MONTH=26,DAY_OF_YEAR=270,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=42,SECOND=58,MILLISECOND=503,ZONE_OFFSET=28800000,DST_OFFSET=0]
	java.util.GregorianCalendar[time=1609756978503,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=0,WEEK_OF_YEAR=2,WEEK_OF_MONTH=2,DAY_OF_MONTH=4,DAY_OF_YEAR=4,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=42,SECOND=58,MILLISECOND=503,ZONE_OFFSET=28800000,DST_OFFSET=0]
	Mon Jan 04 18:42:58 CST 2021
	202092664258秒周6


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值