##########################################################################
JAVA 構成的要件分為幾項:屬性、方法、類別、建構子。
以下列程式為例:
public class Puggy{ //類別
String name = "小黑"; //物件變數
static String type = "拉布拉多";//類別變數
void skill(){ //物件方法
String s1 = "拿報紙"; //區域變數
System.out.println(s1);
}
static void skill_1(){ //類別方法
System.out.println("拎施鞋");
}
Puggy()[] //建構子
}
##########################################################################
註解:
1. // 單行註解
2. /*.....*/ 多行註解
3. /**...*/ 文件註解,編譯指令:javadoc -verbose -private O.java
##########################################################################
練習『文件註解』:Puppy.java
/**這是寵物的類別*/
public class Puppy{
/**寵物的名稱*/
public static String name = "小黃";
/**寵物的品種*/
public static String type = "拉布拉多";
/**寵物的顏色*/
public static String color = "黃色";
/**寵物的技能*/
public static void skill(){
System.out.println("拿施鞋");
}
}
cmd:
javadoc -verbose -private Puppy.java
點開 index.html 可以看到說明文件。
##########################################################################
// package 與 import
// package 程式,路徑 C:\java\water\Fish.java
package water;
public class Fish{
public static String name = "小金";
public static String type = "金魚";
public static String color = "金";
public static void skill(){
System.out.println("吐泡泡");
}
}
// 主程式,路徑 C:\java\PetStore.java
public class PetStore{
public static void main(String args[]){
String fishname = water.Fish.name;
String fishtype = water.Fish.type;
String fishcolor = water.Fish.color;
System.out.println("我有一隻優雅的" + fishtype + "牠的名字叫" + fishname + ",牠身上的顏色是:" + fishcolor + "色");
System.out.println("每當牠生氣的時候都會");
water.Fish.skill();
}
}
cmd:
javac PetStore.java
java PetStore
// 猜猜哪個 import 寫法,效能較快?
// 1.
import java.io.File;
File f;
f = new File("test.txt");
// 2.
import java.io.*;
import java.awt.*;
File f;
f = new File("test.txt");
// 3.
import java.io.*;
File f;
f = new File("test.txt");
// 4.
java.io.File f;
f = new java.io.File("test.txt");
// 答:以上四種的執行效能都一樣。
// 程式撰寫優先: package > import > classpath
##########################################################################
存取修飾元:
private 同一個 class 下才可進行存取。
default 同一個 package 下的 class 才可進行存取。
protected 不同 package 可以透過繼承。
public 皆可存取。
一般類別只有 public 和 default 兩種存取權限,『內部類別』才有四種存取權限。
##########################################################################
Java 命名規則:
1. 第一個字必須是英文字母、_ 或 $。
2. Java 有大小寫之分。
3. 不可以是關鍵字。
因此推薦使用駝峰式大小寫命名,例: AppStore
##########################################################################
資料型態 bytes bit 範圍 預設值
char 2 16 '1u0000'~'1uFFFF'(0~65535) '1u0000'
byte 1 8 -128~127 0
short 2 16 -32768~32762 0
int 4 32 -2031次方~(2031次方-1) 0
char c = '中'; //可以
char c1= '1u4E2D'; //可以 Unicode 編碼
char c2= 65; //可以 ASCII 編碼
char c3= '\0'; //可以 \0 為空字元
byte b = 255; //不行,超出資料範圍
short a = 'A'; //可以,會轉換成數字
int a = '爪'; //可以,會轉成 ASCII 數字
int b = '哇'; //可以,會轉成 ASCII 數字
int c = a+b; //可以,會轉成 ASCII 數字
// Java 預設值
整數 int
浮點數 double
資料型態 bytes bit 範圍 預設值
long 8 64 -2063次方~(2063次方-1) 0L
float 4 32 -3.4E+38~3.4E+38 0.0f
double 8 64 -1.7E+308~1.7E+308 0.0
boolean 1 8 true/false false
long l = 10; //不行,因為 long 宣告要有 L
float f = 2.5; //不行,因為 float 宣告要有 f
double d = 2.5f //可以,因為 dobule 的資料範圍大於 float
boolean b = 0; //不行,Java 的布林值只有 true / false
##########################################################################
資料態的轉換:
1. 小轉大:無風險,自動轉換
2. 大轉小:風險大,手動 coding
(欲轉換的型態)變數名稱;
(float)b;
// 判斷 compile 會不會過?
int i = 1;
double d;
d = i;
i = d;
//答:i=d; 會有問題,必須改成 i = (int)d;
// 判斷 compile 會不會過?
byte b=3;
short s=5;
short c=b+s;
//答:compile 會錯,因為整數預設為 int ,
//所以整數運算 short c=b+s; 必須改為 int c=b+s;
##########################################################################
陣列:
[] > 指的是陣列中元素的位置或陣列物件的長度
int a[]=new int[5]{1,2,3,4,5]; \\這是錯誤的,已設有初值,不能再設長度。
int a[]=new int[]{1,2,3,4,5];
int B[]=new int[5];
B[0]=3;
B[1]=2;
//陣列取長度:
陣列變數.length //陣列取長度是一種屬性。
字串變數.length(); //字串取長度是一個方法,後面有括號。
//比較 String 與 chat
String char
資料型態 參考資料型態 基本資料型態
圈住符號 " " ' '
比較運算 == 或 equals() ==
抽象表現 是一個 class 16-bit unicod
補充,參考資料型態有三種:String, Array, Object.
##########################################################################
算數運算子:
+ 正加 //正或負為單元運算子
- 負減
*
/
%
++
...
//---------------------------
byte x=1, y=2, z;
z = x+y;
//這是錯的,要先相加再做轉換:z=(byte)(x+y);
//---------------------------
int a=0, b=0;
b = a++ + ++a - a++;
a= 3
b= 0
//Ans:b = 0(1) + 2(2) - 2(3)
//---------------------------
int a=0, b=0;
b= a-- + --a - a--;
a= -3
b= 0
//Ans:b = 0(-1) + -2(-2) - -2(-3)
##########################################################################
關系運算子:
>
<
>=
<=
==
!=
int a=1, b=2;
a==b False
a>b False
a<b Ture
a>=b False
a<=b Ture
##########################################################################
邏輯運算子: 短路 short-circuit
不論是 T 或 F 都會執行
& && 第一組邏輯是 F 時,就跳出
| || 第一組邏輯是 T 時,就跳出
int a=1, b=2;
(a<b) && (a>0); T,T Ture
(a<b) & (a>0); T,T Ture
(a>b) | (a<0); F,F False
(a>b) || (a<0); F,F False
!(a>b); F,NOT Ture
(b>a) | (a<0); T Ture | 後面不執行
(b>a) || (a<0); T,F Ture
(a<b) & (a<0); T,F False
//---------------------------
int a=1, b=2;
if((a<b) | (++a>0))
a=2
//---------------------------
int a=1, b=2;
if((a<b) || (a++>0))
a=1
##########################################################################
指定運算子:
=
+=
-=
*=
/=
%=
&=
//---------------------------
int a=2;
a=a*2-3;
a=1
//---------------------------
int a=2;
a*=2-3;
a=-2
//---------------------------
String s1="JAVA";
String s2="SCJP";
int i=1;
int j=2;
System.out.println(i+j); //印出 3
System.out.println(s1+j); //印出 JAVA2
//---------------------------
String s1="420";
s1+=42;
System.out.println(s1); //印出 42042
//---------------------------
X = 5*3 < 20 & 3+7 > 9-1 || 20 >= 20 -30 && False
T & T || 跳出
##########################################################################
流程控制:
條件式流程控制 if-else, switch-case
迴圈式 for, while, do-while, foreach
例外控制 try-catch-finally, throws
特定控制單元 break, continue, label
label 為流程控制記號,不能改變程式執行流程的順序。
//---------------------------
//if_else
int a=1;
if(a>0)
System.out.println("A");
// System.out.println("B");
else
System.out.println("C");
System.out.println("D");
輸出:
A
D
//---------------------------
//switch case
1. case 的比對不可以重複
2. switch(x)
x 必須是 int 以下的值域和 String (int, char, byte, short)
3. default 關鍵字可以單獨存在
4. default 只能有一個
為何需要 break?
因為 case 不能改變程式執行的流程,它只是一個記號,所以需要 break 來改變目前流程>。
語法:
switch(x){
case 1:
......
break;
case 2:
......
break;
default:
}
//---------------------------
//for
public class Fest{
public static void main(String avgs[]){
for(int i=1;i<=10;i++){
if(i==8)
break;
if(i%3==0)
continue;
System.out.println(i);
}
}
}
輸出:12457
沒有留言:
張貼留言