日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

《疯狂Java讲义》8

發(fā)布時間:2025/3/21 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《疯狂Java讲义》8 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

?

與用戶互動

1、 運行Java程序的參數(shù)

2. 使用Scanner獲取鍵盤輸入

系統(tǒng)相關(guān)

1.System類

2.RunTime類

BigDecimal類


與用戶互動

1、 運行Java程序的參數(shù)

?Java程序的入口——main()方法的方法簽名:?

public static void main(String[] args)????{ }

下面詳解為什么用這個方法簽名:

  • public修飾符:因為Java類由JVM(java虛擬機(jī))調(diào)用,為了讓JVM可以自由調(diào)用這個main()方法,所以用public進(jìn)行修飾。

  • static修飾符:JVM調(diào)用這個方法時,不會先創(chuàng)建該主類的對象,然后通過對象調(diào)用這個主方法,JVM直接通過調(diào)用這個類來調(diào)用這個主方法(之前說道過,static修飾的方法是類方法,可以通過類或者對象進(jìn)行調(diào)用)。

  • void:JVM調(diào)用主方法,主方法的返回值要返回給JVM,但是這沒有任何意義,所以就不要返回值就好了。

  • String[] args:字符數(shù)組形參。根據(jù)方法調(diào)用原則,誰調(diào)用了方法,誰就提供形參的值,也就是說,JVM調(diào)用了主方法,所以由它為形參賦值。

    但是JVM怎么知道如何為這個數(shù)組賦值?

    看下面代碼:

    ?

    結(jié)果如下:

    ?

????這是是意料之中的結(jié)果,因為沒有給數(shù)組賦什么值,長度當(dāng)然為0;

????但是如果運行Java程序時(控制臺運行)在類名后面緊跟一個或者多個字符串(多個字符之間通過空格分開),JVM就會把這些字符串依次賦值給args數(shù)組元素。

????如果某參數(shù)本身包含了空格,則應(yīng)該將參數(shù)用雙引號(“”)括起來,否則java會把這個空格單座參數(shù)分隔符,而不是參數(shù)本身。

?????是不是很神奇,沒想到一個以為是套路的東西含義這么深刻。

2. 使用Scanner獲取鍵盤輸入

(1)Scanner主要提供了兩個方法來掃描輸入:

????1)hasNextXXX():是否還有下一個輸入項,其中XXX可以是int,long等代表基本數(shù)據(jù)類型的字符串;如果只是判斷是否包含下一個字符串,則直接使用hasNext()。

????2)nextXXX():獲取下一個輸入項。

?

代碼如下:

結(jié)果如下:

????這里需要了解一下,Scanner默認(rèn)的是通過空白(空格,Tab空白,回車)作為分隔符,如果不想將空白作為分隔符,例如想輸入一行數(shù)據(jù),無論有沒有空格,都看作一個輸入項,如果是這種需求,可以把Scanner的分隔符設(shè)置成只回車。??為Scanner設(shè)置分隔符使用useDelimiter(String pattern)方法即可。該方法的參數(shù)應(yīng)該是一個正則表達(dá)式。(后文會介紹)

看一下栗子:

結(jié)果為:

????可以看到這次在一行輸入三個數(shù)據(jù),空白是沒有分界符的作用的。

????實際上,Scanner提供了兩個簡單的方法進(jìn)行逐行讀取:

1)boolean hasNextLine():返回輸入源中是否還有下一行;

2)String nextLine():返回輸入源中下一行的字符串。

下面演示個用Scanner獲取輸入源中整型的輸入項:

結(jié)果為:

????可以看到的是,它將數(shù)字(整數(shù)或者浮點數(shù)均變成了浮點數(shù)進(jìn)行輸出),但是第二個輸入數(shù)據(jù),因為輸入了字符,不是數(shù)字,所以沒有輸出結(jié)果,此時,Scanner的讀取操作被阻塞。這也是其不如上一個程序所在,適應(yīng)性不強(qiáng)。

????Scanner不僅能夠讀取用戶的鍵盤輸入,還能對文件進(jìn)行讀入。

舉個栗子:

?

這個大體上寫法類似于上面的,要注意兩點,一個是文件的載入的寫法,一個是上面的異常處理(這個程序會自動提示生成)。

?

系統(tǒng)相關(guān)

????Java程序在不同操作系統(tǒng)上運行時,可能需要取得平臺相關(guān)的屬性,或者調(diào)用平臺命令來完成特定的功能。Java提供了System類和Runtime類與程序的運行平臺進(jìn)行交互。

1.System類

????System類作為當(dāng)前運行平臺時,程序不能創(chuàng)建System類的對象,System類提供了一些類變量和類方法,允許直接通過System類來調(diào)用這些類變量和類方法。

????System類提供了代表標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和錯誤輸出的類變量,并提供了一些靜態(tài)方法用于訪問環(huán)境變量、系統(tǒng)屬性的方法,還提供了加載文件和動態(tài)鏈接庫的方法(這個我不清楚,了解一下而已)。System類還有兩個獲取當(dāng)前系統(tǒng)時間的方法,currentTimeMillis()和nanoTime(),它們都返回一個long型整數(shù),這里必須指出的是,這兩個方法返回的時間粒度取決于底層操作系統(tǒng),可能所在的操作系統(tǒng)根本不支持以毫秒和納秒作為計時單位。

2.RunTime類

????Runtime類代表Java程序的運行環(huán)境時,每個Java程序都有一個與之對應(yīng)的Runtime實例,應(yīng)用程序通過該對象與其運行時環(huán)境相連。應(yīng)用程序不能創(chuàng)建自己的Runtime實例,但可以通過getRuntime()方法獲取

與之關(guān)聯(lián)的Runtime對象Runtime作為運行環(huán)境時,可以訪問JVM的相關(guān)信息,

如處理器數(shù)量,內(nèi)存信息等。

舉個栗子:

?

結(jié)果如下:

????此外,Runtime類還有一個功能:直接單獨啟動一個進(jìn)程來運行操作系統(tǒng)的命令:


????感覺好厲害的樣子哦!

BigDecimal類

1.?為了能精確表示、計算浮點數(shù),Java提供了BigDecimal類,該類提供了大量的構(gòu)造器用于創(chuàng)建BigDecimal 對象,包括把所有的基本數(shù)值型變量轉(zhuǎn)換成一個BigDecimal對象,也包括利用數(shù)字字符串、數(shù)字字符數(shù)組來創(chuàng)建BigDecimal對象。

2.?在BigDecimal類的構(gòu)造器中,BigDecimal(double val)構(gòu)造器有一定的不可預(yù)知性,當(dāng)程序使用new BigDecimal(0.1)來創(chuàng)建一個BigDecimal對象時,它的值并不是0.1,它實際上等于一個近似0.1的數(shù),因為0.1無法準(zhǔn)確表示為double浮點數(shù)。但是使用BigDecimal(String val)構(gòu)造器的結(jié)果是可預(yù)知的,因此通常優(yōu)先使用基于String的構(gòu)造器。如果必須使用double浮點數(shù)作為BigDecimal 構(gòu)造器的參數(shù)時,通過BigDecimal.valueOf(double value)靜態(tài)方法來創(chuàng)建BigDecimal對象。

END

總結(jié)

以上是生活随笔為你收集整理的《疯狂Java讲义》8的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。