1, 简述String类中的equals方法与Object类中的equals方法的不同点。
String类中的equals方法是比较两个对象中的内容是否相同。
Object类中的equals方法是比较两个对象是否是同一个对象。
2,编写程序,(Scanner)当以年-月-日的格式输入一个日期时,输出其该年是否为闰年,该月有几天,该日是星期几;
package Demo3; import sun.misc.Cleaner; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Scanner; class WeekCaseException extends Exception { public WeekCaseException(){ } public WeekCaseException(String mess){ super(mess); } } public class Demo1 { public static void main(String[] args) throws ParseException { 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: throw new WeekCaseException("超出了正常一周范围"); } return s; } }
3,计算某年、某月、某日和某年、某月、某日之间的天数间隔和周数。
package Demo3; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Demo2 { public static void main(String[] args) throws ParseException { System.out.println("请输入第一个日期(yyyy-MM-dd)"); Scanner sc = new Scanner(System.in); String str = sc.nextLine(); System.out.println("请输入第二个日期(yyyy-MM-dd)"); String str1 = sc.nextLine(); //把字符串类型解析为Date类型 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date d = sdf.parse(str); Date d1 = sdf.parse(str1); Long l; 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+"周"); } }
4,简述StringBuilder类与string类的区别
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。
StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值,当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。可以使用重载的构造函数之一来指定 StringBuilder 类的容量。
5,计算自己出生了多少天?
package Demo3; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Demo3 { public static void main(String[] args) throws ParseException { // 1、使用Scanner类中的方法next,获取出生日期 Scanner sc = new Scanner(System.in); System.out.println("请输出您的出生日期,格式:yyyy-MM-dd"); String birthdayDateString = sc.next(); // 2、使用DateFormat类中的方法parse,把字符串的出生日期,解析为Date格式的出生日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date birthdayDate = sdf.parse(birthdayDateString); // 3、把Date格式的出生日期转换为毫秒值 long birthdayDateTime = birthdayDate.getTime(); // 4、获取当前的日期,转换为毫秒值 long todayTime = new Date().getTime(); // 5、使用当前日期的毫秒值-出生日期的毫秒值 long time = todayTime - birthdayDateTime; // 6、把毫秒值转换为天(s / 1000 / 60 / 60 / 24) System.out.println("您已经出生了:" + time / 1000 / 60 / 60 /24 + "天"); } }
6,求一个for循环 执行时间?
package Demo3; public class Demo4 { public static void main(String[] args) { long ti = System.currentTimeMillis(); for(int i=Integer.MIN_VALUE;i<Integer.MAX_VALUE;i++){ if(i==i) continue;//加判断 } System.out.println(System.currentTimeMillis()-ti); ti = System.currentTimeMillis(); for(int i=Integer.MIN_VALUE;i<Integer.MAX_VALUE;i++){ continue; } System.out.println(System.currentTimeMillis()-ti); } }