4-1

 1 package com.cj.CalendarTest;
 2 
 3 import java.text.DateFormatSymbols;
 4 import java.util.Calendar;
 5 import java.util.GregorianCalendar;
 6 
 7 public class CalendarTest {
 8     /**
 9      * 4-1
10      * Java是完全面向对象的,面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。
11      * 类(class)是构造对象的模板或蓝图。由类构造(construct)对象的过程称为创建类的实例(instance)。
12      * 对象中的数据称为实例域(instance field),操纵数据的过程称为方法(method)。
13      * 并不是所有的类都具有面向对象特征。如Math类
14      * 要想使用对象,就必须首先构造对象,并指定其初始状态,然后对对象应用方法。
15      * 构造器是一种特殊的方法,用来构造并初始化对象。构造器的名字应该与类名相同,如Date,
16      * 要想构造一个Date对象,需要在构造器前面加上new操作符。 如new Date() 这个表达式构造了一个新对象。
17      * Date birthday new Date();
18      * Date deadline;
19      * 初始化对象变量 1:用新构造的对象初始化这个变量 deadline = new Date();2:让这个变量引用一个已存在的对象 deadline = birthday;
20      * 一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。在Java中任何对象变量的值都是对存储在另外一个地方的一个对象的引用。
21      * new操作符的返回值也是一个引用。
22      * Date deadline = new Date(); 的各部分说明如下
23      * 表达式new Date()构造了一个Date类型的对象,并且它的值是对新创建对象的引用。
24      * deadline 对象变量,new Date()的引用存储在变量deadline中
25      * Date 对象的类型
26      * 局部变量不会自动地初始化为null,而必须通过调用new或将它们设置为null进行初始化。所有的Java对象存储在堆中。
27      * get方法仅仅查看并返回对象的状态,而set和add方法却对对象的状态进行修改。
28      * 访问器方法get,更改器方法set
29      * 
30      * @param args
31      */
32     public static void main(String[] args) {
33         //构造一个日历对象,并用当前的日期和时间进行初始化
34         GregorianCalendar d = new GregorianCalendar();
35         //获得当前的日,月 。6月15日
36         int today = d.get(Calendar.DAY_OF_MONTH);
37         int month = d.get(Calendar.MONTH);
38         //将d设置为这个月的第一天,并得到这一天为星期几
39         d.set(Calendar.DAY_OF_MONTH,1);
40         int weekday = d.get(Calendar.DAY_OF_WEEK);
41         //getFirstDayOfWeek方法获得当前地区星期的起始日  为1
42         int firstDayOfWeek = d.getFirstDayOfWeek();
43         //缩进
44         int indent = 0;
45         while(weekday!=firstDayOfWeek){
46             indent++;
47             d.add(Calendar.DAY_OF_MONTH, -1);
48             weekday = d.get(Calendar.DAY_OF_WEEK);
49         }
50         String[] weekdayNames = new DateFormatSymbols().getShortWeekdays();
51         do{
52             System.out.printf("%4s", weekdayNames[weekday]);
53             d.add(Calendar.DAY_OF_MONTH, 1);
54             weekday = d.get(Calendar.DAY_OF_WEEK);
55             
56         }while(weekday!=firstDayOfWeek);
57         System.out.println();
58         for(int i=1;i<=indent;i++){
59             System.out.print("      ");
60         }
61         d.set(Calendar.DAY_OF_MONTH,1);
62         do{
63             int day = d.get(Calendar.DAY_OF_MONTH);
64             System.out.printf("%5d",day);
65             if(day == today){
66                 System.out.print("*");
67             }else{
68                 System.out.print("^");
69             }
70             d.add(Calendar.DAY_OF_MONTH,1);
71             weekday = d.get(Calendar.DAY_OF_WEEK);
72             if(weekday == firstDayOfWeek){
73                 System.out.println();
74             }
75         }while(d.get(Calendar.MONTH)==month);
76         if(weekday != firstDayOfWeek){
77             System.out.println();
78             
79         }
80         
81     }
82 
83 }

猜你喜欢

转载自www.cnblogs.com/i2019/p/11030170.html
4-1