使用LocalDate类的程序来打印日历;
import java.time.DayOfWeek;
import java.time.LocalDate;
//日历打印
public class Test002 {
public static void main(String[] args) {
LocalDate date=LocalDate.now();
int month=date.getMonthValue();//获取当前月份值
int today=date.getDayOfMonth();//获取对象所在月份的第几天
/*
System.out.println(date.minusDays(today-1));
System.out.println(date);
说明此处调用了访问器方法
*/
date= date.minusDays(today-1);
DayOfWeek weekday=date.getDayOfWeek();
int value=weekday.getValue();//获取日期所对应的星期
System.out.println("Mon Tue Wed Thu Fri Sat sun");
for(int i=1;i<value;i++)
{
System.out.print(" ");
}
while(date.getMonthValue()==month)
{
System.out.printf("%3d",date.getDayOfMonth());
if(date.getDayOfMonth()==today)
{
System.out.print("*");
}else
{
System.out.print(" ");
}
date=date.plusDays(1);
if (date.getDayOfWeek().getValue()==1)
{
System.out.println();
}
}
if(date.getDayOfWeek().getValue()!=1)
{
System.out.println();
}
}
}
代码效果:
在上述代码:
LocalDate date=LocalDate.now();
中,创建对象时没有直接使用构造器来构造对象,而是使用了用静态工厂方法(factory method)来代表你间接使用了构造器。
在上述代码:
LocalDate date=LocalDate.now();
int month=date.getMonthValue();//获取当前月份值
int today=date.getDayOfMonth();//获取对象所在月份的第几天
中,凡是用date调用的方法都是访问器方法,即只访问对象而不修改当对象而是创造一个新对象,与之对应的有更改器方法,即访问对象并且更改当前对象。
知识点 :
在Java中 print / printf / println 的区别:
1. print为一般输出,不换行也不能格式化。
2.printf主要是继承了C语言的printf的一些特性,可以进行格式化输出。
3.println为换行输出,会在输出内容结尾加上一个换行符。
构造器,访问器,更改器的区分:
更改器就是会改变原来的数据;
例如:带 set 字眼的方法
访问器只是会查看数据;
例如:带 get 字眼的方法
而构造器就是创建。
例如:Date date=new Date();
Date()就是构造器,new Date()就是调用构造器Date()来创建date对象。