学习记录
1. String,StringBuilder,StringBuffer练习
***String***创建的对象的值是不可变的,每次对String对象的操作都会生成新的String对象,导致不仅效率低下,而且占用和浪费大量的内存空间。
StringBuffer 和 StringBuilder ,改良了String这个问题,二者创建的对象可以被用户修改。 StringBuffer 和 StringBuilder的区别在于二者的内容的安全程度,当有多线程操作时StringBuilder的字符串内容就会可能被篡改或发生其他异常,然而StringBuffer无论在什么情况下都可以***保护***好自己。然而有得必有失,这样同样使得StringBuilder的处理速度常常大于StringBuffer 。
我仅仅通过单线程对StringBuffer 和 StringBuilder 进行了简单的使用,二者定义的大部分函数使用方法相同
上代码
String s1="a";
StringBuffer stringBuffer=new StringBuffer(s1);
stringBuffer.append('b');
System.out.println(stringBuffer);
stringBuffer.append("cde");
System.out.println(stringBuffer);
stringBuffer.insert(0,5);
System.out.println(stringBuffer);
stringBuffer.insert(1,5.38);
System.out.println(stringBuffer);
StringBuilder stringBuilder=new StringBuilder(s1);
stringBuilder.append('b');
System.out.println(stringBuilder);
stringBuilder.append("cde");
System.out.println(stringBuilder);
stringBuilder.insert(0,5);
System.out.println(stringBuilder);
stringBuilder.insert(1,5.38);
System.out.println(stringBuilder);
结果:
ab
abcde
5abcde
55.38abcde
ab
abcde
5abcde
55.38abcde
2. Date,DateFormat,SimpleDateFormat,Calendar
使用过程中个人觉得需要注意的地方在于Calendar中定义的常量值需要注意,在Calendar中有定义了周日是1,周一是2,以此类推周六是7,同样的在Calendar中有定义了其中一月是0,二月是1,以此类推,十二月是11
运用代码如下
Date date=new Date();
System.out.println(date.toString());
DateFormat.getInstance().format(date);
System.out.println("getInstance默认格式化:");
System.out.println(DateFormat.getInstance().format(date));
System.out.println("getTimeInstance的四种:");
System.out.println(DateFormat.getTimeInstance(0).format(date));
System.out.println(DateFormat.getTimeInstance(1).format(date));
System.out.println(DateFormat.getTimeInstance(2).format(date));
System.out.println(DateFormat.getTimeInstance(3).format(date));
System.out.println("getDateInstance的四种:");
System.out.println(DateFormat.getDateInstance(0).format(date));
System.out.println(DateFormat.getDateInstance(1).format(date));
System.out.println(DateFormat.getDateInstance(2).format(date));
System.out.println(DateFormat.getDateInstance(3).format(date));
System.out.println("getDateTimeInstance当datestyle=0时:");
System.out.println(DateFormat.getDateTimeInstance(0,0).format(date));
System.out.println(DateFormat.getDateTimeInstance(0,1).format(date));
System.out.println(DateFormat.getDateTimeInstance(0,2).format(date));
System.out.println(DateFormat.getDateTimeInstance(0,3).format(date));
System.out.println("getDateTimeInstance当datestyle=1时:");
System.out.println(DateFormat.getDateTimeInstance(1,0).format(date));
System.out.println(DateFormat.getDateTimeInstance(1,1).format(date));
System.out.println(DateFormat.getDateTimeInstance(1,2).format(date));
System.out.println(DateFormat.getDateTimeInstance(1,3).format(date));
System.out.println("getDateTimeInstance当datestyle=2时:");
System.out.println(DateFormat.getDateTimeInstance(2,0).format(date));
System.out.println(DateFormat.getDateTimeInstance(2,1).format(date));
System.out.println(DateFormat.getDateTimeInstance(2,2).format(date));
System.out.println(DateFormat.getDateTimeInstance(2,3).format(date));
System.out.println("getDateTimeInstance当datestyle=3时:");
System.out.println(DateFormat.getDateTimeInstance(3,0).format(date));
System.out.println(DateFormat.getDateTimeInstance(3,1).format(date));
System.out.println(DateFormat.getDateTimeInstance(3,2).format(date));
System.out.println(DateFormat.getDateTimeInstance(3,3).format(date));//与getInstance默认格式化效果相同
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("y年M月d日-H时m分s秒",new Locale("CHINESE"));
System.out.println("通过SimpleDateFormat自定义格式化输出时间");
System.out.println(simpleDateFormat.format(date));
//Calendar
Calendar calendar= Calendar.getInstance();
System.out.println("通过Calendar获取当前年月日时分秒和毫秒");
System.out.println("年"+calendar.get(Calendar.YEAR));
System.out.println("月"+calendar.get(Calendar.MONTH));
System.out.println("日"+calendar.get(Calendar.DATE));
System.out.println("12小时值:"+calendar.get(Calendar.HOUR)+" 24小时制:"+calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("分"+calendar.get(Calendar.MINUTE));
System.out.println("秒"+calendar.get(Calendar.SECOND));
System.out.println("毫秒"+calendar.get(Calendar.MILLISECOND));
System.out.println("通过Calendar获取Data对象,快速输出");
//获取当前时间
Date d1=calendar.getTime();
System.out.println(d1);//输出Mon Jun 28 21:02:19 CST 2021
//获取指定时间
calendar.set(2021,6,28);
Date d2=calendar.getTime();
System.out.println(d2);
System.out.println(d1.equals(d2));
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
//System.out.println(calendar.get(Calendar.DAY_OF_WEEK)-1);
//结果:
//Wed Jul 28 21:06:34 CST 2021
//false
//4
calendar.set(2021,5,28);//此处注意设置的month值为5,并非当前是几月数值就是几,
Date d3=calendar.getTime();
System.out.println(d3);
System.out.println(d1.equals(d3));
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
//System.out.println(calendar.get(Calendar.DAY_OF_WEEK)-1);
//结果:
//Mon Jun 28 21:06:34 CST 2021
//true
//2
//阅读源码即可知道,在Calendar中有定义了其中周日是1,周一是2,以此类推周六是7
//另外月份也有定义,一月是0,二月是1,以此类推,十二月是11
//此时在看结果就能理解为什么我们想要得到指定日期是周几或几月时数值总是对不上号
刚写博客,上述内容如有错误,希望得到指正修改,