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