本篇文章和大家了解一下在Java中使用預定義類的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。
在Java中,沒有類就無法做任何事情。然而,并不是所有的類都表現出面向對象的典型特征。以Math.Random為例,我們不必具體了解如何實現的,只需要方法名和參數。這正是封裝的關鍵所在。Math類只封裝了功能,所以不需要隱藏數據。由于沒有數據,因此不必考慮創建對象和初始化它們的實例字段,因為根本沒有實例字段。
要使用對象首先必須構造對象,并指定其初始化狀態,然后對對象應用方法。
在Java中,要使用構造器(constructor,或稱構造函數)構造新實例。構造器是一種特殊的方法,其作用是構造并初始化對象。
構造器總是與類名同名。因此,Date類的構造器就名為Date。要想構造一個Date對象,需要在構造器前面加上new操作符。如下例子:
new Date()
這個表達式會構造一個新對象。這個對象初始化為當前的日期和時間。
如果需要,可以將這個對象傳遞給一個方法:
System.out.println(new Date());
或者對剛構造的對象應用一個方法。Date類中有一個toString方法。這個方法將生成日期的一個字符串描述,可以如下對Date對象應用toString方法:
String s = new Date().toString();
上面兩個例子,構造對象僅使用了一次。通常,你可能希望保留所構造的對象從而能繼續使用,為此,需要將對象存放值一個變量中:
Date rightNow = new Date();
對象和對象變量存在一個重要的區別,例如:
Date startTime; s = startTime.toString(); //not yet
上例定義了一個對象變量startTime,它可以引用Date類型的變量。但是,startTime不是一個對象,而且實際上它甚至還沒有引用任何對象,所以不能在這個變量上用任何Date方法,將會產生編譯錯誤。
必須初始化startTime變量,讓它引用一個新構造的對象:
startTime = new Date();
也可以設置這個變量,讓它引用一個已有的對象:
startTime = rightNow;
重要的一點:對象變量并不實際包含一個對象,它只是引用一個對象
在Java中,任何對象變量的值都是一個引用,指向存儲在另外一個地方的某個對象。
標準Java類庫分別包含了兩個類:一個是用來表示時間點的Date類;另一個是用大家熟悉的日歷表示法表示日期的LocalDate類。將時間度量與日歷分開是一種很好的面向對象設計。
不要使用構造器來構造LocalDate對象。應用使用靜態工廠方法(factory method),它會代表你調用的構造器,下面式表達式:
LocalDate.now()
上例會構造一個新對象,表示構造這個對象時的日期。
可以提供年、月、日來構造對應一個特定日期的對象,并保存在一個對象變量中:
LocalDate newYearEve = LocalDate.of(2020,2,2)
也可以使用plusDays方法,把應用這個方法的對象稱為當前對象,那么這個新日期對象則是距當前對象指定天數的一個新日期:
LocalDate aThousandDaysLater = newYearsEve.plusDays(1000); int year = aThousandDays.getYear(); int month = aThousanDays.getMonthValue(); int day = aThousanDays.getDayOfMonth();
LocalDate類封裝了一些實例字段來維護所設置的日期。
Java庫較早版本曾經有另一個處理日歷的類,名為GregorianCalender。如下這個類表示的是一個日期增加1000天:
GregorianCalendar someDay = new GregorianCalendar(1999,11,31); someDay.add(Calender.DAY_OF_MONTH,1000);
與LocalDate.plusDays方法不同,GregorianCalendar.add方法是一個更改器方法(mutator method)。調用這個方法后,someDay對象的狀態會改變。
相反,只訪問對象而不修改對象的方法有時稱為訪問器方法(accessor method)。例如,LocalDate.getYear和GregorianCalender.get就是訪問器方法。
使用LocalDate類顯示當前月的日歷:
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(); 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(); } } }
執行結果:
java.time.LocalDate API:
static LocalDate now()
構造一個表示當前日期的對象
static LocalDate of(int year, int month, int day)
構造一個表示給定日期的對象
int getYear()
int getMonthValue()
int getDayOfMonth()
得到當前日期的年、月和日
DayOfWeek getDayOfWeek()
得到當前日期是星期幾,作為DayOfWeek類的一個實例返回。在DayOfWeek實例上調用getValue來得到1-7之間的一個數,表示這是返回的星期幾,1表示星期一,7表示星期日
LocalDate plusDays(int n)
LocalDate minusDays(int n)
生成當前日期之后或之前n天的日期
以上就是在Java中使用預定義類的方法的簡略介紹,當然詳細使用上面的不同還得要大家自己使用過才領會。如果想了解更多,歡迎關注億速云行業資訊頻道哦!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。