最近忙著找工作,可是總是到最后面試完了就沒信兒了。哎,你說找個如意的工作就這么難嗎?自己感覺實力還是不錯的,也有實際的開發經驗啊。好多公司打電話第一句話就問,你可不可馬上上班,暈,我還沒畢業呢?大學生活還沒過完。我總覺得大學的最后生活是在幸福中度過的,可是到現在,出了每天跑吉大招聘會之外,基本沒別的干的。可能也累了吧,在做完那個派出所的系統后,感覺自己很久沒有動手寫過代碼了,所以為了練練手,同時也為找個"好“工作加些籌碼。從今天開始就開始看張老師講得java基礎提高了。
今天主要是聽了JDK1.5的幾個新特性,比如靜態導入(import static ****)、增強for循環、自動裝箱和拆箱-->中間又提到了享元模式。接著就是我以前很少接觸的枚舉了,在我學的時候根本就沒把枚舉當回事,因為我在開發的時候很少寫自己的enum,大多是用JDK自己寫好了的enum 。看了張老師的視頻之后才認識到枚舉真正的作用和用法,還鞏固了一下inner class 。以及如何在定義帶有一個抽象方法的枚舉。
下面是今天聽課時候自己記的筆記:
1:eclipse 日常用法
2:import static 靜態導入與常規導入 import
3:可變參數 overload 和 override 的區別(面試經常考,我就經常遇到)
4:overload重載
override重寫
5:增強for循環
for(type 變量:集合變量名){.....}
6:自動裝箱和拆箱
裝箱 把一個基本數據類型轉換為一個引用類型 如 Integer i = 3
拆箱
7:基本數據的緩存
8:享元模式 有很多相似的數據,他們有很多的共同點(內部屬性),然后,把它變成一個對象,然后把不同的屬性作為方法的參數傳入(外部屬性)
9:枚舉:枚舉就是要讓某個類型的變量的取值只能為若干個固定值中的一個,否則,編譯器就會報錯。
枚舉可以讓編譯器在編譯時就可以控制源程序中填寫的非法值,普通變量的方式在開發階段無法實現這一目標。
10:采用抽象方法定義nextDay就將大量的if.else語句轉移成了一個個獨立的類。
11:枚舉的中定義的其他信息必須定義元素列表
12:枚舉只有一個成員時,就可以作為一種單例的實現方式
13:class Class--->代表一類事物
Class cls1 = 字節碼1 如 Class cls = String.class;
Person p1 = new Person();
Class cls2 = Person.class; // 或者 p1.getClass();
Class.forName("java.lang.String");//返回字節碼 JVM中有\沒有
9個預定義class 八個基本類型 + void
There are nine predefined Class objects to represent the eight primitive types and void.
下面是今天重點學習的一些代碼
1 package com.anduo.day1;
2
3 public class EnumTest {
4
5 /**
6 * @param args
7 */
8 public static void main(String[] args) {
9 // int weekDay = 0;
10 // WeekDay day = WeekDay.Fri;
11 WeekDays day = WeekDays.SUN;
12 System.out.println(day.toString());
13 System.out.println(day.nextDay());
14
15 WeekDay day2 = WeekDay.FRI;
16
17 System.out.println(day2.name());
18
19 WeekDay[] days = WeekDay.values();
20 for (WeekDay weekDay : days) {
21 System.out.println(weekDay);
22 }
23
24 System.out.println("--------------------");
25
26 System.out.println(TrafficLamp.RED.nextLamp().time);
27
28 }
29
30 /**
31 * 枚舉的一個對象就相當與一個對象
32 *
33 * @author anduo date:2011-11-7--下午03:01:58
34 */
35 public enum WeekDay {
36 /*
37 * SUN(1)調用的是帶有參數的構造方法 SUN 調用的是無參構造方法
38 */
39 SUN(1), MON(2), TUE, WED, THI, FRI, SAT;
40 private WeekDay() {
41 System.out.println("first");
42 }
43
44 private WeekDay(int day) {
45 System.out.println("second");
46 }
47 }
48
49 /**
50 * 帶有抽象方法的枚舉
51 *
52 * @author anduo
53 *
54 * date:2011-11-7--下午05:38:22
55 */
56 public enum TrafficLamp {
57 RED(30) {
58 @Override
59 public TrafficLamp nextLamp() {
60 return GREEN;
61 }
62 },
63 GREEN(35) {
64 @Override
65 public TrafficLamp nextLamp() {
66 return YELLOW;
67 }
68 },
69 YELLOW(5) {
70 @Override
71 public TrafficLamp nextLamp() {
72 return RED;
73 }
74 };
75 public abstract TrafficLamp nextLamp();
76
77 private int time;
78
79 private TrafficLamp(int time) {
80 this.time = time;
81 }
82 }
83
84 }
85
張老師的課講得確實好,不敢說自己的境界又提高了多少,但是我可以可定的是以前有寫疑問的地方,現在明白了不少。比如:
1 package com.anduo.day1;
2
3 public class AutoBox {
4
5 /**
6 * @param args
7 */
8 public static void main(String[] args) {
9 Integer iObj = 3;// 裝箱 以前的用法是 new Integer(3)
10
11 System.out.println(iObj + 13);
12
13 Integer i1 = 12;
14 Integer i2 = 12;
15 //在-128~127之間的時候將他們緩存起來 當在定義一個對象的時候到緩存池里來查找
16 //如果有就直接引用該對象
17 //而不在上邊這個區間的時候就需要建立各自的對象
18 //設計模式是 享元模式
19
20 System.out.println(i1 == i2);
21
22
23 }
24
25 }
26
這個問題以前有寢室的問我,我也不知道怎么回答,找google老師,查了很久還是沒有得到一個正確的解答,今天總算可以給人家一個滿意的答案了。
其實我關注了老師的講課,我發現如果加上一下發圖的說明的過程會更加清晰地解決我們的有些問題。第二點,要掌握一種學習能力,做為一名程序員,企業看重的就是你的學習能力。因為軟件這一行的更新速度是最快的,千萬不能落后,所以我們做程序員的要天天學習,這樣才可以跟著時代的步伐。當然,知識你是學不完了,只要有很強的學習能力,那么不管任何技術都是可以很快拿下的。