20145230 《Java程序設計》 第3周學習總結
教材學習內容總結
String s=new String();
```第四章我首先了解了CPU與內存的關系,棧與堆的關系。要產生對象必須先定義類,類是對象的設計圖,對象是累的實例。以類名稱聲明的變量,就是參考名稱。Java語言遵守IEEE754浮點數運算規范,使用分數與指數來表示浮點數。無論System.arraycopy()還是Arrays.copyOf(),用在類類型聲明的數組時,都是執行淺層復制。所謂淺層復制,大概就是只復制指向對象的指針,而不是那個對象吧。在我們使用javac指令沒有指定-encoding選項時,會使用操作系統默認編碼。第五章中,了解到除了“static","this"關鍵字可以出現在類中任何地方,因為static方法中不能用非static數據或方法成員。有些名稱沖突編譯程序可通過一下順序解析:
###局部變量覆蓋###
選用方法中的同名變量、參數、方法名稱。
###成員覆蓋###
選用類中定義的同名數據成員、方法名稱。
###重載方法比較###
使用import static的各個靜態成員,若有同名沖突,嘗試通過重載判斷。
####定義類代碼####
package cc.openhome;
class Clothes{
String color;
char size;
}
public class Field{
public static void main(String[] args){
Clothes sun =new Clothes();
Clothes spring=new Clothes;
sun.color="red";
sun.size='s';
spring.color="green";
spring.size='M';
System.out.printf("sun(%s,%c)%n",sun.color,sun.size);
System.out.printf("spring (%s,%c)%n",spring.color,spring.size);
}
}
####對象指定與相等性代碼####
BigDecimal a=new BigDecimal("0.1");
BigDecimal b=new BigDecimal("0.1");
System.out.println(a==b);
System.out.println(a.equals(b));
####數組對象代碼####
package cc.openhome;
public class Score{
public static void main{String[] args){
int[]scores={88,81,74,68,78,76,77,85,95,93};
for(int i=0;i<scores.length;i++){
Stetem.out.printf("學生分數:%d %n",scores[i]);
}
}
}
####封裝對象初始流程代碼####
package cc.openhome;
class CashCard{
String number;
int balance;
int bonus;
}
####this代碼####
package cc.openhome;
ckass Other{
{
System.out.println("對象初始區塊");
}
Other(){
System.out.println("Other()構造函數");
}
Other(int o){
this();
System.out.println("Other(int o)構造函數");
}
}
public class ObjectInitialBlock{
public static void main(String[] args){
new Other(1);
}
}
## 教材學習中的問題和解決過程
String text1="Ja"+"va";
String text2="Java";
System.out.println(text1==text2);
書中問到這樣的代碼是false還是true,我剛開始認為是錯誤,因為覺得兩個字符串不能簡單相加。但后買才知道最終的結果是true,因為我們的編譯程序就是會認為我們要得結果就是"java",也就是說,我們確實可以將兩個字符串簡單相加。
Integer i1=200;
integer i2=200;
if(i1i2){
System.out.println("i1i2");
}
else{
System.out.println("i1!=i2");
}
上面這個代碼的結果竟然是"i1!=i2",但我很疑惑,明明都是200,為什么i1就不等於i2呢?后面我知道,自動裝箱與拆箱的功能其實是編譯程序的蜜糖,它能讓我們嘗到甜頭,但也會讓我們看不清代碼背后的真理。由於IntegerCache.low默認值是-128,IntegerCache.high默認值是127,所以200在這個范圍之外,所以i1與i2不會參考到同一個Integer實例上,也就有了上面的效果。
## 代碼調試中的問題和解決過程
不知道這個代碼調試出錯是什么意思。

## 其他(感悟、思考等,可選)
學了三周了,大概上了點兒Java的道路了,反正我也覺得沒啥捷徑可走,就是那篇博客寫的:敲代碼,不停敲代碼,我不會自己寫代碼,但我會敲書上的代碼,確實能讓自己悟出很多東西吧!
## 學習進度條
| | 代碼行數(新增/累積)| 博客量(新增/累積)|學習時間(新增/累積)|重要成長|
| -------- | :----------------:|:----------------:|:---------------: |:-----:|
| 目標 | 2000行 | 25篇 | 400小時 | |
| 第一周 | 100/100 | 2/2 | 20/20 | 編寫了HELLO JAVA程序 |
| 第二周 | 100/200 | 2/4 | 20/40 | 了解了JAVA基本語法 |
| 第三周 | 50/250 | 1/5 | 20/60 | 了解了對象封裝問題 |
|
## 參考資料
- [Java學習筆記(第8版)](http://book.douban.com/subject/26371167/)
- [《Java學習筆記(第8版)》學習指導](http://www.cnblogs.com/rocedu/p/5182332.html)
- ...