Java的簡單理解(6)

Java
5.6 System類與Runtime類
5.6.1 System類

Java不支持全局函數(shù)和全局變量,Java設(shè)計者將一些與系統(tǒng)相關(guān)的重要函數(shù)和變量收集到了一個System類中,System類中的所有成員都是靜態(tài)的,當(dāng)要應(yīng)用這些變量和方法的時候棵帽,直接使用System類名做前綴就可以了愕把。

1. exit()方法

終止當(dāng)前正在運行的虛擬機频鉴,參數(shù)用作狀態(tài)碼榄檬,按照慣例,非0的狀態(tài)碼表示異常終止刹悴。事實上要退出Java程序行楞,可以使用destory()退出一個獨立運行的過程。

2. currentTimeMills方法
System.currentTimeMills()產(chǎn)生一個當(dāng)前的毫秒數(shù)土匀,這個毫秒就是自1970年1月1日0時起的毫秒數(shù)子房。

5.6.2 Runtime類

Runtime類封裝了Java命令本身所啟動的實例進(jìn)程,也就是封裝了Java虛擬機進(jìn)程。一個Java虛擬機對應(yīng)一個Runtime實例對象证杭。Runtime類中的許多方法和System類中的方法重復(fù)田度,不能直接創(chuàng)建Runtime的實例對象,也就是不能通過new來創(chuàng)建解愤,只能通過Runtime.getRuntime靜態(tài)方法來獲得Runtime實例對象的引用镇饺。

Java虛擬機本身就是Windows上的一個進(jìn)程,這個進(jìn)程可以啟動其他的Windows程序送讲,通過這種方式啟動的Windows程序?qū)嵗头Q為子進(jìn)程奸笤。Java虛擬機調(diào)用Runtimeexec方法可以啟動這個子進(jìn)程,其返回值就是代表子進(jìn)程的Process對象李茫。

Process類是一個抽象類揭保,封裝一個進(jìn)程。

5.7 Date類和Carlendar類

Java語言提供了以下兩個類來處理日期魄宏。

  • java.util.Date
    包裝了一個long類型的數(shù)據(jù),表示與GMT(格林威治標(biāo)準(zhǔn)時間)的1970年1月1日00:00:00這一刻所相距的毫秒數(shù)存筏。

  • java.util.Calendar
    可以靈活地設(shè)置或讀取日期中的年宠互,月,日椭坚,時予跌,分,秒等信息善茎。

5.7.1 Date類

java.util包中的Date類表示特定的時間券册,精確到毫秒。使用Date類的無參構(gòu)造函數(shù)Date()創(chuàng)建的對象可以獲取本地當(dāng)前時間垂涯。

Date();

分配Date對象并初始化此對象烁焙,以表示分配它的時間(精確到毫秒)。在類Date所有可以接受或返回年耕赘,月骄蝇,日,小時操骡,分鐘和秒值的方法中九火,將使用下面的表示形式。

  • 年份y由整數(shù)y-1900表示
  • 月份由從0-11的整數(shù)表示册招。0是一月岔激,1是二月等,因此11是十二月是掰。
  • 日期(一月中的某天)按通常方式由整數(shù)1-31表示
  • 小時由從0-23的整數(shù)表示虑鼎,因此從午夜到1 a.m.的時間是0點,從中午到1 p.m.的時間是12點冀惭。
  • 分鐘按通常方式由0-59的整數(shù)表示震叙。
  • 秒由0-61的整數(shù)表示掀鹅,值60和61只對閏秒發(fā)生,盡管那樣媒楼,也只用在實際正確跟蹤閏秒的Java實現(xiàn)中乐尊。若按當(dāng)前引入閏秒的方式,兩個閏秒在同一分鐘內(nèi)發(fā)生是極不可能的划址,但此規(guī)范遵循ISO C的日期和時間約定扔嵌。

3中格式輸出時間

Date nowTime = new Date();
System.out.println(nowTime);

SimpleDateFormat matter1 = new SimpleDateFormat("'time':yyyy年mm月dd日E 北京時間");
System.out.println(matter1.format(nowTime));

SimpleDateFormat matter2 = new SimpleDateFormat("北京時間:yyyy年mm月dd日hh時mm分ss秒");
System.out.println(matter2.format(nowTime));

Date date1 = new Date(1000);
Date date2 = new Date(-1000);

System.out.println(matter2.format(date1));
System.out.println(matter2.format(date2));

System.out.println(new Date(System.currentTimeMillis()));

Tue Apr 17 21:54:20 CST 2018
time:2018年54月17日星期二 北京時間
北京時間:2018年54月17日09時54分20秒
北京時間:1970年00月01日08時00分01秒
北京時間:1970年59月01日07時59分59秒
Tue Apr 17 21:54:20 CST 2018
        
5.7.2 Calendar類

java.util.Calendar類是一個抽象類。它為特定瞬間與一組諸如YEAR夺颤,MONTH痢缎,DAY_OF_MONTHHOUR等日歷字段之間的轉(zhuǎn)換提供了一些方法世澜,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法独旷。

抽象類不能采用new實例化,但可以使用Calendar類的static方法getInstance()初始化一個日歷對象寥裂。

Calendar calendar = Calendar.getInstance();

setget方法可用來設(shè)置和讀取日期的特定部分嵌洼,比如年,月封恰,日麻养,時,分诺舔,秒等鳖昌。

將日歷翻到任何一個時間,參數(shù)year取負(fù)數(shù)時表示公元前低飒。

public int get(int field);

可以獲取有關(guān)年份许昨,月份,小時逸嘀,星期等信息车要,參數(shù)field的有效值由Calendar的靜態(tài)常量指定。

calendar.get(Calendar.MONTH);

返回一個整數(shù)崭倘,如果該整數(shù)是0表示當(dāng)前日歷是在一月翼岁,該整數(shù)是1表示當(dāng)前日歷是在二月等。

public long getTimeInMillis();

返回此calendar的時間值司光,以毫秒為單位琅坡。

public class GregorianCalendar1 {

    public static void main(String[] args) {
        
        GregorianCalendar cal = new GregorianCalendar(); // 表示當(dāng)前時間
        System.out.println(new SimpleDateFormat("yyyy-mm-dd hh:mm:ss EEEE").format(cal.getTime()));
        
        cal.clear();
        cal.set(Calendar.YEAR, 2018);
        cal.set(Calendar.MONTH, Calendar.JULY);
        cal.set(Calendar.DAY_OF_MONTH, 15);
        cal.set(Calendar.HOUR_OF_DAY, 12);
        cal.set(Calendar.MINUTE, 33);
        cal.set(Calendar.SECOND, 55);
        
        System.out.println(new SimpleDateFormat("yyyy-mm-dd hh:mm:ss EEEE").format(cal.getTime()));
    }

}

2018-17-17 09:17:25 星期二
2018-33-15 12:33:55 星期日

    private void initDate() {
        String temp = "2018-04-19";
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date date = format.parse(temp);
            Calendar calendar = new GregorianCalendar();
            calendar.setTime(date);
            calendar.set(Calendar.DATE,19); // 設(shè)置該月的日期 即4月19日
            int a = calendar.get(Calendar.DAY_OF_WEEK); // 星期四,但是顯示是5残家,因為星期日是1榆俺,星期六是7
            int b = calendar.getActualMaximum(Calendar.DATE); // 得到字段Calendar.DATE在日歷中的最大值
            calendar.add(Calendar.DATE,1); // 天數(shù)增加1
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
5.8 Math與Random類
5.8.1 Math類

java.lang包中的Math類也稱數(shù)學(xué)類,是一個工具類,它在解決與數(shù)學(xué)有關(guān)的一些問題時有著非常重要的作用茴晋。Math類包含許多用來進(jìn)行科學(xué)計算的類方法陪捷,涉及到大多數(shù)數(shù)學(xué)函數(shù),如sin诺擅,cos市袖,exp,abs等烁涌,這些方法可以直接通過類名調(diào)用苍碟。Math類還提供了Math.PI和Math.E兩個靜態(tài)數(shù)學(xué)常量:E和PI,它們的值分別為2.7182828284590452354和3.14159265358979323846撮执,該類是final的微峰,不能被繼承,類中的方法和屬性全部是靜態(tài)的抒钱,不允許在類的外部創(chuàng)建Math類的對象蜓肆。因此只能使用Math類的方法而不能對其做任何更改。

Math.abs(12.3);                 //12.3 返回這個數(shù)的絕對值  
Math.abs(-12.3);                //12.3  
  
Math.copySign(1.23, -12.3);     //-1.23,返回第一個參數(shù)的量值和第二個參數(shù)的符號  
Math.copySign(-12.3, 1.23);     //12.3  
  
Math.signum(x);                 //如果x大于0則返回1.0继效,小于0則返回-1.0症杏,等于0則返回0  
Math.signum(12.3);              //1.0  
Math.signum(-12.3);             //-1.0  
Math.signum(0);                 //0.0  
  
  
//指數(shù)  
Math.exp(x);                    //e的x次冪  
Math.expm1(x);                  //e的x次冪 - 1  
  
Math.scalb(x, y);               //x*(2的y次冪)  
Math.scalb(12.3, 3);            //12.3*23  
  
//取整  
Math.ceil(12.3);                //返回最近的且大于這個數(shù)的整數(shù)13.0  
Math.ceil(-12.3);               //-12.0  
  
Math.floor(12.3);               //返回最近的且小于這個數(shù)的整數(shù)12.0  
Math.floor(-12.3);              //-13.0  
  
//x和y平方和的二次方根  
Math.hypot(x, y);               //√(x2+y2)  
  
//返回概述的二次方根  
Math.sqrt(x);                   //√(x) x的二次方根  
Math.sqrt(9);                   //3.0  
Math.sqrt(16);                  //4.0  
  
//返回該數(shù)的立方根  
Math.cbrt(27.0);                //3   
Math.cbrt(-125.0);              //-5  
  
//對數(shù)函數(shù)  
Math.log(e);                    //1 以e為底的對數(shù)  
Math.log10(100);                //10 以10為底的對數(shù)  
Math.log1p(x);                  //Ln(x+ 1)  
  
//返回較大值和較小值  
Math.max(x, y);                 //返回x、y中較大的那個數(shù)  
Math.min(x, y);                 //返回x瑞信、y中較小的那個數(shù)  
  
//返回 x的y次冪  
Math.pow(x, y);                   
Math.pow(2, 3);                 //即23 即返回:8  
  
//隨機返回[0,1)之間的無符號double值  
Math.random();                    
  
//返回最接近這個數(shù)的整數(shù),如果剛好居中,則取偶數(shù)  
Math.rint(12.3);                //12.0   
Math.rint(-12.3);               //-12.0  
Math.rint(78.9);                //79.0  
Math.rint(-78.9);               //-79.0  
Math.rint(34.5);                //34.0  
Math.rint(35.5);                //36.0  
  
Math.round(12.3);               //與rint相似穴豫,返回值為long  
  
//三角函數(shù)  
Math.sin(α);                    //sin(α)的值  
Math.cos(α);                    //cos(α)的值  
Math.tan(α);                    //tan(α)的值  
  
//求角  
Math.asin(x/z);                 //返回角度值[-π/2凡简,π/2]  arc sin(x/z)  
Math.acos(y/z);                 //返回角度值[0~π]   arc cos(y/z)  
Math.atan(y/x);                 //返回角度值[-π/2,π/2]  
Math.atan2(y-y0, x-x0);         //同上精肃,返回經(jīng)過點(x据过,y)與原點的的直線和經(jīng)過點(x0翅睛,y0)與原點的直線之間所成的夾角  
  
Math.sinh(x);                   //雙曲正弦函數(shù)sinh(x)=(exp(x) - exp(-x)) / 2.0;  
Math.cosh(x);                   //雙曲余弦函數(shù)cosh(x)=(exp(x) + exp(-x)) / 2.0;  
Math.tanh(x);                   //tanh(x) = sinh(x) / cosh(x);  
  
//角度弧度互換  
Math.toDegrees(angrad);         //角度轉(zhuǎn)換成弧度,返回:angrad * 180d / PI  
  
Math.toRadians(angdeg);         //弧度轉(zhuǎn)換成角度,返回:angdeg / 180d * PI  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末末荐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子疏魏,更是在濱河造成了極大的恐慌倒信,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件资溃,死亡現(xiàn)場離奇詭異武翎,居然都是意外死亡,警方通過查閱死者的電腦和手機溶锭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門宝恶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事垫毙∨撸” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵综芥,是天一觀的道長丽蝎。 經(jīng)常有香客問我,道長毫痕,這世上最難降的妖魔是什么征峦? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮消请,結(jié)果婚禮上栏笆,老公的妹妹穿的比我還像新娘。我一直安慰自己臊泰,他們只是感情好蛉加,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缸逃,像睡著了一般针饥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上需频,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天丁眼,我揣著相機與錄音,去河邊找鬼昭殉。 笑死苞七,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挪丢。 我是一名探鬼主播蹂风,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼乾蓬!你這毒婦竟也來了惠啄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤任内,失蹤者是張志新(化名)和其女友劉穎撵渡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體族奢,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡姥闭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了越走。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棚品。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡靠欢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铜跑,到底是詐尸還是另有隱情门怪,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布锅纺,位于F島的核電站掷空,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏囤锉。R本人自食惡果不足惜坦弟,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望官地。 院中可真熱鬧酿傍,春花似錦、人聲如沸驱入。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亏较。三九已至莺褒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雪情,已是汗流浹背遵岩。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留巡通,地道東北人旷余。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像扁达,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蠢熄,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法跪解,類相關(guān)的語法,內(nèi)部類的語法签孔,繼承相關(guān)的語法叉讥,異常的語法,線程的語...
    子非魚_t_閱讀 31,625評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理饥追,服務(wù)發(fā)現(xiàn)图仓,斷路器,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 吃早點剛回來但绕。 在便民救崔,兒子要了一碗餛飩惶看,說了聲,太熱六孵,就上一邊玩去了纬黎。他哪去了呢?其實劫窒,并沒跑太遠(yuǎn)本今,就在那離餛飩...
    橋上風(fēng)景閱讀 146評論 1 1
  • “半小時看完一本書”我想這是大多數(shù)人想要擁有的技能冠息,在這個信息爆炸的時代,每天都會有無數(shù)的信息圍繞在我們周圍孕索,張著...
    愛看書的路大膽閱讀 323評論 0 3
  • 云股利是深圳股利科技公司旗下的國際化創(chuàng)投生態(tài)綜合服務(wù)商逛艰,為初創(chuàng)企業(yè)提供包括股權(quán)融資、資產(chǎn)管理檬果、行業(yè)資訊瓮孙、宣傳推廣、...
    云股利創(chuàng)投圈閱讀 142評論 0 0