Java編程思想讀書(shū)筆記(1、2、3章)
發(fā)表時(shí)間:2024-01-17 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]第1、2章 萬(wàn)事萬(wàn)物皆對(duì)象 一.所有對(duì)象都必須由你建立 1. 存儲(chǔ)在哪里 1. 寄存器:我們?cè)诔绦蛑袩o(wú)法控制 2. stack:存放基本類(lèi)型的數(shù)據(jù)和對(duì)象的reference,但對(duì)象本身不存放在stack中,而是存放在Heap中 ...
第1、2章 萬(wàn)事萬(wàn)物皆對(duì)象
一.所有對(duì)象都必須由你建立
1. 存儲(chǔ)在哪里
1. 寄存器:我們?cè)诔绦蛑袩o(wú)法控制
2. stack:存放基本類(lèi)型的數(shù)據(jù)和對(duì)象的reference,但對(duì)象本身不存放在stack中,而是存放在Heap中
3. Heap:存放用new產(chǎn)生的數(shù)據(jù)
4. Static storage:存放在對(duì)象中用static定義的靜態(tài)成員
5. Constant storage:存放常量
6. NON-RAM:硬盤(pán)等永久存儲(chǔ)空間
2. 特例:基本型別
基本類(lèi)型數(shù)據(jù)存放在Stack中,存放的是數(shù)據(jù)。而產(chǎn)生對(duì)象時(shí),只把對(duì)象的reference存放在stack中,用于指向某個(gè)對(duì)象,對(duì)象本身存放在Heap中。
3. Java中的數(shù)組
當(dāng)你產(chǎn)生某個(gè)存儲(chǔ)對(duì)象的數(shù)組時(shí),真正產(chǎn)生的其實(shí)是存儲(chǔ)reference的數(shù)組。引數(shù)組建立后,其中的每一個(gè)reference都會(huì)被自動(dòng)設(shè)為null,表示“不指向任何對(duì)象”。
二.建立新的數(shù)據(jù)型別:Class
1. 數(shù)據(jù)成員和函數(shù)
1.1 基本成員的缺省值
1) 當(dāng)class的某個(gè)成員屬于基本型別時(shí),即使你沒(méi)有為它提供初值,Java仍保證它有一個(gè)缺省值。
2) 只有當(dāng)變量身份是“class內(nèi)的成員時(shí),Java才保證為該變量提供初值。
三.函數(shù)(Mehtods),引數(shù)(arguments),返回值(return values)
1. 引數(shù)列
當(dāng)引數(shù)傳遞的是對(duì)象時(shí),傳遞的是對(duì)象的reference。
四.注解用內(nèi)嵌式文檔
Java提供兩種注解風(fēng)格:/*XXXX*/、//XXXX
第3章 控制程序流程
一.使用Java運(yùn)算符
1.關(guān)系運(yùn)算符
1.) 當(dāng)對(duì)兩個(gè)對(duì)象運(yùn)用關(guān)系運(yùn)算符進(jìn)行比較時(shí),比較的是object reference,如:
Integer n1 = new Integer(3);
Integer n2 = new Integer(3);
System.out.println(n1==n2);
結(jié)果為false,因?yàn)閮蓚(gè)object reference(n1和n2)值是不同的
2) quals()的缺省行為也是拿referenct來(lái)比較。不過(guò)Java中的class覆寫(xiě)了equals方法,如:
Integer n1 = new Integer(3);
Integer n2 = new Integer(3);
System.out.println(n1.quals(n2));//值為true
2. 邏輯運(yùn)算符
1) 只能將and、or、not施用于boolean值身上。如果邏輯運(yùn)算符兩邊的值存在non-boolean值,將會(huì)出錯(cuò),如:
int test1 = 1;
System.out.println((test && 1<2);>2);>
3. 位移運(yùn)算符
如果所操作的位移對(duì)象是char、byte、short,位移動(dòng)作發(fā)生之前,其值會(huì)先被晉升為int,運(yùn)算結(jié)果會(huì)是int。
二.流程控制
1. 迭代(iteration)
1.1 逗號(hào)運(yùn)算符
逗號(hào)運(yùn)算符只能用于for循環(huán)的控制表達(dá)式中的initialization和step兩部分中,如:for(int i=0, j=I+1; I<5; i++,="" j="">5;>
1.2 break和continue
break表示退出循環(huán);continue表示退出本次循環(huán),回來(lái)循環(huán)起始位置。
1.3 label
label只有放在迭代語(yǔ)句之前才起作用,在label和迭代語(yǔ)句之間插入任何語(yǔ)句都不會(huì)起作用。
2. Switch
switch中的選擇器必須是int或char型,如:
float i = 2;
switch ( i )//將出錯(cuò),因?yàn)閕不是int或char之一
3. 計(jì)算細(xì)節(jié)
1) 從float或double轉(zhuǎn)為整數(shù)值,總是以完全舍棄小數(shù)的方式進(jìn)行。
4. Math.random()的輸出范圍是[0, 1]。