標(biāo)簽:【讀書筆記】
該讀書筆記的流程是:閱讀 > 勾劃知識(shí)點(diǎn) > 整理筆記
有時(shí)讀書真的是只是讀甘萧,沒過腦彩匕,所以整理筆記等于回看,把沒過腦的地方再過一遍堪伍,然后整理出筆記,記錄下知識(shí)點(diǎn)觅闽,加上自己的一些理解帝雇,加深印象
一、對(duì)象導(dǎo)論 【2018.1.14】
我們之所以將自然界分解蛉拙,組織成各種概念尸闸,并按其含義分類,主要是因?yàn)槲覀兪钦麄€(gè)口語交流社會(huì)共同遵守的協(xié)定的參與者,這個(gè)協(xié)定以語言的形式固定下來……除非贊成這個(gè)協(xié)定中規(guī)定的有關(guān)語言信息的組織和分類吮廉,否則我們根本無法交談睹栖。
—— Benjamin Lee Whorf (本杰明.沃爾夫,人類學(xué)家)
Java是一門面向?qū)ο蟮木幊陶Z言茧痕。面向?qū)ο蟪绦蛟O(shè)計(jì)(Object-oriented Programming野来,OOP)
-
阿倫凱(Alan Kay)總結(jié)了面向?qū)ο笳Z言Smalltalk的五個(gè)特性,Smalltalk是Java所基于的語言之一
- 萬物皆為對(duì)象
- 程序是對(duì)象的集合踪旷,它們通過發(fā)送消息來告訴彼此所要做的
- 每個(gè)對(duì)象都有自己的由其他對(duì)象所構(gòu)成的存儲(chǔ)
- 每個(gè)對(duì)象都擁有其類型
- 某一特定類型的所有對(duì)象都可以接收同樣的消息
.
-
對(duì)象具有狀態(tài)曼氛、行為和標(biāo)識(shí)
分別對(duì)應(yīng) 內(nèi)部數(shù)據(jù)(成員變量)、方法令野、內(nèi)存中的引用地址
類描述了具有相同特性(數(shù)據(jù)元素)和行為(功能)的對(duì)象集合舀患,實(shí)際是一種數(shù)據(jù)類型
-
可以把對(duì)象理解為“服務(wù)提供者”
程序是對(duì)象的集合,程序向用戶提供服務(wù)气破,其實(shí)就是調(diào)用一個(gè)個(gè)對(duì)象的提供的服務(wù)(方法)來實(shí)現(xiàn)
-
新的類可以由任意數(shù)量聊浅、任意類型的其他對(duì)象,以任意可以實(shí)現(xiàn)新的類中想要的功能的方式所組成
這種概念被稱為組合现使、聚合低匙,是一種 has-a (擁有) 關(guān)系
-
Java是單根繼承結(jié)構(gòu)
- 保證所有對(duì)象都具備某些功能
- 使垃圾回收實(shí)現(xiàn)變得容易
.
異常處理提供了一種從錯(cuò)誤狀況進(jìn)行可靠恢復(fù)的途徑
并發(fā),就是同一時(shí)刻處理多個(gè)任務(wù)碳锈,隱患是:共享資源
線程顽冶,是一種為單一處理器分配執(zhí)行時(shí)間的手段
客戶/服務(wù)器系統(tǒng)的核心思想是:系統(tǒng)具有一個(gè)中央信息存儲(chǔ)池用來存儲(chǔ)數(shù)據(jù),她通常存在于數(shù)據(jù)庫中售碳,你可以按需要將它分發(fā)給某些人員或機(jī)器集群
本章內(nèi)容主要是帶領(lǐng)讀者先領(lǐng)略面向?qū)ο蟪绦蛟O(shè)計(jì)的全貌强重,講的是一些概念性的東西。現(xiàn)在有些明白為什么有些人說《Java編程思想》不太適合入門讀贸人,可能是因?yàn)榈谝徽碌脑虬杉渚埃瑳]有任何概念之前看這些,真的會(huì)有點(diǎn)暈
二艺智、一切都是對(duì)象 【2018.1.14】
如果我們說另一種不同的語言倘要,那么我們就會(huì)發(fā)覺一個(gè)有些不同的世界。
—— Luduing Wittgerstein (路德維狭撸·維特根斯坦碗誉,奧地利哲學(xué)家)
盡管Java是基于C++的召嘶,但是相比之下父晶,Java是一種更“純粹”的面向?qū)ο蟪绦蛟O(shè)計(jì)語言
Java中通過引用操作對(duì)象
-
我們通過 new 關(guān)鍵字來創(chuàng)建Java對(duì)象。不過弄跌,字符串可以用帶引號(hào)的文本初始化甲喝,這是Java的一個(gè)特性
String s = new String("hello java"); String ss = "hello java";
-
java中對(duì)象存儲(chǔ)位置
-
寄存器
處理器內(nèi)部,最快的存儲(chǔ)區(qū)铛只,但不能直接控制
-
堆棧
RAM隨機(jī)訪問存儲(chǔ)器中埠胖,對(duì)象引用都存放于其中糠溜。創(chuàng)建程序時(shí),Java系統(tǒng)必須知道存放在堆棧內(nèi)所有項(xiàng)的生命周期直撤,以便上下移動(dòng)堆棧指針非竿。向上移動(dòng),釋放內(nèi)存谋竖;向下移動(dòng)红柱,分配新內(nèi)存
-
堆
也位于RAM區(qū),用于存放Java對(duì)象蓖乘。堆不同于堆棧的好處是:編譯器不需要知道存儲(chǔ)的數(shù)據(jù)在堆里存活多長時(shí)間
-
常量存儲(chǔ)
直接放在程序代碼內(nèi)部锤悄,這樣是安全的,永遠(yuǎn)不會(huì)被改變
-
非RAM存儲(chǔ)
存儲(chǔ)于程序之外嘉抒,有流對(duì)象和持久化對(duì)象
-
8種基本類型是不需要通過 new 創(chuàng)建的
基本類型 | 大小 | 包裝器類型 |
---|---|---|
boolean | - | Boolean |
char | 2 byte | Character |
byte | 1 byte | Byte |
short | 2 byte | Short |
int | 4 byte | Integer |
long | 8 byte | Long |
float | 4 byte | Float |
double | 8 byte | Double |
boolean所占存儲(chǔ)空間沒有明確指定
換算關(guān)系
8 bit(位) = 1 byte(字節(jié))
1024 byte = 1 KB
1024 KB = 1 MB
1024 MB = 1 GB
1024 GB = 1 TB
成員變量會(huì)得到初始化有默認(rèn)值零聚,局部變量需要自己初始化,在使用前賦值
Java中的方法是通過對(duì)象調(diào)用些侍,但是static方法隶症,并不依賴于對(duì)象,它是針對(duì)類調(diào)用的
程序包名岗宣,小寫反轉(zhuǎn)域名
-
static關(guān)鍵字
1. 只想為某特定域(字段)分配單一存儲(chǔ)空間沿腰,而不用去考慮究竟創(chuàng)建多少對(duì)象,甚至不創(chuàng)建對(duì)象 2. 希望某個(gè)方法不與包含它的類關(guān)聯(lián) static修飾的字段狈定、方法颂龙,不能直接訪問非static字段、方法纽什,因?yàn)榇肭叮莝tatic字段和方法必須先與對(duì)象關(guān)聯(lián)
-
注釋
-
單行注釋
// 以雙斜杠開頭,這就是單行注釋
-
多行注釋
以 /* 開頭芦缰,以 */ 結(jié)束企巢,不過我們習(xí)慣每行前面都加上 * /* * 這是多行注釋 */
-
注釋文檔
以 /** 開頭,以 */ 結(jié)束 相關(guān)的有一套語法让蕾,可以為類浪规、字段、方法添加探孝。為private 和 默認(rèn)修飾的成員添加注釋文檔笋婿,會(huì)被忽略
-
本章主要介紹一些Java入門的小知識(shí),學(xué)完本章顿颅,在配置完jdk之后缸濒,我們已經(jīng)可以編寫出一個(gè)Hello Java程序了
三、操作符【2018.1.21】
在最底層,java的數(shù)據(jù)是通過使用操作符來操作的庇配。
幾乎所有的操作符都只能操作“基本類型”斩跌。例外的操作符是“=”、“==”和“!=”捞慌,這幾個(gè)操作符能操作所有的對(duì)象耀鸦。另外,String類支持“+”和“+=”
java中“=”為賦值操作符啸澡,意思是“取右邊的值”揭糕,把它復(fù)制給左邊
“++”,“--”為自動(dòng)遞增锻霎、自動(dòng)遞減著角,又分為“前綴遞增”、“前綴遞減”和“后綴遞增”旋恼、“后綴遞減”吏口。前綴如++a,--a會(huì)先執(zhí)行運(yùn)算,再生成值冰更;后綴如a--,a++會(huì)先生成值产徊,再執(zhí)行運(yùn)算
比較是否相等,基本類型使用“==”蜀细,對(duì)象使用equals()方法
“短路”現(xiàn)象舟铜,即一旦能夠明確無誤的確定整個(gè)表達(dá)式的值,就不再計(jì)算表達(dá)式余下部分奠衔。 “||”谆刨,短路或;“&&”短路與
三元操作符 boolean-exp ? value0 : value1; 它與 if-else語句的不同之處是归斤,三元操作符一定會(huì)返回一個(gè)值
java允許我們把任何基本數(shù)據(jù)類型轉(zhuǎn)換成別的基本數(shù)據(jù)類型痊夭,但布爾型除外,后者根本不允許進(jìn)行任何類型的轉(zhuǎn)換處理
-
窄化轉(zhuǎn)化脏里,就是將能容納更多信息的數(shù)據(jù)類型轉(zhuǎn)換成無法容納那么多信息的類型她我,可能會(huì)面臨信息丟失的危險(xiǎn),并且我們要顯示地進(jìn)行類型轉(zhuǎn)換迫横。
就是向下轉(zhuǎn)型番舆,比如double轉(zhuǎn)換為int
-
將float和double轉(zhuǎn)型為int時(shí),總是會(huì)對(duì)該數(shù)字執(zhí)行結(jié)尾矾踱。如果想得到四舍五入的結(jié)果恨狈,就需要使用java.lang.Math中的round()方法
如 double a = 0.4; int b = (int)a; b == 0;
通常,表達(dá)式中出現(xiàn)的最大的數(shù)據(jù)類型決定了表達(dá)式最終結(jié)果的數(shù)據(jù)類型介返。(自動(dòng)類型提升)
-
Java的運(yùn)算符拴事,分為四類:算數(shù)運(yùn)算符、關(guān)系運(yùn)算符圣蝎、邏輯運(yùn)算符刃宵、位運(yùn)算符。
算數(shù)運(yùn)算符(9):+ - * / % ++ -- 關(guān)系運(yùn)算符(6):== != > >= < <= 邏輯運(yùn)算符(6):&& || ! ^ & | 位運(yùn)算符(7):& | ~ ^ >> << >>>
本章主要是介紹java中的一些操作符徘公,都是些需要硬記的知識(shí)牲证,不過常用的也就算數(shù)運(yùn)算符和關(guān)系運(yùn)算符以及 && ||
四、控制執(zhí)行流程 【2018.1.21】
就像有知覺的生物一樣关面,程序必須在執(zhí)行過程中控制它的世界坦袍,并做出選擇。在Java中等太,你要使用執(zhí)行控制語句來做出選擇
java中流程控制涉及的關(guān)鍵字:if-else捂齐、while、do-while缩抡、for奠宜、return、break瞻想、switch
while和do-while的唯一區(qū)別是:do-while中的語句至少會(huì)執(zhí)行一次压真,即便表達(dá)式第一次計(jì)算為false
-
java里唯一用到逗號(hào)操作符的地方是for循環(huán)的控制表達(dá)式
for(int i = 1,j = i + 10; i < 5; i++ ,j = i + 2){}
for語句中可以定義多個(gè)變量,但是它們必須具有相同的類型
return關(guān)鍵字的兩個(gè)作用蘑险,返回值和退出方法
break用于強(qiáng)行退出循環(huán)滴肿,不執(zhí)行循環(huán)中剩余的語句。continue則是停止當(dāng)前的迭代佃迄,然后退回循環(huán)起始泼差,開始下一次迭代
標(biāo)簽,是后面跟有冒號(hào)的標(biāo)識(shí)符呵俏,像這樣 lable: 用于跳出多層循環(huán)
帶有標(biāo)簽的break會(huì)中斷并跳出標(biāo)簽所指的循環(huán)拴驮;帶有標(biāo)簽的continue會(huì)停止當(dāng)前迭代,到達(dá)標(biāo)簽的位置柴信,并重新進(jìn)入緊接在那個(gè)標(biāo)簽后面的循環(huán)