OOP:面向对象程序设计
类:构造对象的模板或蓝图
类构造对象的过程称为创建类的实例
封装:对外隐藏数据的真实实现方式,提供简单的方法 (类比方向盘)
对象:本质上是内存中的一小块空间
识别类:不同的类有不同的特征
预定义类:Java提供的各类方法
构造器(构造方法):new的时候调用的那个方法;与类名完全一致
Date类:
new Date()
LocalDate类:
LocalDate.now() 创建新对象
LocalDate.of(1999,12,31) 指定创建特定日期
getYear() getMonthValue() getDayOfMonth()
更改器(能够做修改)与访问器(访问数据):
package 第四章对象和类;import java.time.LocalDate;
import java.util.Arrays;public class Test {public static void main(String[] args) {
// LocalDate.now();
// LocalDate newYear=LocalDate.of(2004, 3, 6);
// System.out.println(newYear);
// int year=newYear.getYear();
// System.out.println(year);
// int month=newYear.getMonthValue();
// System.out.println(month);
// int day=newYear.getDayOfMonth();
// System.out.println(day);Person xx=new Person();
// xx.flag1=10;
// System.out.println(xx.flag1);
// //xx.flag2??
// xx.setFlag2(30);System.out.println(Arrays.toString(xx.getFlag3()));int[] arr=xx.getFlag3();arr[0]=111;arr[1]=222;System.out.println(Arrays.toString(xx.getFlag3()));//,flag3没有提供更改器,但会将flag3更改// }
}
package 第四章对象和类;public class Person {
// public int flag1;//所有的类都可以访问到
// private int flag2=130184;//只能在当前的类访问//想要访问private可以通过访问器//访问器
// public int getFlag2() {
// return flag2;
// }//更改器 能够修改
// public void setFlag2(int flag2) {
// //当前对象
// this.flag2=flag2;
// }private int[] flag3= {1,2,3,4};//引用类型默认的访问器和更改器不安全:会暴露地址public int[] getFlag3() {//默认访问器:浅拷贝
// return flag3;//安全写法:深拷贝int[] temp=new int[flag3.length];for(int i=0;i<flag3.length;i++) {temp[i]=flag3[i];}return temp;}private String flag4="hello";//安全:因为字符串不可变,即使暴露了也没关系public String getFlag4() {return flag4;}}
LocalDate类:日历
package 第四章对象和类;import java.time.DayOfWeek;
import java.time.LocalDate;public class CalendarTest {public static void main(String[] args) {//打印当前月份的日历// 获取当前日期LocalDate date=LocalDate.now();// 获取当前月份int month=date.getMonthValue();// 获取今天是几号int today=date.getDayOfMonth();// 将日期设置为当月第一天(减去今天的天数-1)date=date.minusDays(today-1);// 获取当月第一天是星期几DayOfWeek weekday=date.getDayOfWeek();// 获取星期几对应的数值(1=星期一,...,7=星期日)int value=weekday.getValue();System.out.println("Mon Tue Wed Thu Fri Sat Sun");for(int i=1;i<value;i++)System.out.println(" ");// 循环打印当月所有日期while(date.getMonthValue()==month) {// 打印日期(右对齐,占3位)System.out.printf("%3d",date.getDayOfMonth());// 如果是今天,在日期后加*标记if(date.getDayOfMonth()==today)System.out.print("*");elseSystem.out.print(" ");// 日期加1天date=date.plusDays(1);// 如果是周日,换行if(date.getDayOfWeek().getValue()==1)System.out.println();}// 如果最后一天不是周日,换行if(date.getDayOfWeek().getValue()!=1)System.out.println();}
}