day11
1,简述String类中的equals方法与Object类中的equals方法的不同点。
/* Object 类 1,它是所有类的一个根类 2,其他类默认继承Object类 常用方法: 1,toString(); 在实际的开发中,我们一般来重写 toString(),之后用来显示属性的值 2,equals() 默认比较的是地址 在实际的开发中,我们一般来重写 equals,之后用来比较对象的内容是否相等 1,包路径 2,创建对象 */
2,编写程序,(Scanner)当以年-月-日的格式输入一个日期时,输出其该年是否为闰年,该月有几天,该日是星期几;
package com.hp.Test10; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Dome04 { public static void main(String[] args) throws ParseException { System.out.println("请输入第一个日期(yyyy-mm-dd)"); Scanner c =new Scanner(System.in); String str=c.nextLine(); System.out.println("请输入第二个日期(yyyy-mm-dd)"); String str1=c.nextLine(); //把字符串类型解析为Date类型 SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); Date d= sd.parse(str); Date d1=sd.parse(str1); long l =0; if(d.after(d1)){ l =d.getTime()-d1.getTime(); }else{ l=d1.getTime()-d.getTime(); } long a = 1000*60*60*24;//一天的时间 long day = l/a; long week = day/7; System.out.println("两个日期相隔"+day+"天"); System.out.println("相隔"+week+"周"); } }
3,计算某年、某月、某日和某年、某月、某日之间的天数间隔和周数。
package com.hp.Test10; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Scanner; public class Dome03 { public static void main(String[] args) { // Scanner sc=new Scanner(System.in); // System.out.println("请输入日期:"); // String str = sc.next(); // SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); // Date date=null; Scanner sc = new Scanner(System.in); System.out.println("请输入日期:"); String str = sc.nextLine(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; try { date = sdf.parse(str); } catch (ParseException e) { e.printStackTrace(); } //把Date类型转为Calendar类型 Calendar c = Calendar.getInstance(); c.setTime(date); //提取年月日 int year = c.get(Calendar.YEAR); GregorianCalendar gc = new GregorianCalendar(); if(gc.isLeapYear(year)){ System.out.println(year+"是闰年"); }else{ System.out.println(year+"不是闰年"); } //获得月字段天数的最大值 int day = c.getActualMaximum(Calendar.DAY_OF_MONTH); System.out.println("该月有"+day+"天"); //获得周几 int i = c.get(Calendar.DAY_OF_WEEK) - 1; String week = ""; try { week = pipei(i); } catch (Exception e) { e.printStackTrace(); } System.out.println("今天是周"+week); } public static String pipei(int i) throws Exception { String s = ""; switch (i) { case 0: s = "日"; break; case 1: s = "一"; break; case 2: s = "二"; break; case 3: s = "三"; break; case 4: s = "四"; break; case 5: s = "五"; break; case 6: s = "六"; break; default: } return s; } }
4,简述StringBuilder类与string类的区别
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。 StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值,当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。可以使用重载的构造函数之一来指定 StringBuilder 类的容量。 总结后大概为这3点: string 对象是恒定不变的,stringBuider对象表示的字符串是可变的。stringBuilder是.net提供的动态创建string的高效方式,以克服string对象恒定性带来的性能影响。 对于简单的字符串连接操作,在性能上stringBuilder并不一定总是优于string。因为stringBuider对象创建代价较大,在字符串目标连接较少的情况下,过度滥用stringBuilder会导致性能的浪费,只有大量的或者无法预知次数的字符串操作,才考虑stringBuilder来实现。
当修改字符串信息时,此时不许创建对象,可以使用stringBuilder对象。
5,计算自己出生了多少天?
String str= "1999-7-23 00-00-00"; SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd"); //把字符串转换成日期 Date d = time.parse(str); //通过该日期得到毫秒值 long mytime = d.getTime(); //获取当前时间的毫秒值 long newtime = System.currentTimeMillis(); //用当前时间减去出生时间 long datetime = newtime-mytime; //转换为天数 long day = datetime/1000/60/60/24; //输出 System.out.print(day); }
6,求一个for循环 执行时间?
String str= "1999-7-23 00-00-00"; SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd"); //把字符串转换成日期 Date d = time.parse(str); //通过该日期得到毫秒值 long mytime = d.getTime(); //获取当前时间的毫秒值 long newtime = System.currentTimeMillis(); //用当前时间减去出生时间 long datetime = newtime-mytime; //转换为天数 long day = datetime/1000/60/60/24; //输出 System.out.print(day); }