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();}
}
?