Java學(xué)習(xí)-Day05-Java基礎(chǔ)類庫

1.運(yùn)行java程序的參數(shù)

main方法的方法簽名public static void main(String[] args){...}

  • public修飾符:Java類由JVM調(diào)用,public暴露這個方法
  • static修飾符:JVM調(diào)用主方法時兼搏,不會先創(chuàng)建對象再調(diào)用,而是直接通過該類調(diào)用主方法件相,所以用static修飾
  • void返回值:主方法被JVM調(diào)用,返回值將返回給JVM让虐,沒有任何意義
  • String[] args形參:運(yùn)行Java程序時在類名后緊跟一個或多個字符串,JVM會把字符串依次賦值給args數(shù)組元素eg: java ArgsTest Java Spring

2.Scanner獲取鍵盤輸入

Scanner是一個基于正則表達(dá)式的文本掃描器,它可以從文件漱受,輸入流昂羡,字符串中解析出基本類型和字符串值虐先。Scanner類提供了多個構(gòu)造器,不同的構(gòu)造器可以接收文件,輸入流甸赃,字符串作為數(shù)據(jù)源埠对,用于從文件貌笨,輸入流锥惋,字符串中解析數(shù)據(jù)

2.1 主要提供兩個方法:
  • hasNextXxx():是否還有下一個輸入項(xiàng)膀跌,其中Xxx可以是Int,Long等代表基本數(shù)據(jù)類型的字符串丛忆,如果只是判斷是否包含下一個字符串熄诡,則直接使用hasNext()
  • nextXxx():獲取下一個輸入項(xiàng)

默認(rèn)情況下,Scanner使用空白(空格,Tab空白惫周,回車)作為多個輸入項(xiàng)之間的分隔符

import java.util.*;

public class ScannerTest {
    public static void main(String[] args){
        //System.in代表標(biāo)準(zhǔn)輸入,就是鍵盤輸入
        Scanner sc = new Scanner(System.in);
        //增加下面一行將只把回車作為分隔符
        //sc.useDelimiter("\n")
        //判斷是否還有下一個輸入項(xiàng)
        while (sc.hasNext()){
            System.out.println("鍵盤輸入的內(nèi)容是:"+ sc.next());
        }
    }
}
2.2 Scanner也提供了兩個簡單的方法來逐行讀取
  • boolean hasNextLine():返回輸入源中是否還有下一行
  • String nextLine():返回輸入源中下一行的字符串
2.3 Scanner還可以讀取文件輸入,需要在創(chuàng)建Scanner對象時傳入一個File對象作為參數(shù)
import java.io.*;
import java.util.*;

public class ScannerFileTest {
    public static void main(String[] args)throws Exception{
        //System.in代表標(biāo)準(zhǔn)輸入,就是鍵盤輸入
        Scanner sc = new Scanner(new File("ScannerFileTest.java"));
        //增加下面一行將只把回車作為分隔符
        //sc.useDelimiter("\n")
        //判斷是否還有下一個輸入項(xiàng)
        while (sc.hasNextLine()){
            System.out.println("鍵盤輸入的內(nèi)容是:"+ sc.nextLine());
        }
    }
}

3.System類

System類代表當(dāng)前Java程序的運(yùn)行平臺氯迂,程序不能創(chuàng)建System類的對象
System類提供了代表標(biāo)準(zhǔn)輸入言缤,標(biāo)準(zhǔn)輸出和錯誤輸出的類變量禁灼,并提供了一些靜態(tài)方法用于訪問環(huán)境變量,系統(tǒng)屬性的方法僻孝,還提供了加載文件和動態(tài)鏈接庫的方法

3.1通過System類來訪問操作的環(huán)境變量和系統(tǒng)屬性
import java.io.FileOutputStream;
import java.util.Map;
import java.util.Properties;

public class SystemTest {
    public static void main(String[] args)throws Exception{
        //獲取系統(tǒng)所有的環(huán)境變量
        Map<String,String> env = System.getenv();
        for(String name : env.keySet()){
            System.out.println(name + "--->" + env.get(name));
        }
        //獲取指定環(huán)境變量的值
        System.out.println(System.getenv("JAVA_HOME"));
        //獲取所有的系統(tǒng)屬性
        Properties props = System.getProperties();
        //將所有的系統(tǒng)屬性保存到Prop.txt文件中
        props.store(new FileOutputStream("prop.txt"),"System Properties");
        //輸出指定的系統(tǒng)屬性
        System.out.println(System.getProperty("os.name"));
    }
}
3.2獲取系統(tǒng)當(dāng)前時間

currentTimeMillis()和nanoTime()守谓,都返回一個long型整數(shù)

3.3其他
  • System類的in,out悴务,err分別代表系統(tǒng)的標(biāo)準(zhǔn)輸入(通常是鍵盤)譬猫,標(biāo)準(zhǔn)輸出(通常是顯示器)和錯誤輸出流,并提供了setIn(),setOut(),setErr()來改變系統(tǒng)的標(biāo)準(zhǔn)輸入染服,標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出流

4.Runtime類

Runtime類代表Java程序的運(yùn)行時環(huán)境叨恨,每個Java程序都有一個與之對應(yīng)的Runtime實(shí)例。應(yīng)用程序不能創(chuàng)建自己的Runtime實(shí)例痒钝,但是可以通過getRuntime()方法獲取與之關(guān)聯(lián)的Runtime對象

4.1訪問JVM相關(guān)信息,如處理器數(shù)量蚕甥,內(nèi)存信息等
public class RuntimeTest {
    public static void main(String[] args){
        //獲取Java程序關(guān)聯(lián)的運(yùn)行時對象
        Runtime rt = Runtime.getRuntime();
        System.out.println("處理器數(shù)量:" + rt.availableProcessors());
        System.out.println("空閑內(nèi)存數(shù):" + rt.freeMemory());
        System.out.println("總內(nèi)存數(shù):" + rt.totalMemory());
        System.out.println("可用最大內(nèi)存數(shù):" + rt.maxMemory());
    }
}
4.2單獨(dú)啟動一個進(jìn)程來運(yùn)行操作系統(tǒng)的命令
public class ExecTest {
    public static void main(String[] args)throws Exception{
        Runtime rt = Runtime.getRuntime();
        //運(yùn)行記事本程序
        rt.exec("notepad.exe");
    }
}

5.Object類

Object類是所有類栋荸,數(shù)組,枚舉類的父類爱沟,Java允許把任何類型的對象賦給Object類型的變量

  • boolean equals(Object obj):判斷指定對象與該對象是否相等
  • protected void finalize():系統(tǒng)沒有引用變量引用該對象時匆背,垃圾回收器調(diào)用此方法來清理該對象資源
  • Class<?>getClass():返回該對象的運(yùn)行時類
  • int hashCode():返回該對象的hashCode值
  • String toString():返回該對象的字符串表示
  • 此外還有wait(),notify(),notifyAll()幾個方法,用于控制線程暫停和運(yùn)行
5.1 clone()方法

用于幫助其他對象實(shí)現(xiàn)“自我克隆”钝尸,由于Object類提供的clone()方法使用了protected修飾搂根,該方法只能被子類重寫或者調(diào)用

class Address{
    String detail;
    public Address(String detail){
        this.detail = detail;
    }
}

//實(shí)現(xiàn)CLoneable接口
class User implements Cloneable{
    int age;
    Address address;
    public User(int age){
        this.age = age;
        address = new Address("廣州天河");
    }
    //通過調(diào)用super.clone()來實(shí)現(xiàn)clone()方法
    public User clone()throws CloneNotSupportedException{
        return (User)super.clone();
    }
}

public class CloneTest {
    public static void main(String[] args)throws CloneNotSupportedException{
        User u1 = new User(29);
        User u2 = u1.clone();
        System.out.println(u1 == u2);
        System.out.println(u1.address == u2.address);
    }
}

6.Objects類(Java 7)

java 7新增的Objects工具類

  • 不能確定引用變量是否為null時奶浦,調(diào)用toString()可能會造成報錯,但是如果用Objects類的toString(Object o)方法隙咸,在o為null時成洗,會返回"null"字符串

7.String,StringBuffer和StringBuilder

  • String類是不可變類瓶殃,一旦一個String對象被創(chuàng)建以后,包含在這個對象中的字符序列是不可改變的基矮,直到對象被銷毀
  • StringBuffer對象代表字符序列可變的字符串,生成以后可以通過提供的方法進(jìn)行變換家浇,最后用toString()轉(zhuǎn)換成String對象
  • StringBuilder類碴裙,與StringBuffer不同的是,StringBuffer是線程安全的舔株,StringBuilder沒有實(shí)現(xiàn)線程安全功能,性能略高惭等。通常優(yōu)先考慮使用StringBuilder類
7.1 String類
  • String():創(chuàng)建一個包含0個字符串序列的String對象(并不是返回null)
  • String(byte[] bytes,Charset charset):使用指定的字符集將指定的byte[]數(shù)組解碼成一個新的String對象
  • String(byte[] bytes,int offset,int length):使用平臺默認(rèn)字符集將指定的byte[]數(shù)組從offset開始娃肿,長度為length的子數(shù)組解碼成一個新的String對象
  • char charAt(int index):獲取字符串中指定位置的字符
  • int compareTo(String anotherString):比較兩個字符串的大小,相等返回0料扰,不相等從頭開始比較,長度不等返回長度差嫂伞,或者返回第一個不相等的字符差
  • String concat(String str):講該對象與str連在一起
  • boolean contentEquals(StringBuffer sb):將該String對象與StringBuffer對象sb進(jìn)行比較,相同返回true
  • static String copyValueOf(char[] data):將字符數(shù)組連綴成字符串
  • int indexOf(int ch):找出ch字符在該字符中第一次出現(xiàn)的位置
  • int lastIndexOf(int ch):找出ch字符在該字符串中最后一次出現(xiàn)的位置
  • String replace(char oldChar,char newChar):替換字符串
  • String substring(int beginIndex,int endIndex):截取字符串
  • char[] toCharArray()將該String對象轉(zhuǎn)換成char數(shù)組
  • String toLowerCase():轉(zhuǎn)小寫
  • String toUpperCase():轉(zhuǎn)大寫
7.2 StringBuilder,StringBuffer類
  • length屬性:長度,可以改變,通過length(),setLength(int len)
  • append(),insert(),replace(),delete(),reverse()

8.Math類

  • 無法定義實(shí)例對象,Math提供了靜態(tài)方法帖努,還有PI和E
  • 更多用法使用時查API文檔就行了

9.ThreadLocalRandom和Random(Java 7)

ThreadLocalRandom類是Java 7新增的一個類,它是Random的增強(qiáng)版污桦,在并發(fā)訪問的環(huán)境下匙监,使用ThreadLocalRandom來代替Random可以減少多線程資源競爭

  • 這兩個類都比Math的random()方法提供了更多的方式來生成各種偽隨機(jī)數(shù)

10.BigDecimal類

為了解決精度丟失(各種計算的時候精度丟失真的是一個很蛋疼的問題)

  • 創(chuàng)建BigDecimal對象時,不要直接使用double亭姥,應(yīng)該使用String對象
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市坝撑,隨后出現(xiàn)的幾起案子粮揉,更是在濱河造成了極大的恐慌,老刑警劉巖扶认,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡蛀柴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門吊洼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來制肮,“玉大人,你說我怎么就攤上這事豺鼻。” “怎么了儒飒?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長附帽。 經(jīng)常有香客問我,道長整胃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任屁使,我火速辦了婚禮荚藻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘应狱。我一直安慰自己,他們只是感情好除嘹,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布岸蜗。 她就那樣靜靜地躺著,像睡著了一般璃岳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上单芜,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天犁柜,我揣著相機(jī)與錄音,去河邊找鬼馋缅。 笑死,一個胖子當(dāng)著我的面吹牛萤悴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稚疹,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼怪嫌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起岩灭,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤噪径,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后找爱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寺谤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年吮播,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片意狠。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖闷板,靈堂內(nèi)的尸體忽然破棺而出院塞,到底是詐尸還是另有隱情蛔垢,我是刑警寧澤迫悠,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布巩梢,位于F島的核電站,受9級特大地震影響鞠抑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搁拙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望箕速。 院中可真熱鬧,春花似錦兴垦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至常柄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拐纱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工揍庄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留东抹,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓缭黔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親别渔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

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

  • 一哎媚、Java 簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計...
    子非魚_t_閱讀 4,206評論 1 44
  • 一拨与、基礎(chǔ)知識:1、JVM买喧、JRE和JDK的區(qū)別:JVM(Java Virtual Machine):java虛擬機(jī)...
    殺小賊閱讀 2,388評論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法淤毛,內(nèi)部類的語法,繼承相關(guān)的語法钱床,異常的語法,線程的語...
    子非魚_t_閱讀 31,664評論 18 399
  • 一中年朋友說他15歲那年從鄉(xiāng)下趕到鎮(zhèn)里參加中招考試事期,中午破費(fèi)六元大洋在餐館點(diǎn)了一盤紅燒茄子纸颜,那是他記憶里最美的味道...
    關(guān)念閱讀 537評論 1 1
  • 帶著喜悅的心情和覺知給我今天的好種子,施肥澆水胁孙,促使期茁壯成長; 我的冥想目標(biāo)是: 1涮较、、我能早日獲得智慧的加持狂票,...
    花開見佛笑閱讀 157評論 0 0