Tag Archives: java

Java学习之计算质数

对于学习编程而言,求质数的算法应该都会接触到。

1. 基础算法

质数是指:在大于1的自然数中,所有只能被1和自己整除的数。
基于这个思想,我们用程序算法写出来,求100以内的质数:

for (int i=2; i<100; i++) {
    for (int j=2; j<sqrt(i); j++) {
        if (i % j == 0) {
            break;
        }
    }
}

通过这个方法,我们排除了100以内,所有的非质数,剩下的就是质数了。
这个方法虽然正确,但是执行效率却非常低,当我们查找100000以内的质数时,需要消耗大量的CPU资源和时间。

(more…)

Tagged ,

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

最近有点玩物丧志,很久没有来更新博客了。
如果要开发Android软件,还是得打好Java的基础啊~
今天继续学习

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种情况是需要区分的。
看下表的返回值

星期日为一周的第一天 SUN MON TUE WED THU FRI SAT
DAY_OF_WEEK返回值 1 2 3 4 5 6 7
星期一为一周的第一天 MON TUE WED THU FRI SAT SUN
DAY_OF_WEEK返回值 1 2 3 4 5 6 7

所以Calendar.DAY_OF_WEEK需要根据本地化设置的不同而确定是否需要 “-1”
Java中设置不同地区的输出可以使用 Locale.setDefault(Locale.地区名) 来实现。

3. 获取日期时 Calendar.DAY_OF_MONTH 不需要特殊的操作,他直接返回一个月中的第几天

Tagged ,