时间问题

时间问题1,简述String类中的equals方法与Object类中的equals方法的不同点。①Java中其他类都是Object类的子类,Object类中的equals()方法比较的是两个对象的地址。②String中equals()方法比较的是两个对象的值是否相同2,编写程序,(Scanner)当以年

大家好,欢迎来到IT知识分享网。时间问题"

1,简述String类中的equals方法与Object类中的equals方法的不同点。

Java中其他类都是Object类的子类,Object类中的equals()方法比较的是两个对象的地址。
②String中equals()方法比较的是两个对象的值是否相同

2,编写程序,(Scanner)当以年-月-日的格式输入一个日期时,输出其该年是否为闰年,该月有几天,该日是星期几;

package demo;
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 me){
            super(me);
        }
    }
    class Demo01{
        public static void main(String[] args) {
            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 = matching(i);
            } catch (Exception e) {
                e.printStackTrace();
            }
            System.out.println("今天是周"+week);
        }
        public static String matching(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,计算某年、某月、某日和某年、某月、某日之间的天数间隔和周数。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo02 {
        public static void main(String[] args) throws ParseException {
            String s1 = "2020-10-26";
            String s2 = "2019-11-06";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            //把字符串时间解析为Date对象
            Date d1 = sdf.parse(s1);
            Date d2 = sdf.parse(s2);
            //分别获得两个日期的long类型毫秒数
            long date1 = d1.getTime();
            long date2 = d2.getTime();
            //两个时间相隔的毫秒数
            long d = date1 - date2;
            //一天的毫秒数
            final long day = 86400000;
            //相隔多少天
            System.out.println(s1+"与"+s2+"相隔"+(d / day)+"天,相隔"+(d/day/7)+"周");
        }
    }

4,简述StringBuilder类与string类的区别

①工作原理不同:String 类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET 框架下,这个操作实在是划不来。因为系统先是把 两个字符串写入内存,接着删除原来的 String 对象,然后再创建一个 String 对象,并读取内存 中的数据赋给该对象。这一来二去的,耗了不少时间。而使用 System.Text 命名空间下面的 StringBuilder 类就不是这样了,它提供的 Append 方法,能够在已有对象的原地进行字符串的修改,简单而且直接。

5,计算自己出生了多少天?

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Demo03 {
    public static void main(String[] args) throws  Exception {
        System.out.println("请输入出生日期 格式 YYYY‐MM‐dd");
        // 获取出生日期,键盘输入
        String birthdayString = new Scanner(System.in).next();
        //创建SimpleDateFormat对象实例并定义好转换格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        // 调用方法parse,字符串转成日期对象
        Date birthdayDate = sdf.parse(birthdayString);
        // 获取今天的日期对象
        Date todayDate = new Date();
        // 将两个日期转成毫秒值,Date类的方法getTime
        long birthdaySecond = birthdayDate.getTime();
        long todaySecond = todayDate.getTime();
        long secone = todaySecond - birthdaySecond;
        if (secone < 0) {
            System.out.println("你还没出生呢");
        } else {
            System.out.println("你已经出生"+ secone / 1000 / 60 / 60 / 24+"天了!");
        }
    }
}

6,求一个for循环 执行时间?

public class Demo04 {
    public static void main(String[] args) {
        int a = 0;
        int x = 10000;
        for (int i = 0; i < x; i++) {
            a = 2*x;
        }
        System.out.println(a/1000);
    }
}

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32452.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信