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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

《疯狂Java讲义》8

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

目錄

?

與用戶互動

1、 運行Java程序的參數

2. 使用Scanner獲取鍵盤輸入

系統相關

1.System類

2.RunTime類

BigDecimal類


與用戶互動

1、 運行Java程序的參數

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

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

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

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

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

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

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

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

    看下面代碼:

    ?

    結果如下:

    ?

????這是是意料之中的結果,因為沒有給數組賦什么值,長度當然為0;

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

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

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

2. 使用Scanner獲取鍵盤輸入

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

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

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

?

代碼如下:

結果如下:

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

看一下栗子:

結果為:

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

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

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

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

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

結果為:

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

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

舉個栗子:

?

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

?

系統相關

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

1.System類

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

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

2.RunTime類

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

與之關聯的Runtime對象Runtime作為運行環境時,可以訪問JVM的相關信息,

如處理器數量,內存信息等。

舉個栗子:

?

結果如下:

????此外,Runtime類還有一個功能:直接單獨啟動一個進程來運行操作系統的命令:


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

BigDecimal類

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

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

END

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。