使用 DateFormat 写的星座查询 Java 小程序

关键词:DateFormat、getTime()import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Scanner;public class demo {    public static void main(String[] args) throws ParseException {            Scanner sc = new Scanner(System.in);            System.out.print(" 请输入查询日期 ( 例“2-3”即 2 月 3 日):");            String input = "2000-" + sc.next();     // 输入查询,之所以实 2000 因为其是闰年,2 月有 29 号            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");            long birth = sdf.parse(input).getTime();    // 解析为 Date 并获取时间戳            if (birth >= getTimer("2000-03-21") && birth <= getTimer("2000-04-19")) {                System.out.println(" 白羊座 ");            } else if (birth >= getTimer("2000-04-20") && birth <= getTimer("2000-05-20")) {                System.out.println(" 金牛座 ");            } else if (birth >= getTimer("2000-05-21") && birth <= getTimer("2000-06-20")) {                System.out.println(" 双子座 ");            } else if (birth >= getTimer("2000-06-21") && birth <= getTimer("2000-07-21")) {                System.out.println(" 巨蟹座 ");            } else if (birth >= getTimer("2000-07-22") && birth <= getTimer("2000-08-22")) {                System.out.println(" 狮子座 ");            } else if (birth >= getTimer("2000-08-23") && birth <= getTimer("2000-09-22")) {                System.out.println(" 处女座 ");            } else if (birth >= getTimer("2000-09-23") && birth <= getTimer("2000-10-22")) {                System.out.println(" 天秤座 ");            } else if (birth >= getTimer("2000-10-23") && birth <= getTimer("2000-11-21")) {                System.out.println(" 天蝎座 ");            } else if (birth >= getTimer("2000-11-22") && birth <= getTimer("2000-12-21")) {                System.out.println(" 射手座 ");            } else if (birth >= getTimer("2000-01-20") && birth <= getTimer("2000-02-18")) {                System.out.println(" 水瓶座 ");            } else if (birth >= getTimer("2000-02-19") && birth <= getTimer("2000-03-20")) {                System.out.println(" 双鱼座 ");            } else {                System.out.println(" 摩羯座 ");            }        }        public static long getTimer (String date) throws ParseException {            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");            return sdf.parse(date).getTime();        }}

System 类中 arraycopy 方法的使用 为什么 char[] 数组能直接打印

Q:现有一个字符数组 {'i','t','c','a','s','a'},请使用System 类中的 arraycopy() 方法在控制台输出 “itcast”。(提示:将[1] 号数组元素复制到最后位置并覆盖原有元素。)char[] str={'i','t','c','a','s','a'};System.arraycopy(str,1,str,5,1);System.out.print(str);一直忽略的误区:1、以为 arraycopy 需要两个不同数组,但是其实一个数组也可以操作 2、char[] 数组不用遍历输出,可以直接打印出来 拓展:char 类型的数组就相当于一个字符串。因为输出流 System.out 是 PrintStream 对象,PrintStream 有多个重载的 println 方法,其中一个就是 public void println(char[] x),直接打印字符数组的话,不像 int[]等其他数组,它会直接调用这个方法来打印,因而可以打印出数组内容,而不是地址。

Java 中 Calendar.DAY_OF_WEEK 需要减一的原因

网上找的,刚刚接触 Calendar 类,有点复杂,记下来。Java 中对日期的处理需要用到 Calendar 类,其中有几个方法在使用时需要新手注意。1. 在获取月份时,Calendar.MONTH + 1 的原因 Java 中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是 JANUARY。而 Java 中 Calendar.MONTH 返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY 在 Java 中返回“0”,所以我们需要 +1。2. 在获取星期几 Calendar.DAY_OF_WEEK – 1 的原因Java 中 Calendar.DAY_OF_WEEK 其实表示:一周中的第几天,所以他会受到   第一天是星期几   的影响。有些地区以星期日作为一周的第一天,而有些地区以星期一作为一周的第一天,这 2 种情况是需要区分的。看下表的返回值 星期日为一周的第一天 SUNMONTUEWEDTHUFRISATDAY_OF_WEEK 返回值1234567 星期一为一周的第一天 MONTUEWEDTHUFRISATSUNDAY_OF_WEEK 返回值1234567 所以 Calendar.DAY_OF_WEEK 需要根据本地化设置的不同而确定是否需要 “-1”Java 中设置不同地区的输出可以使用 Locale.setDefault(Locale. 地区名) 来实现。3. 获取日期时 Calendar.DAY_OF_MONTH 不需要特殊的操作,他直接返回一个月中的第几天