|
Posted on 2008-07-27 17:01 ∪∩BUG 閱讀(511) 評論(1) 編輯 收藏 所屬分類: Java學習筆記
1 JAVA筆記
2 2008 04 22
3 1.用javac編譯代碼時,javac 后的文件名對大小寫不敏感,如一個名為Hello.java的文件,
4 可以這樣寫:javac hello.java或javac HEllO.java
5 2.用java解釋代碼時,java 后跟的是一個類名,而不是一個文件名.如要解釋文件名為Hello.java的文件(類名為Hello是一個類名,
6 文件名要寫類名相同)必須寫成java Hello.
7 3. Label prompt1; //Label 對象是一個可以容器中放置文本的組件
8 TextField input1; //TextField 對象是個允許編輯單行文本的文本組件
9 4.java中對boolean類型賦值時只能是true或false,不能像C語言一樣的賦任意不為0 的數.
10 如在用到if或while語句時,條件只能用boolean值的true或false.如:
11 if(true) {
12 }
13 while(false) {
14 }
15 5.java中數組:
16 1)可以在定義數組時值,
17 如:
18 int [] num= {1,2,3}//ok
19 或:
20 int [] num=new int[] {1,2,3}//ok
21 注意:不能這么指定大小:
22 int [] num =new int[3] {1,2,3}//error!!!
23 但不能在定義之后再賦值,(非法)
24 如:
25 int [] num;
26 num= {1,2,3}//error
27 2)二維數組
28 int [][]num =new int[][] {1,2,3,4,5,6};//error
29 int [][]num =new int[][] { {1,2,3}, {4,5,6}};//初始化賦值兩行三列ok
30 int [][]num =new int[2][3] { {1,2,3}, {4,5,6}};//初始化指定大小兩行三列error
31 6.關于JAVA的"++"操作:
32 int i =3;
33 int count =(i++) +(i++) +(i++); //這么計算:(3) +(4) +(5)
34 int count =(++i) +(++i) +(++i); //這么計算:(4) +(5) +(6)
35 System.out.println("i="+i);
36 System.out.println("count="+count);
37
1 JAVA筆記
2 2008 04 24
3
4 1.補碼:
5 已知一個負數的補碼,將其轉換為十進制數,步驟:
6 1、先對各位取反;
7 2、將其轉換為十進制數;
8 3、加上負號,再減去1。
9 例如:
10 11111010,最高位為1,是負數,先對各位取反得00000101,轉換為十進制數得5,加上負號得-5,再減1得-6。
11 2.左移,右移,無符號右移.
12 int j = 8;
13 int f = j << 2;//左移.每左移一位相當于乘以2,這里乘以4
14 int g = j >> 2;//右移,每右移一位相當于除以2,這里除以4
15 int h = j >>> 2;//無符號右移,每右移一位相當于除以2,這里除以4
16
1 JAVA筆記
2
3 2008 04 26
4
5 1.特殊變量this的使用:
6 關于實例方法和實例數據成員的進一步說明
7 一個類所有的實例(對象)調用的成員方法在內存中只有一份拷貝,
8 盡管在內存中可能有多個對象,而數據成員在類的每個對象所在內存中都存在著一份拷貝。
9 this變量允許相同的實例方法為不同的對象工作。每當調用一個實例方法時,
10 this變量將被設置成引用該實例方法的特定的類對象。方法的代碼接著會與this所代表的對象的特定數據建立關聯。
11
12 1)this代表對象本身,當類的成員變量與類成員方法的局部變量同名時,可以用this來區分.
13 2)this 還可以簡化構造函數的調用
14 class Point
15  {
16 int x,y; //類的成員變量
17 //
18 Point ()//構造方法主要為類的對象定義初始化狀態
19 {
20 this(1,2); //通過this簡化構造函數的調用。
21 }
22 Point(int a ,int b)//重載構造方法
23 {
24 //initialization phase初始化段
25 x = a;
26 y = b;
27 }
28
29 //termination phase終止段
30 void output()
31 {
32 System.out.println("x ="+x);
33 System.out.println("y ="+y);
34 }
35
36 //void output(int x ,int y) //this變量代表對象本身
37 //{ //當類中有兩個同名變量,一個屬于類(類的成員變量),
38 // //而另一個屬于某個特定的方法(方法中的局部變量),使用this區分成員變量和局部變量。
39 // this.x = x;
40 // this.y = y;
41 //}
42
43 //processing phase處理段
44 public static void main(String[] args)// main method
45 {
46 Point pt1;
47 pt1 = new Point();
48 //pt1.putput(4,5);
49 pt1.output();
50
51 }
52 }
53
54 2. 類方法(靜態方法)和類變量(靜態變量)
55 1)class Point {
56 .
57 static int a;//定義一個類變量
58 stactic void output() {}//定義一個類方法
59 
60 Point.output();//調用一個類方法
61 }
62 2)類方法只能引用類變量,不能引用非類變量,也不能調用非類方法
63 3)類變量可以被非類方法引用,類方法也可以通過對象調用
64 3.用final聲明常量:
65 1)用final聲明的常量的同時必須對他進行初始化;
66 2)非靜態常量也可以在類的構造方法中初始化,
67 但如果類中有多個重載構造方法則必須在*每個沒有調用已經初始化final常量方法*中都進行初始化.
68 3)**如果把這個常量聲明為靜態常量時(static final PI = 3.1415926)則必須在聲明時初始化!
69
70 4.關于繼承extends[**構造方法和析構方法不能被繼承**]
71 1)JAVA是不允許多繼承的.
72 2)在子類中定義一個與父類中同名,同返回類型,同參數個數和類型的成員方法稱為方法的覆蓋.即**子類的方法把父類的方法覆蓋掉了**!!
73 在子類中的同名變量亦是如此,此時父類的同名變更將在子類中被隱藏起來!
74 3)如果要訪問父類中被隱藏的成員變量或調用被覆蓋的方法可以用Super.
75 4)每個子類構造方法的第一條語句,都是隱含地調用super();
76 **如果子類和父類中都有構造方法,則必須通過super()顯示調用父類的構造方法!**
77 5.關于多態性:
78 1)通過覆蓋父類的方法來實現,在運行時根據傳遞的對象引用,來調用相應的方法。
79 2)當我們把子類對象的引用傳給聲明為父類的一個對象變量,
80 如果子類有的方法就調用子類的方法,如果子類沒有的方法就調用父類的方法!
81 6.可以用instanceof來驗證某個對象是否是某個類的實例
82
83 class Animal
84  {
85 int weight,height;
86 Animal(int weight,int height)//Animal類的構造方法
87 {
88 System.out.println("Animal construct");
89 }
90 void eat()
91 {
92 System.out.println("Animal eat");
93 }
94
95 void breathe()
96 {
97 System.out.println("Animal breathe");
98 }
99 }
100
101 class Fish extends Animal //Fish類繼承了Animal類
102  {
103 int height;
104 Fish()//Fish類的構造方法
105 {
106 super(30,40);//顯示調用父類中帶參數的構造方法
107 System.out.println("Fish construct");
108 }
109 void breathe()//在了類中重寫breathe方法
110 {
111 //super.breathe();//用super可以調用父類被覆蓋的方法
112 //super.height = 40;//用super可以訪問父類被隱藏的成員變量
113 System.out.println("Fish bubble");
114 }
115 }
116
117 class Intergration
118  {
119 public static void main(String[] args)
120 {
121 //Animal an = new Animal();
122 Fish fh = new Fish();
123 //
124 //an.breathe();
125 //fh.height = 30;
126 //fh.breathe();
127 Animal an=new Animal(30,40);
128 Fish fh=new Fish();
129 an=fh;//將Fish的對象fh的引用賦給Animal的對象an后,an也變成了Fish的一個實例!
130 /**//*if(an instanceof Animal)
131 {
132 System.out.println("an is animal's instance");
133 }
134 if(fh instanceof Fish)
135 {
136 System.out.println("fh is fish's instance");
137 }*/
138 if(an instanceof Fish)//驗證an是否是Fish的一個實例
139 {
140 System.out.println("an is fish's instance");
141 }
142 else
143 {
144 System.out.println("an isn't fish's instance");
145 }
146 if(fh instanceof Animal)
147 {
148 System.out.println("fh is animal's instance");
149 }
150 else
151 {
152 System.out.println("fh isn't animal's instance");
153 }
154 }
155 }
156
157 7.用面向對象的方法求:
158 求一個長方形的周長和面積。
159 以面向對象的程序設計方式思考:
160 1、一個長方形可以看成一個長方形對象。
161 2、一個長方形對象有兩個狀態(長和寬)和兩個行為(求周長和求面積)。
162 3、將所有長方形的共性抽取出來,設計一個長方形類。
163 4、通過長方形對象的行為,就可以求出某個具體的長方形對象的周長和面積。
164
165 //create a Rectangle class
166 //declaration l and w variables for length and width
167 //create perimeter method and area to count
168 //creat main method
169 //declaration object Rectal1 and Recral2
170 //intialization variable l and w by object Rectal1 and Recral2
171 //print the value
172
173 class Rectangle
174  {
175 int l,w;
176
177 //processing phase
178 int perimeter()
179 {
180 return 2*(l+w);
181 }
182
183 int area()
184 {
185 return l*w;
186 }
187
188 public static void main(String[] args)
189 {
190 Rectangle Recta1 = new Rectangle();
191 Rectangle Recta2 = new Rectangle();
192
193 //initialization phase
194 Recta1.l = 10;
195 Recta1.w = 30;
196 Recta2.l = 30;
197 Recta2.w = 20;
198
199 //termination phase
200 System.out.println("Recta1's Perimeter is: \t" + Recta1.perimeter());
201 System.out.println("Recta1's Area is: \t" + Recta1.area());
202 System.out.println("Recta2's Perimeter is: \t" + Recta2.perimeter());
203 System.out.println("Recta2's Area is: \t" + Recta2.area());
204 }
205 }
206
1 JAVA筆記
2 2008 04 29
3
4 1.package(包)
5 1)package語氣必須是程序的第一條語氣(除了注釋語氣和空白語氣)
6 2)package的包名指的是一個文件夾或路徑,也就是說,類名在package所在的目錄下,在解釋執行時必須標明類所在的路徑.
7 如:
8 package cn.mybole;
9
10 class Test
11 {
12 public static void main(String[] args)
13 {
14 System.out.println("package test!");
15 }
16 }
17
18 //執行:java cn.mybole.Test
19 3)可以在編譯時用 "-d ."(-d 和.之間有一個空格,.和*.java之間有一個空格)參數來在當前目錄下生成目錄 cn/mybole/Test.class,
20 即將*.class文件在生成的目錄下生成.
21 如: javac -d . Test.java //在當前目錄一生成包
22 javac -d E:\javalesson\Test.java //在指定目錄(E:\javalesson)一生成包
23 4)用import關鍵字導入一個包(其中,java.lang包是自動導入的):
24 1.import java.io.File //導入java.io包中的File類
25 2.import java.io.* // 導入java.io包中的所有類
26 這種導入所有類的方法雖然方便,但是:
27 1.會消耗機器的大量內存
28 2.當遠程加載時會因加載到本地的類過多而造成明顯的延時.
29 5)導入一個包中的類后可以在當前類中用所導入的類直接定義變量
30 如: File f; //用已經導入的類定義變量
31 java.io.File f //當沒有用import導入包時也可以通過完整的類名定義
32 6)如果要使用的類在同一個包中,無需用import語氣就可以相互引用.
33
34 2.類的說明符
35 1)從外部軟件包中訪問非同一個包的一個類--public類
36 1.缺省的類是不能被外部軟件包訪問的.
37 2.只有聲明為public的類才能通過import(或在當前類中以完整類名)被外部軟件包訪問.
38 如:
39 //Test2.java
40
41 //package cn.mybole;
42 package com.winsunlight; //com.winsunlight包
43
44 public class Test2 //Test類是public類.
45 {
46
47 }
48 //Test.java
49
50 package cn.mybole;
51
52 //import java.io.File;
53 //import java.io.*;
54 import com.winsunlight.Test2;//導入com.winsunlight包中的Test2類
55 class Test
56 {
57 public static void main(String[] args)
58 {
59 //File f;
60 //java.io.File f;
61 //System.out.println("package test!");
62 Test2 t2 = new Test2(); //訪問com.winsunlight包中的Test2類
63 }
64 }
65 2)final類(最終類)不能被其他類所繼承,其方法也不能被覆蓋.
66 1.public final class Test2 //用public和final修飾的類可以用import引用,亦不能被繼承.
評論
# re: Java學習筆記(一) 回復 更多評論
2008-07-28 16:29 by
從UltraEdit里復制的代碼在這里都不整齊了..
花是半天時間才把比較喜歡的這個Blog的主題改成可以夠寬的顯示代碼了..
|