Date、SimpleDateFormat、Calendar 、arraycopy 和 StringBuilder题目小结
1,请用代码实现:获取当前的日期,并把这个日期转换为指定格式的字符串,如2088-08-08 08:08:08。
解析:使用Date获取当前时间,使用SimpleDateFormat的format方法将当前时间变成格式为"yyyy-MM-dd HH:mm:ss" 的字符串
代码如下:
public static void main(String[] args) throws ParseException {
Date d1 = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(d1);
System.out.println(s);
}
运行结果:
2,使用SimpleDateFormat类,把2018-03-04转换为2018年03月04日
解析:两次转换 现将SimpleDateFormat转成Date,再将Date转成SimpleDateFormat
代码如下:
public static void main(String[] args) throws ParseException {
String s = "2018-03-04";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date d1 =sdf1.parse(s);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
String s1 = sdf.format(d1);
System.out.println(s1);
}
运行结果:
3,用程序判断2018年2月14日是星期几
解析:Calendar的set和get方法,Calendar.DAY_OF_WEEK-1获取星期几
代码如下:
public static void main(String[] args) throws ParseException {
Calendar c = Calendar.getInstance();
c.set(2018,2,14);
System.out.println(c.get(Calendar.DAY_OF_WEEK)-1);
}
运行结果:
4,一、现有一个字符数组{‘i’,‘t’,‘c’,‘a’,‘s’,‘a’},请使用System类中的arraycopy()方法在控制台输出“itcast”。(提示:将[1]号数组元素复制到最后位置并覆盖原有元素。)
分析:System.arraycopy方法
代码如下:
public static void main(String[] args) {
char[] chars ={'i','t','c','a','s','a'};
System.arraycopy(chars,1,chars,5,1);
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
System.out.print(c);
}
}
运行结果:
5,分别使用String的+=和StringBuilder的append方法对字符串做100000次拼接,计算String拼接100000次花费时间与StringBuilder拼接100000次所花费时间并打印
代码如下:
public static void main(String[] args) {
getTime1();
getTime2();
}
public static void getTime1(){
Long l1 = System.currentTimeMillis();
String s = "";
for (int i = 0; i < 100000; i++) {
s+=i;
}
Long l2 = System.currentTimeMillis();
System.out.println("花了"+(l2 - l1)+"毫秒");
}
public static void getTime2(){
Long l1 = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100000; i++) {
sb.append(i);
}
Long l2 = System.currentTimeMillis();
System.out.println("花了"+(l2 - l1)+"毫秒");
}
运行结果:
6、分析以下需求,并用代码实现:
(1)定义数字字符串数组{“010”,“3223”,“666”,“7890987”,“123123”};
(2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等,第二个数字和倒数第二个数字是相等的,依次类推)的,并逐个输出;
(3)如:010 是对称的,3223 是对称的,123123 不是对称的;
(4)最终打印该数组中对称字符串的个数。
两种方法:
1.
//第一种方法 增强for循环
public static void demo1(){
String[] array = {"010","3223","666","7890987","123123"};
StringBuilder sb = null;
int count = 0;
for (String s : array){
sb = new StringBuilder(s);
if(sb.reverse().toString().equals(s)){
count++;
}
}
System.out.println("对称的个数是:"+count);
}
2.
//第二种方法使用delete方法
public static void demo2(){
String[] array = {"010","3223","666","7890987","123123"};
StringBuilder sb = new StringBuilder();
int count = 0;
for (int i = 0; i < array.length; i++) {
//初始化StringBuilder不让里面有值
sb.delete(0,sb.length());
String s = array[i];
boolean flag = s.equals(sb.append(s).reverse().toString());
if(flag){
System.out.println(s +"是对称的");
count++;
}else{
System.out.println(s + "不是对称的");
}
}
System.out.println("对称的个数是:"+count);
}