A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 魏亮 中级黑马   /  2012-9-26 22:49  /  2815 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.*;
import java.text.*;
class CalendarDemo
{
        public static void main(String[] args)
        {
                Calendar c = Calendar.getInstance();
                int index = c.get(Calendar.PM);
                int x = c.get(Calendar.DAY_OF_MONTH);
       
                sop(c.get(Calendar.SUNDAY));//2012    //十分好奇调用这些字段会是神马结果,结果怎么都是2012呀??还有许多字段                  
                                                                             //都是这样,谁能告诉我为啥呀?
                 sop(c.get(Calendar.PM));//打印结果为啥是2012
        }

        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
}


评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
我用Debug测试!也没看出个所以然来!所以!我也不懂 !一起期待答案吧!
回复 使用道具 举报
I don't Know
回复 使用道具 举报
坐等答案
回复 使用道具 举报
看了下源代码:
下面是Calendar这个类中定义的部分静态整形常量(观察一下应该能知道文什么了)
public final static int YEAR = 1;
public final static int MONTH = 2;
public final static int WEEK_OF_YEAR = 3;
public final static int WEEK_OF_MONTH = 4;
=================================
public final static int SUNDAY = 1;
public final static int MONDAY = 2;
public final static int TUESDAY = 3;
public final static int WEDNESDAY = 4;
=================================
public final static int PM = 1;
===================================
            System.out.println("YEAR....."+c.get(Calendar.YEAR));
            System.out.println("MONTH....."+c.get(Calendar.MONTH));
            System.out.println("WEEK_OF_YEAR....."+c.get(Calendar.WEEK_OF_YEAR));
            System.out.println("WEEK_OF_MONTH....."+c.get(Calendar.WEEK_OF_MONTH));
            
            System.out.println("==================================");
            System.out.println("SUNDAY....."+c.get(Calendar.SUNDAY));
            System.out.println("MONDAY....."+c.get(Calendar.MONDAY));
            System.out.println("TUESDAY....."+c.get(Calendar.TUESDAY));
            System.out.println("WEDNESDAY....."+c.get(Calendar.WEDNESDAY));
            System.out.println("PM....."+c.get(Calendar.PM));
结果为:

YEAR.....2012
MONTH.....8
WEEK_OF_YEAR.....39
WEEK_OF_MONTH.....5
==================================
SUNDAY.....2012
MONDAY.....8
TUESDAY.....39
WEDNESDAY.....5
PM.....2012

回复 使用道具 举报
public final static int YEAR = 1;

sop(c.get(Calendar.SUNDAY));  
sop(c.get(Calendar.PM));

Calendar.SUNDAY//星期天是第一天,返回1
Calendar.PM//AM=0 PM=1

c.get(1) //1代表YEAR

应该明白为什么输出 2012 了吧~~~
回复 使用道具 举报
张君 中级黑马 2012-9-28 22:37:45
7#
我也是菜鸟。不懂的很多,楼主这个问题我觉得可能是这样:
第一个 2012 的原因,calendar.sunday 的常量值就是1,而year 的常量值也是1.  这样的话用instance打印的值自然是2012  
如果你想打印当前的月份,那就把sop(c.get(Calendar.SUNDAY)) 该为 sop(c.get(Calendar.DAY_OF_MONTH))或者 直接改成 sop(x)。


第二个 2012 原因也是 常量值是1,如果你想打印当前的小时那,不如加上这句话int hour=c.get(Calendar.HOUR);



改成如下程序就好了


import java.util.*;
import java.text.*;
class heima
{
        public static void main(String[] args)
        {
                Calendar c = Calendar.getInstance();
               
                int x = c.get(Calendar.DAY_OF_MONTH);
                int hour=c.get(Calendar.HOUR);
             int pm=c.get(Calendar.PM);
              sop(x);//2012           
               sop(hour);


    }

        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
}


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马