一疲恢、Java入門

Java入門

  1. Java發(fā)展史

1.1 Java簡史

在1990年時模暗,sun計算機(jī)公司瞄準(zhǔn)了下一代智能家電的程序設(shè)計传透,例如微波爐窍箍、面包機(jī)上怨规,剛開始選擇的語言為C++俭茧,但在使用過程中發(fā)現(xiàn)C++語言的API太過復(fù)雜开皿,并且還有一些問題涧黄,例如缺少垃圾回收系統(tǒng)、可移植的安全性等等赋荆。剛開始笋妥,java之父高斯林是想要改進(jìn)C++,但是最終還是放棄了窄潭,決心要創(chuàng)造出一門新語言春宣,被他命名為Oak(橡樹),這是因為他辦公室門外正好有一顆橡樹嫉你。經(jīng)過沒日沒夜的努力月帝,Oak語言終于可以作用于當(dāng)時的設(shè)備上∮奈郏可以通過圖形界面來幫助用戶操作設(shè)備嚷辅。后來由于使用該軟件,并不能對現(xiàn)有產(chǎn)業(yè)產(chǎn)生實際利益距误,所以整個項目停止簸搞。

時間來到了1994年,經(jīng)歷了3天左右的討論准潭,高斯林所在團(tuán)隊決定改變努力方向攘乒,將技術(shù)運(yùn)用于萬維網(wǎng),由于當(dāng)時的瀏覽器上并不像今天豐富多彩惋鹅,所以sun公司所作的瀏覽器上的插件一經(jīng)面世,便大受歡迎殉簸。在1995年時闰集,注冊O(shè)ak商標(biāo)時沽讹,發(fā)現(xiàn)已經(jīng)被使用,所以改名為Java(來自爪洼島的一種咖啡)武鲁,并正式發(fā)布爽雄。

1.2 Java版本歷史

  • 1995年5月23日,Java語言誕生

  • 1996年1月沐鼠,第一個JDK–JDK1.0誕生

  • 1996年4月挚瘟,10個最主要的操作系統(tǒng)供應(yīng)商申明將在其產(chǎn)品中嵌入JAVA技術(shù)

  • 1996年9月,約8.3萬個網(wǎng)頁應(yīng)用了JAVA技術(shù)來制作

  • 1997年2月18日饲梭,JDK1.1發(fā)布

  • 1997年4月2日乘盖,JavaOne會議召開,參與者逾一萬人憔涉,創(chuàng)當(dāng)時全球同類會議規(guī)模之紀(jì)錄

  • 1997年9月订框,JavaDeveloperConnection社區(qū)成員超過十萬

  • 1998年2月,JDK1.1被下載超過2,000,000

  • 1998年12月8日兜叨,JAVA2企業(yè)平臺J2EE發(fā)布

  • 1999年6月穿扳,SUN公司發(fā)布Java的三個版本:標(biāo)準(zhǔn)版(J2SE)、企業(yè)版(J2EE)和微型版(J2ME)

  • 2000年5月8日国旷,JDK1.3發(fā)布

  • 2000年5月29日矛物,JDK1.4發(fā)布

  • 2001年6月5日,NOKIA宣布跪但,到2003年將出售1億部支持Java的手機(jī)

  • 2001年9月24日履羞,J2EE1.3發(fā)布

  • 2002年2月26日,J2SE1.4發(fā)布特漩,自此Java的計算能力有了大幅提升

  • 2004年9月30日18:00PM吧雹,J2SE1.5發(fā)布,成為Java語言發(fā)展史上的又一里程碑涂身。為了表示該版本的重要性雄卷,J2SE1.5更名為Java SE 5.0(因為新特新增加特別多,所以起了個高大上的名字蛤售!)

  • 2005年6月丁鹉,JavaOne大會召開,SUN公司公開Java SE 6悴能。此時揣钦,Java的各種版本已經(jīng)更名,以取消其中的數(shù)字“2”:J2EE更名為Java EE漠酿,J2SE更名為Java SE冯凹,J2ME更名為Java ME

  • 2006年12月,SUN公司發(fā)布JRE6.0

  • 2009年12月炒嘲,SUN公司發(fā)布Java EE 6

  • 2010年11月宇姚,由于Oracle公司對于Java社區(qū)的不友善匈庭,因此Apache揚(yáng)言將退出JCP

  • 2011年7月28日,Oracle公司發(fā)布Java SE 7

  • 2014年3月18日浑劳,Oracle公司發(fā)表Java SE 8(市場主流版本)

  • 2017年9月21日阱持,Oracle公司發(fā)表Java SE 9

1.3 Java語言主要特點

1.  面向?qū)ο?
2.  跨平臺

3.  自動垃圾回收機(jī)制

1.4 java三大版本

  1. JavaSE(J2SE):Java標(biāo)準(zhǔn)版,提供了Java基本工具包魔熏,可以做

    圖形界面開發(fā)等 例如Java的開發(fā)工具Eclipse等等衷咽,如果要學(xué)習(xí)java開發(fā),
    必須先學(xué)習(xí)JavaSE蒜绽,咱們第一階段主要是對JavaSE的講解

2.JavaEE(J2EE):Java企業(yè)版镶骗,主要針對與企業(yè)開發(fā),也就是常說的javaWeb開發(fā)滓窍,例如卖词,電子商務(wù)網(wǎng)站、ERP系統(tǒng)等等吏夯。這是我們學(xué)習(xí)完javaSE之后此蜈,主要學(xué)習(xí)的技術(shù)

3.JavaME(J2ME):Java微型版,主要針對電子設(shè)備的噪生,例如手機(jī)應(yīng)用等裆赵,由于現(xiàn)在移動端都有自己的開發(fā)語言,

例如Android跺嗽、iOS.所以現(xiàn)在主要用在嵌入式開發(fā)

2.環(huán)境安裝及編譯過程

2.1環(huán)境安裝

要做Java的開發(fā)或者學(xué)習(xí)战授,就需要安裝對應(yīng)的環(huán)境,就像你要玩iOS上的游戲桨嫁,就需要有蘋果設(shè)備植兰、iOS操作系統(tǒng),做Java開發(fā)也是同樣的道理璃吧。在安裝環(huán)境之前楣导,我們需要知道幾個相關(guān)名詞。

1.JVM(Java Virtual Machine):Java虛擬機(jī)畜挨,Java能做到跨平臺筒繁,JVM功不可沒,原理大體就是巴元,在你的設(shè)備上

安裝一個虛擬的計算機(jī)毡咏,然后你的Java應(yīng)用是在該虛擬機(jī)上運(yùn)行。和你真實的平臺無關(guān)

2.JRE(Java Runtime Environment):Java運(yùn)行環(huán)境逮刨,JVM相當(dāng)于虛擬計算機(jī)呕缭,JRE可以看作是該計算機(jī)上的操作系統(tǒng)。如果沒有操作系統(tǒng),那么你的電腦臊旭、手機(jī)等落恼,就和板磚差不多了。

3.JDK(Java Development Kit):Java開發(fā)工具包离熏,有了JVM和JRE,你的設(shè)備就可以運(yùn)行Java應(yīng)用戴涝,但是要開發(fā)Java應(yīng)用滋戳,就需要JDK,這是為Java開發(fā)人員提供的工具包。一般JDK中就包含了JVM和JRE啥刻。

windows下Java環(huán)境安裝

1.從官網(wǎng)下載對應(yīng)的JDK奸鸯,這里是JDK8的下載地址

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

jdk下載.png

x86結(jié)尾的是32位操作系統(tǒng),x64結(jié)尾的是64位操作系統(tǒng)可帽,記得選擇了Accept之后
才可以下載娄涩。
2.下載完成之后你會看到以下圖片


安裝JDK1.png

雙擊之后,你會看到


安裝jdk2.png

如果不想安裝在C盤映跟,可以點擊更改蓄拣,我是安裝在了E盤,點擊下一步即可努隙;開發(fā)工具里面已經(jīng)帶有了JRE球恤,如果此處沒有將那個公共JRE設(shè)置為不安裝,那么在安裝過程中會有一個彈框出來讓選擇公共JRE的安裝目錄荸镊,可以和JDK安裝目錄放在同一級文件夾中即可咽斧。
  1. 安裝完成之后,緊接著需要配置環(huán)境變量
    桌面上的此電腦或者計算機(jī)右擊-->屬性-->高級環(huán)境設(shè)置-->環(huán)境變量躬存,然后你會看到如下界面
    環(huán)境變量.png

    用戶變量中的設(shè)置是只能當(dāng)前登錄系統(tǒng)的用戶使用张惹;系統(tǒng)變量中的設(shè)置是所有用戶都可以使用,一會我們將在系統(tǒng)變量中添加設(shè)置岭洲。
    4.配置JAVA_HOME 在系統(tǒng)變量下點擊新建宛逗,你會看到如下界面
    JAVA_HOME.png

    變量名處填 JAVA_HOME
    點擊瀏覽目錄,找到剛才我們安裝的jdk的文件夾钦椭,完成之后拧额,你會看到如下界面
    JAVA_HOME2.png

    我這里是安裝到了E盤的此目錄下;這一步相當(dāng)于為jdk的路徑起了一個名字彪腔,叫JAVA_HOME,此處名字最好不要自己命名侥锦,因為很多使用到j(luò)ava的地方,默認(rèn)都會
    通過JAVA_HOME來查找jdk德挣。
    5.配置CLASSPATH
    還是點擊系統(tǒng)變量下的新建恭垦,然后變量名處寫CLASSPATH
    在變量值處填寫 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
    點不可以省略,代表當(dāng)前目錄,將來我們要執(zhí)行Java代碼番挺,你在那個目錄下執(zhí)行唠帝,
    JVM就會從你所在目錄下查找可執(zhí)行文件,如果沒有點玄柏,就可能會報錯說找不到可執(zhí)行的文件襟衰;%JAVA_HOME% 代表剛才我們上一步配置的jdk路徑
    CLASSPATH的配置的作用和import、package關(guān)鍵字相關(guān)粪摘,將來我們寫Java代碼時瀑晒,很多時候需要用到j(luò)ava提供的一些工具(類、包等)徘意,這時候就需要用到import關(guān)鍵字導(dǎo)入這些工具苔悦,該配置就是根據(jù)import關(guān)鍵字,找到你需要導(dǎo)入的工具椎咧。
    6.配置path
    找到系統(tǒng)變量中的變量那一列中的Path玖详,然后雙擊(或者選中path行,點擊編輯)勤讽,你會看到如下界面
    Path.png

    點擊該界面中的新建蟋座,加入%JAVA_HOME%\bin
    再次點擊新建,加入%JAVA_HOME%\jre\bin
    點擊確定即可
    有的window版本地技,出現(xiàn)的是這樣的界面
    path2.png

    那么你在變量值的最后加上;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
    點擊確定即可
    bin目錄下是存放了java執(zhí)行代碼所需要用到的命令
    配置 Path的作用是為了讓在DOS黑框中可以使用java命令
    到此為止我們的Java環(huán)境就配置完畢蜈七,需要注意的是,每一步配置完成之后一定要點擊確定莫矗,如果忘記點擊確定按鈕飒硅,那么剛才的配置都沒有了。

接下來檢查下環(huán)境是否配置正確作谚,在電腦左下角輸入cmd三娩,點擊回車,你會看到如下界面

cmd.png

輸入java妹懒,點擊回車雀监, 如果出現(xiàn)
java不是內(nèi)部或外部命令,也不是可運(yùn)行的程序
或批處理文件眨唬。
会前,說明剛才環(huán)境配置有問題,自己對照一上步驟匾竿,仔細(xì)檢查下瓦宜。
再次配置完畢之后,一定要關(guān)閉剛才的黑框岭妖,重新打開临庇,再次輸入java反璃,如果看到以下界面
cmd_java.png

接著輸入 javac,如果看到以下界面
cmd_javac.png

說明環(huán)境變量配置沒有問題假夺,接下來我們就可以愉快的寫代碼了淮蜈!
2.2 編譯過程
先簡單介紹下所謂的計算機(jī)語言是什么,計算機(jī)語言實際上就是我們自己按照規(guī)則寫的一些文字(源代碼)已卷,通過一定的手段(編譯)梧田,變成計算機(jī)可以識別的語言(機(jī)器語言),讓計算機(jī)可以執(zhí)行悼尾。
計算機(jī)語言大體可以分為 編譯性語言和解釋性語言柿扣。
編譯性語言:只須編譯一次就可以把源代碼編譯成機(jī)器語言,后面的執(zhí)行無須重新編譯闺魏,直接使用之前的編譯結(jié)果就可以,因此其執(zhí)行的效率比較高俯画;但是比較依賴編譯器析桥,編譯器又受平臺影響大,所以跨平臺性較差艰垂,代表性的語言有C泡仗、C++等
解釋性語言:源代碼不能直接翻譯成機(jī)器語言,而是先翻譯成中間代碼猜憎,再由解釋器對中間代碼進(jìn)行解釋運(yùn)行娩怎;源代碼—>中間代碼—>機(jī)器語言。程序不需要編譯胰柑,程序在運(yùn)行時才翻譯成機(jī)器語言截亦,每執(zhí)行一次都要翻譯一次;執(zhí)行效率相對較低柬讨,依賴解釋器崩瓤,但是跨平臺性好,代表性語言有Python踩官、JavaScript等却桶。
那么Java語言是屬于編譯性語言還是解釋性語言呢?網(wǎng)上眾說紛紜蔗牡,各有各的道理颖系,實際上Java屬于編譯-解釋性語言,Java具有以上兩種特點辩越。
首先嘁扼,我們需要把Java的源文件(以.java為后綴名的文本文檔) 編譯成字節(jié)碼文件(.class為后綴名的文件),然后JVM虛擬機(jī)解釋執(zhí)行字節(jié)碼文件区匣。從這個過程中我們可以看出偷拔,字節(jié)碼文件的生成是編譯過程蒋院,字節(jié)碼文件的執(zhí)行是解釋過程。那么莲绰,接下來欺旧,我們實際操作一下。
1.首先在桌面新建一個文本文檔,然后將文件名成改為 HelloWorld蛤签,后綴名為java
就是HelloWorld.java,如果你的電腦不顯示后綴名辞友,可以將電腦設(shè)置為文件的后綴名顯示。
然后在文件中寫出以下代碼震肮,保存

  //雙斜杠是單行注釋称龙,注釋中的內(nèi)容不會被編譯
/*
   這是多行注釋
  注釋是對代碼的備注,讓自己或者其他程序員知道你 
  的該段代碼有什么功能 戳晌,不影響代碼部分
*/
/*
這是聲明了一個類鲫尊,類名必須和文件名保持一致,
此處涉及到的專業(yè)名字會在后續(xù)課程中講解沦偎,先不用深究
*/
   public class HelloWorld{
     /*這是main方法疫向,程序的入口,意思為當(dāng)我們執(zhí)行代碼時豪嚎,
        java只會執(zhí)行main方法中的代碼搔驼,
       所以將來我們的邏輯代碼都需要寫在main方法中或者在main方法中調(diào)用
*/
       public static void main(String[] args){
              //輸出語句,會將()中的內(nèi)容輸出到黑框
             //java代碼中一般一行結(jié)束侈询,需要以分號結(jié)尾
            //代碼中涉及到的標(biāo)點符號必須為英文的標(biāo)點符號
             System.out.println("hello java");

    }
}

2.接下來我們代開DOS黑框舌涨,由于我們該Java源文件是在桌面上,所以我們需要先進(jìn)入桌面目錄在黑框中輸入 cd Desktop,回車扔字,這時囊嘉,我們就進(jìn)入的桌面目錄


編譯過程1.png

3.我們接著輸入 javac HelloWorld.java,點擊回車,這一步就是編譯源文件


編譯過程2.png

如果你和我一樣啦租,點擊回車之后哗伯,兩行之間沒有任何內(nèi)容,就說明你的代碼編譯沒問題篷角,如果兩行中間有內(nèi)容焊刹,耐心讀一下內(nèi)容,這些內(nèi)容是告訴你恳蹲,你的代碼那些位置出問題了虐块。
4.上一步?jīng)]有問題的話,你會看到你的桌面多了一個HelloWorld.class文件

5.接著在黑框中輸入 java HelloWorld嘉蕾,點擊回車贺奠,這一步是解釋執(zhí)行字節(jié)碼文件,
如果你配置CLASSPATH有問題错忱,此處會報錯說 找不到或無法加載主類儡率。如果沒問題挂据,你會看到輸出內(nèi)容,就是剛才System.out.Println括號中的內(nèi)容儿普。


編譯過程3.png

到此崎逃,我們的編譯過程的驗證操作就結(jié)束了,騷年們眉孩,剛才的過程就是編程个绍,對,編程就是如此簡單浪汪!

3.IDE簡介(eclipse)
通過上面的操作我們知道巴柿,代碼實際上就是按照規(guī)定語法書寫的文本,如果我們寫代碼就使用我們自帶的文本編輯器死遭,那么開發(fā)效率會極其低下广恢,所以市面上有很多好用的文本編輯器,例如vim呀潭、EditPlus等等袁波,由于使用文本編輯器中的功能較少,所以發(fā)明了IDE(集成開發(fā)環(huán)境)蜗侈,功能更加強(qiáng)大,大大的提高了開發(fā)效率睡蟋。Java開發(fā)常用的IDE有Eclipse踏幻、MyEclipse、idea等等戳杀,由于MyEclipse和idea都是收費(fèi)的该面,所以Eclipse是目前比較流行的Java IDE。由于idea更加好友信卡,所以現(xiàn)在很多公司也在使用idea隔缀,我們這里先介紹下eclipse的使用,后續(xù)課程中會講解idea的使用傍菇。
1.首先從官網(wǎng)下載eclipse猾瘸,這是官網(wǎng)的下載地址
https://www.eclipse.org/downloads/packages/

eclipse下載.png

由于我們后續(xù)是做javaEE開發(fā),所以這里下載JavaEE IDE Eclipse IDE for Enterprise Java Developers丢习,根據(jù)對應(yīng)的操作系統(tǒng)下載Eclipse牵触。
下載完成之后儿倒,解壓文件夾塘淑,里面有一個Eclipse的圖標(biāo),雙擊即可肩狂。如果打開
報錯见擦,很可能是版本問題钉汗,從網(wǎng)上查一下羹令,你的操作系統(tǒng)對應(yīng)的eclipse版本。
如果沒有問題损痰,你會看到如下界面
命名空間.png

Workspace 是工作空間福侈,這是用來指定你創(chuàng)建的工程保存的目錄。你可以自己指定寫好的項目保存在哪里徐钠。
指定好之后癌刽,點擊Launch,稍等片刻尝丐,就會看到如下界面
eclipse歡迎界面.png

這里是eclipse的歡迎界面显拜,里面對當(dāng)前的eclipse中的插件等信息進(jìn)行了簡單的展示〉可以直接點擊左上角的Welcome旁邊的叉號關(guān)掉远荠。然后會看到如下界面,根據(jù)eclipse版本的不同失息,可能顯示的有差異譬淳。
eclipse的javaEE界面.png

這是eclipse的javaEE的主界面,左側(cè)是工程目錄盹兢,將來咱們會創(chuàng)建很多工程邻梆,都會在左側(cè)顯示,這些工程的存儲位置绎秒,就是剛才的workspace中浦妄。中間是工作區(qū),將來咱們就會在此處敲代碼见芹。其余部分會在后續(xù)使用中講解剂娄。首先我們先講該界面改為javaSE的界面,在右上角玄呛,點擊“臭蟲”左側(cè)的圖標(biāo)阅懦,然后界面就會切換為JavaSE的編程界面。
接下來我們就要新建第一個java工程了徘铝。
在左側(cè)的空白區(qū)域右擊-->鼠標(biāo)放在new上面耳胎,會出現(xiàn)一個二級菜單-->點擊最底部的Other,然后你會看到如下界面

新建java工程.png

在搜索框輸入java,然后在底下找到Java Project,單擊Java Project庭砍,你會看到該行變藍(lán)了场晶,然后點擊底部的 Next,你會看到如下界面


新建java工程2.png

Project Name:項目名稱
Use default location:項目的保存目錄怠缸,默認(rèn)為我們設(shè)置的workspace目錄
JRE:項目的運(yùn)行環(huán)境诗轻,默認(rèn)為我們安裝的JDK版本
Project layout:左側(cè)的顯示布局
Working sets:工作站點,后續(xù)當(dāng)項目多的時候揭北,我們可以將項目放在不同站點下
此處我們只需命名一個項目名稱扳炬,其它不需要做更改吏颖。我這里就叫做HelloWorld,然后點擊Finish恨樟。我們的java工程就新建好了半醉,你會在左側(cè)看到下圖


新建java工程3.png

JRE System Library:里面是我們運(yùn)行工程所需要的jar包。
src:該文件夾中放置我們的源文件劝术。源文件在編譯過程中講解過缩多,就是后綴名為java的文件
接著我們要新建源文件,選中src养晋,然后右擊衬吆,鼠標(biāo)放在new上面,點擊二級菜單中的綠色的Class绳泉,如果沒有逊抡,點擊Other,搜索Class零酪,然后點擊Class
新建Class.png

點擊Class之后冒嫡,會看到如下界面


新建Class2.png

Source folder:該源文件所在的目錄
Package:包名,就是所謂的命名空間四苇,后續(xù)咱們會講解
Enclosing type:創(chuàng)建內(nèi)部類時需要用到的孝凌,后續(xù)講解Java內(nèi)部類時會講解。
Name: 源文件名稱月腋,也是類名
Modifiers:類的修飾符
Superclass:繼承的父類
Interfaces:需要實現(xiàn)的接口
Which method stubs would you like to create? :創(chuàng)建類時胎许,你希望創(chuàng)建的方法
Do you want to add comments? :是否添加注釋
這里面的很多內(nèi)容,咱們會在后面的面向?qū)ο蟛糠志唧w講解罗售,此處我們只需要給個Name即可。這里我的Name叫做HelloWorld钩述,然后點擊Finish寨躁。你會看到如下界面
新建java程4.png

由于我們沒有給包名。這里會給一個默認(rèn)包牙勘,名字為default package职恳,在包中有我們新建的源文件,HelloWorld方面,在源文件中有一個同名的class放钦。如果此處在包中和src中都有HelloWorld,那么選中整個工程恭金,右擊操禀,點擊Refresh,這是卡了横腿。
接下來我們就要在源文件中寫代碼了颓屑。
雙擊HelloWorld.java 這就是我們的源文件斤寂,在class中添加main方法。
新建java工程5.png

當(dāng)準(zhǔn)備運(yùn)行之前揪惦,記得Ctrl+S遍搞,保存一下,如果不保存器腋,直接運(yùn)行溪猿,有時候會運(yùn)行你保存之前的代碼。
如何運(yùn)行呢纫塌?對著main方法處 右擊诊县,選擇Run As,然后點擊java Application即可护戳。


運(yùn)行java工程.png

運(yùn)行完成之后翎冲,你會看到如下界面
運(yùn)行Java工程2.png

輸出內(nèi)容的區(qū)域,我們稱之為控制臺媳荒,如果你的控制臺沒有在底下抗悍,你可以左鍵按住Console,然后任意拖動钳枕,一般我們將控制臺區(qū)域放在工作區(qū)域的下面缴渊。
屏幕快照 2019-08-05 下午4.36.23.png

好了,到此為止鱼炒,我們的Eclipse的簡單使用就結(jié)束了衔沼,在后續(xù)的使用過程中,我們再具體說Eclipse中的強(qiáng)大功能∥羟疲現(xiàn)在只需要掌握如何新建工程指蚁,如果在工程中新建源文件,如果運(yùn)行工程即可自晰。
4.進(jìn)制
進(jìn)制就是進(jìn)位計數(shù)制凝化,是人為定義的一種數(shù)字進(jìn)位的方法,例如我們生活中最常見的就是十進(jìn)制酬荞,就是逢十進(jìn)一搓劫。
我們?yōu)槭裁匆獙W(xué)習(xí)進(jìn)制?因為我們生活中最常使用的是十進(jìn)制混巧,而計算機(jī)是二進(jìn)制枪向,所以我們需要簡單的學(xué)習(xí)下進(jìn)制的概念和進(jìn)制轉(zhuǎn)換。
首先咧党,我們先看一下我們熟悉的十進(jìn)制秘蛔。
十進(jìn)制的數(shù)字都是有十個數(shù)字組成,0-9.
例如 10,就是由1和0組成缠犀。每一位上的數(shù)字最大到9数苫,當(dāng)超過9時,就需要進(jìn)位辨液,因為每一位上的數(shù)字到十虐急,就需要進(jìn)位,所以就是十進(jìn)制滔迈。
從上面我們可以分析出止吁,N進(jìn)制就是每位上最大的數(shù)字到N-1,逢N進(jìn)位燎悍。
那么所謂的二進(jìn)制敬惦,就是每位上的數(shù)字最大為1,逢2進(jìn)位谈山。
例如俄删,二進(jìn)制要表示十進(jìn)制的2,就是1+1=2奏路,逢2要進(jìn)位畴椰,就是10。要表示十進(jìn)制的3鸽粉,就是在10的基礎(chǔ)上再加1斜脂,就是11,....以此類推,我們可以將10進(jìn)制的所有數(shù)字找到對應(yīng)的二進(jìn)制触机。
了解了進(jìn)制之后帚戳,我們接下來簡單學(xué)習(xí)下進(jìn)制之間的轉(zhuǎn)換。
首先我們需要知道位權(quán)的概念儡首,什么是位權(quán)呢片任?
位權(quán)是指數(shù)制中每一固定位置對應(yīng)的單位值。
還是用十進(jìn)制舉例子蔬胯,例如個位上的位權(quán)就是1蚂踊,十位上的位權(quán)就是10,百位上的位權(quán)就是100笔宿,所以十進(jìn)制的111,個位上的1代表1個1棱诱,十位上的1就代表1個10泼橘,百位上的1就代表1個100.
那么十進(jìn)制的187就表示為 1 X 100 + 8 X 10 + 7 X 1.
仔細(xì)觀察,我們會發(fā)現(xiàn)迈勋,位權(quán)是有規(guī)律的炬灭,個位上的位權(quán)就是 10的0次冪,十位上的位權(quán)就是10的1次冪靡菇,百位上的位權(quán)就是10的2次冪...以此類推重归,
得出結(jié)論米愿,N進(jìn)制從低位到高位的位權(quán)就是 N的0,1鼻吮,2育苟,3,4....次冪
同樣的道理椎木,我們再看看二進(jìn)制的數(shù)字违柏。
例如二進(jìn)制的數(shù)字 111,個位的1就代表1個2的0次冪香椎,十位的1就代表1個2的1次冪漱竖,百位的1就代表1個2的2次冪。
那么二進(jìn)制的111轉(zhuǎn)換為10進(jìn)制的數(shù)字就是 1 X 2的2次冪 + 1 X 2的1次冪 + 1 X 2的0次冪 = 4 + 2 + 1 = 6

所以可以得出結(jié)論:
其它進(jìn)制的數(shù)字轉(zhuǎn)換為十進(jìn)制畜伐,就是每位上的數(shù)字 乘以位權(quán)然后相加之和馍惹。
其它進(jìn)制轉(zhuǎn)10進(jìn)制我們清楚了,接下來我們看看十進(jìn)制轉(zhuǎn)其它進(jìn)制玛界。
這里有一個轉(zhuǎn)換法万矾,叫做短除倒取余。
例如十進(jìn)制的10脚仔,要轉(zhuǎn)換為2進(jìn)制勤众。就是
10 除以 2 商 5 余 0
5 除以 2 商 2 余 1
2 除以 2 商 1 余 0
1 除以 2 商 0 余 1
一直除到商為0為止,然后倒著排列余樹鲤脏,所以十進(jìn)制的10轉(zhuǎn)換為二進(jìn)制就是1010
十進(jìn)制轉(zhuǎn)N進(jìn)制就是 用十進(jìn)制的數(shù)字除以N们颜,記錄余數(shù),用商接著除以N...,知道商為0為止猎醇,倒著取余數(shù)即可窥突。
到這我們的十進(jìn)制轉(zhuǎn)其它進(jìn)制,其它進(jìn)制轉(zhuǎn)十進(jìn)制就講解完畢硫嘶。
那M進(jìn)制轉(zhuǎn)N進(jìn)制阻问,可以先把M進(jìn)制轉(zhuǎn)為 十進(jìn)制,再將十進(jìn)制轉(zhuǎn)換為N進(jìn)制沦疾。
如果數(shù)字較大称近,那么就只能使用高科技了。每個電腦都提供了編程計算器哮塞∨俑眩可以很方便的做進(jìn)制之間的轉(zhuǎn)換。這里只是說了整數(shù)之間的進(jìn)制轉(zhuǎn)換忆畅,課下自己查一查小數(shù)位的進(jìn)制轉(zhuǎn)換衡未。
5.基本數(shù)據(jù)類型
本小節(jié),我們先簡單了解下計算機(jī)中是如何存儲數(shù)據(jù)的。
我們常見的數(shù)據(jù)有 文本類型缓醋,圖片如失、音頻、視頻等送粱。由于計算機(jī)中只能識別和存儲二進(jìn)制的數(shù)據(jù)褪贵,所以我們需要先將要存儲的數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制,才能存儲到計算機(jī)中葫督。
在計算機(jī)中竭鞍,最小的計算單元是位,就是一位數(shù)兩位數(shù)的位橄镜。最小的存儲單元為字節(jié)偎快,一個字節(jié)是八位,什么意思呢洽胶?就是你要存儲到數(shù)據(jù)不到1個字節(jié)大小晒夹,也會占有一個字節(jié)大小的空間。進(jìn)制為1024.所以1024個字節(jié)(Byte)是1KB姊氓,1024KB是1MB丐怯,1024MB是1GB....以此類推。
那么一個字節(jié)到底有多大翔横,如果用數(shù)字表示读跷,就是0000 0000 到 1111 1111之間就是0到255,更直觀一點禾唁,一個字節(jié)可以存儲一個英文字母或者半個漢字效览。
了解了這些知識之后,我們接著講解Java中的數(shù)據(jù)類型荡短。
什么是數(shù)據(jù)類型呢丐枉?實際上就是對要存儲的數(shù)據(jù)先提前表明該數(shù)據(jù)要占有的內(nèi)存大小和類型。
Java中的數(shù)據(jù)類型大體分為兩大類:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型

引用數(shù)據(jù)類型:數(shù)組掘托、類瘦锹、接口等 咱們會在后續(xù)的課程中詳細(xì)講解引用數(shù)據(jù)類型,此處詳細(xì)說一下基本數(shù)據(jù)類型闪盔。

Java中的基本數(shù)據(jù)類型分為四類八種
1.整數(shù)型:byte弯院、short、int泪掀、long
2.浮點型:float听绳、double
3.字符型:char
4.布爾型(邏輯型):boolean

其中整數(shù)型不言而喻,就是數(shù)學(xué)中的整數(shù)族淮,浮點就是數(shù)學(xué)中的小數(shù),字符就是單個字符,布爾就是真(true)或假(false),同一類下不同的類型只是代表所占的內(nèi)存空間和表數(shù)范圍不同祝辣,

類型 字節(jié)數(shù) 表數(shù)范圍
byte 1 -2的7次冪 ~2的7次冪-1
short 2 -2的15次冪 ~ 2的15次冪-1
int 4 -2的31次冪 ~2的31次冪-1
long 8 -2的63次冪 ~ 2的63次冪-1
float 4 約 -3.4乘以10的38次冪 ~ 3.4乘以10的38次冪
double 8 約 -1.797乘以10的308次冪 ~ 1.797乘以10的308次冪
char 1
boolean 1或者4

看到上面的表格贴妻,大家可能會有以下疑問,在這咱們一一解答
1.前面我們講解了進(jìn)制的轉(zhuǎn)換蝙斜,所以很多同學(xué)自己計算了下名惩,一個字節(jié)是8位,算下來應(yīng)該是 0~255孕荠,為什么這里byte是一個字節(jié)娩鹉,表數(shù)范圍是-128~127 ?稚伍?
因為這里我們說的數(shù)字都是有符號的數(shù)字弯予,就是有正負(fù)之分,所以最高位个曙,也就是轉(zhuǎn)換為二進(jìn)制之后最左邊的那一位是符號位锈嫩,0代表正數(shù),1代表負(fù)數(shù)垦搬,所以真正存儲數(shù)字的位數(shù)會少一位呼寸。由于計算機(jī)中負(fù)數(shù)是以補(bǔ)碼的方式存儲,所以比正數(shù)多1.
2.float和int同樣都是4個字節(jié) 32位猴贰,double和long都是8個字節(jié) 64位对雪,為什么浮點型的表數(shù)范圍比整數(shù)型要大的多。這是因為浮點型的存儲方式是指數(shù)的方式存儲

類型 符號位 指數(shù)位 尾數(shù)位
float 最左側(cè)第31位(1位) 第30-23位(8位) 第22-0位(23位)
double 最左側(cè)第63位(1位) 第62-52位(占11位) 第51-0位(占52bit)

float
符號位前面提過米绕,表示數(shù)字的正負(fù)瑟捣,
指數(shù)位表示整數(shù)部分,一共有8位义郑,所以大小為2的8次冪,由于有正負(fù)之分蝶柿,所以范圍為-128~128,代表的真正的數(shù)字范圍為-2的128次冪~2的128次冪非驮,大約為 -3.4乘以10的38次冪 ~ 3.4乘以10的38次冪
尾數(shù)位代表小數(shù)部分交汤,23位二進(jìn)制轉(zhuǎn)換為10進(jìn)制大概就是7~8位的十進(jìn)制數(shù)字(參考進(jìn)制轉(zhuǎn)換部分小數(shù)位轉(zhuǎn)換),7位還是8位和編譯器有關(guān)劫笙;
double
符號位前面提過芙扎,表示數(shù)字的正負(fù),
指數(shù)位表示整數(shù)部分填大,一共有11位戒洼,所以大小為2的11次冪,由于有正負(fù)之分,所以范圍為-1024~1024允华,代表的真正的數(shù)字范圍為-2的1024次冪~2的1024次冪圈浇,大約為 -1.797乘以10的308次冪 ~ 1.797乘以10的308次冪
尾數(shù)位代表小數(shù)部分寥掐,52位二進(jìn)制轉(zhuǎn)換為10進(jìn)制大概就是15~16位的十進(jìn)制數(shù)字(參考進(jìn)制轉(zhuǎn)換部分小數(shù)位轉(zhuǎn)換),157位還是16位和編譯器有關(guān)磷蜀;
3.char型是用來表示字符的數(shù)據(jù)類型召耘,所以沒有給表數(shù)范圍
4.boolean型是表示true或者false,所以沒有表數(shù)范圍褐隆,為什么是1個字節(jié)或者4個字節(jié)呢污它?按道理來講,真或者假庶弃,用一位0或者1就可以表示衫贬,最小的存儲單元為字節(jié),所以肯定是一個字節(jié)嘛歇攻,但是固惯,在Java虛擬機(jī)中沒有提供對boolean類型的支持,所以編譯過后掉伏,會用int來替代boolean缝呕,這樣boolean會占有四個字節(jié);如果將來我們將boolean類型數(shù)據(jù)存放進(jìn)數(shù)組(后續(xù)會講解數(shù)組)斧散,虛擬機(jī)中會將boolean數(shù)組轉(zhuǎn)換為byte數(shù)組供常,此時,boolean類型又占有一個字節(jié)鸡捐。所以說boolean類型的數(shù)據(jù)在不同場景栈暇,占有的內(nèi)存空間不一樣,1個或者4個字節(jié)箍镜。這里也有同學(xué)有疑問源祈,為什么虛擬機(jī)中,不直接用byte代替boolean色迂,而要用int呢香缺?用byte替代明顯占用內(nèi)存空間小啊,這是因為我們的計算機(jī)的處理器(CPU)是32位的或者32的倍數(shù)位(是處理器不是操作系統(tǒng)),一次處理32位的數(shù)據(jù)效率高歇僧,所以選擇用int型图张。
這里表數(shù)范圍只要了解即可,字節(jié)數(shù)必須牢記诈悍。
到這里祸轮,我們的基本數(shù)據(jù)類型就講解完畢,在變量講解中會講解如何使用
6.變量
在數(shù)據(jù)類型中侥钳,我們說了數(shù)據(jù)需要轉(zhuǎn)換為二進(jìn)制存儲到計算機(jī)中适袜,既然有存,肯定有對應(yīng)的讀取舷夺,例如苦酱,你將一張照片存入計算機(jī)售貌,當(dāng)你要將照片發(fā)給好友,當(dāng)然需要先將照片讀取出來疫萤,才能發(fā)給對方趁矾。那我們?nèi)绾握业轿覀兇鎯Φ牡臄?shù)據(jù)呢?實際上给僵,計算機(jī)位我們的每個存儲區(qū)域都進(jìn)行了編號,整個編號就是我們常說的內(nèi)存地址详拙。由于我們的最小存儲單元為字節(jié)帝际,就拿內(nèi)存來說,都是多少G的饶辙,所以用二進(jìn)制表示內(nèi)存地址的話蹲诀,會很長,所以一般我們用16進(jìn)制或者8進(jìn)制的數(shù)字表示內(nèi)存地址弃揽。進(jìn)制越大脯爪,表示數(shù)字時所用到的位數(shù)就越少。
16進(jìn)制的數(shù)字為 0-F(A-F對應(yīng)10-15) 例如10進(jìn)制的15 用16進(jìn)制表示就是F矿微,一般為了做區(qū)分痕慢,16進(jìn)制的數(shù)字以0X或者0x開頭。例如十進(jìn)制的20表示為16進(jìn)制就是0X14涌矢。
八進(jìn)制的數(shù)字是以0開頭掖举,例如014,在java中代表8進(jìn)制的14娜庇,就是10進(jìn)制的12.

所以我們要讀取某個數(shù)據(jù)塔次,就是找到它對應(yīng)的內(nèi)存地址,從此地址中讀取出我們的數(shù)據(jù)名秀,以便使用励负。但是,這些16進(jìn)制的數(shù)字沒有具體意義匕得,不好記憶继榆。所以就用變量來代表內(nèi)存地址。就像我們的唯一身份標(biāo)示是我們的身份證耗跛,但是不好記憶裕照,所以用名字來代表。

變量如何定義和使用呢调塌?
定義一個變量形式為:數(shù)據(jù)類型 變量名 [=初始值];中括號中代表可寫可不寫晋南。
例如我要定義一個int型的變量,就可以寫成
int a;或者int a = 10;
給定了數(shù)據(jù)類型羔砾,就是說负间,不管你這個變量值將來是多少偶妖,所占的內(nèi)存空間都是該數(shù)據(jù)類型的大小。初始值是說政溃,在定義期間趾访,就直接指明該變量所代表的數(shù)據(jù)是多少,當(dāng)然董虱,變量變量扼鞋,后續(xù)我們可以更改該變量的值。
使用時愤诱,如果上面已經(jīng)定義了該變量云头,那么就可以直接為該變量賦值,或者參與其它運(yùn)算淫半。
例如上面已經(jīng)定義了 int a;
那么使用時就是 a = 100现诀,不需要再寫數(shù)據(jù)類型;=在計算機(jī)語言中是賦值的意思蔓钟,在后續(xù)運(yùn)算符章節(jié)我們會詳細(xì)講解運(yùn)算符腿倚。這里就是將100賦值為變量a浑此。在底下的場景中a就代表100.
定義的形式和簡單使用我們知道了,接下來我們說一說需要注意的地方对人。
1.如果定義時谣殊,沒有賦初始值,后續(xù)也沒有給變量賦值牺弄,那么參與其它運(yùn)算就會報錯蟹倾。因為計算機(jī)也不知道你這個變量要代表的什么數(shù)據(jù)。


變量1.png

2.給變量賦值時猖闪,該值不能超出定義時的數(shù)據(jù)類型的表數(shù)范圍鲜棠。
例如 byte a = 1000;就會在編譯期間報錯,因為超出了byte的表數(shù)范圍培慌。


變量2.png

3.float f = 10.5;會報錯豁陆,因為Java中,默認(rèn)小數(shù)為double類型吵护,double類型的表數(shù)范圍比float大盒音,所以報錯。正確寫法為float f = 10.5f; 數(shù)字后面的f表明該小數(shù)位float類型馅而。如果是double類型可以寫成 double d = 10.5;或者double d = 10.5d;都可以祥诽。


變量3.png

4.字符類型的定義為 char c = 'a'; 給字符類型的變量賦值只能是一個字符,不管是中文還是字母,只能是一個瓮恭,不能是空字符雄坪,或者多個字符,例如 char c = '';或者char c = 'aa';都不對屯蹦。


變量4.png

變量5.png

變量6.png

5.布爾類型的值只能是true或者false维哈,不能是其它內(nèi)容绳姨,例如,boolean b = true; boolean b_1 = false;如果給其它值會報錯阔挠。


變量7.png

6.在同一個花空號中{ }飘庄,如果已經(jīng)定義一個變量a,那么在底下不能再定義一個變量名叫a。


變量8.png

7.變量名的命名規(guī)范
1.最好做到見名知意
2.做到駝峰命名购撼,首字母小寫跪削,變量名為多個單詞時,除了第一個單詞迂求,其余單詞首字母大寫切揭,例如 int myAge = 10;
3.變量名的首字母必須是 字母、下劃線或者$不能是其它從第二個字符開始可以是數(shù)字锁摔、字母、下劃線或者$哼审。
前兩條是約定俗成的規(guī)則谐腰,就是說你不遵守,代碼也不會報錯涩盾,第三條是必須遵守的規(guī)則十气。


變量9.png

接下來,我們簡單講解下數(shù)據(jù)類型轉(zhuǎn)換的知識點
1.強(qiáng)制轉(zhuǎn)換(顯式轉(zhuǎn)換)
int a = 10;
byte b = a;
我這里將一個int的變量要賦值給一個byte的變量春霍,但是int的表數(shù)范圍比byte要大砸西,所以肯定會報錯。此處不是看數(shù)據(jù)址儒,而是看數(shù)據(jù)類型芹枷。
那么要怎么做呢?
byte b = (byte) a;
我們將a的數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換為byte莲趣,然后賦值給byte變量即可鸳慈。
形式為: 表數(shù)范圍小的數(shù)據(jù)類型 變量名 = (表數(shù)范圍小的數(shù)據(jù)類型) 表數(shù)范圍大的變量或者數(shù)據(jù);

注意點:這種類型轉(zhuǎn)換稱之為強(qiáng)制轉(zhuǎn)換或者顯式轉(zhuǎn)換,是有一定風(fēng)險的;例如上面的a變量的值為1000喧伞,你強(qiáng)制轉(zhuǎn)換為byte之后走芋,byte的放不下的,所以結(jié)果也就不會是1000.一定要注意這種結(jié)果會有變化的風(fēng)險潘鲫。

作用場景:將表數(shù)范圍大的變量或者數(shù)據(jù)賦值給表數(shù)范圍小的變量翁逞,需要強(qiáng)制轉(zhuǎn)換

2.隱式轉(zhuǎn)換
int a = 10;
float b = a;
此處當(dāng)我們將a,賦值給b之后溉仑,a所代表的數(shù)據(jù)的類型也就轉(zhuǎn)換為了float類型挖函。
不用我們做額外的操作。
形式:表數(shù)范圍大的類型 變量名 = 表數(shù)范圍小的變量或者數(shù)據(jù)浊竟。
作用場景:將表數(shù)范圍小的變量或者數(shù)據(jù)賦值給表數(shù)范圍大的變量

3.char類型和int型的轉(zhuǎn)換
講解這個之前挪圾,我們需要先了解下ASCII碼表浅萧,計算機(jī)中,每一個字符哲思,不管是中文或者字母洼畅,都有一個對應(yīng)的十進(jìn)制數(shù)字。下圖就是部分的ASCII碼表


部分ASCII碼表.png

我們看到每一個字符都有對應(yīng)的十進(jìn)制數(shù)字棚赔,例如 大寫A對應(yīng)65帝簇,所以char可以和int進(jìn)行轉(zhuǎn)換

例如,
1.我們可以將char類型的變量或者數(shù)據(jù)直接賦值給int型變量
char c = 'A';
int a = c;
int b = '我';
2.也可以將一個數(shù)字變?yōu)閷?yīng)字符
char c = (char)100;
int a = 100;
char ch = (char)a;
此處需要強(qiáng)制轉(zhuǎn)換即可靠益。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丧肴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胧后,更是在濱河造成了極大的恐慌芋浮,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壳快,死亡現(xiàn)場離奇詭異纸巷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)眶痰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門瘤旨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人竖伯,你說我怎么就攤上這事存哲。” “怎么了七婴?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵祟偷,是天一觀的道長。 經(jīng)常有香客問我打厘,道長肩袍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任婚惫,我火速辦了婚禮氛赐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘先舷。我一直安慰自己艰管,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布蒋川。 她就那樣靜靜地躺著牲芋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缸浦,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天夕冲,我揣著相機(jī)與錄音,去河邊找鬼裂逐。 笑死歹鱼,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卜高。 我是一名探鬼主播弥姻,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掺涛!你這毒婦竟也來了庭敦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤薪缆,失蹤者是張志新(化名)和其女友劉穎秧廉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拣帽,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疼电,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了诞外。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡灾票,死狀恐怖峡谊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刊苍,我是刑警寧澤既们,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站正什,受9級特大地震影響啥纸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜婴氮,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一斯棒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧主经,春花似錦荣暮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春砾跃,著一層夾襖步出監(jiān)牢的瞬間骏啰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工抽高, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留判耕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓厨内,卻偏偏與公主長得像祈秕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子雏胃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

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