Core Java Day01
先把以前的筆記整理后發上來,剩下的盡快補齊。
1 java優勢:跨平臺性
虛擬機:java運行時系統,就是一個字節碼解釋器,虛擬機將字節碼解釋成機器碼給cpu執行.
在java中我們用虛擬機來屏蔽底層操作系統的差異.
編譯:生成可執行文件像a.out,a.exe 效率高,但不跨平臺
解釋:解釋器把源文件逐行解釋,跨平臺但效率不高
在java中:先編譯后解釋
把.java文件編譯成.class字節碼文件.(平臺中立的) 比重新解釋快一點.
由虛擬機解釋執行.class字節碼文件
jre=虛擬機+編譯器
jdk=虛擬機+編譯器+類庫 //jdk又稱java開發工具包
2 第一個程序:
public class Test{
public static void main(String [] args){
System.out.println(“hello world”);
}
}
任何代碼都要封裝在類里.
一個文件里只能有一個公開類,文件名要和公開類類名一致.如上例文件只能叫Test.java
一個源文件里可以有多個類,一個類生成一個.class文件,.class文件和類對應.
編譯:javac + 文件名
運行:java + 類名
print 打印一行
println:打印一行換行
3 環境變量:
JAVA_HOME:/opt/1.5.06 指向jdk安裝目錄. 給別的軟件用的.
PATH:$JAVA_HOME/bin 一些jdk命令放在bin目錄下比如java javac命令
CLASS_PATH:. 類路徑,告訴虛擬機去哪找類, 點表示當前路徑
4 包:把不同的源文件放在不同目錄下.
關鍵字:package //一個源文件只能有一個package語句.
加了包結構的類編譯時javac –d . Test.java會自動生成目錄結構,點表當前目錄,前后都有空格.
運行時要寫全限定名: 包名.類名 java p1.HelloWorld
運行時要在包的上一級目錄
5 import:是一個聲明 后面遇到類名可以不寫包名.
import p6.p7.*;表示以后用p6包下的p7子包下的所有類不用在寫包結構了.
import只能表示類,不能表示子包
java.lang.* 這個包下的類是默認引入的.
一個類里可以有0個或多個import,跟c++里的include不一樣
6 注釋
//單行注釋 到本行結束的所有字符會被編譯器忽略.
/* */ 多行注釋 在/* */之間的所有字符會被編譯器忽略.
/** */ 文檔注釋 java特有的, 在/** */之間的所有字符會被編譯器忽略.
javadoc 工具,把java源程序中這種注釋抽取出來形成html頁面.
javadoc –d doc Tarena.java
7 標識符命名規則:包括包名,類名,屬性名,方法名等等
(1) 由字母,數字,下劃線,$組成,不能以數字開頭.
(2) 大小寫敏感.
(3) 不得使用java中的關鍵字和保留字.
關鍵字:都是小寫的 jdk1.4多了 assert關鍵字 jdk1.5多了enum 關鍵字
保留字:goto 和const
字面值:true 和false 是boolean類型字面值
習慣:
(1) 標識符要符合語義信息.
(2) 包名所有字母小寫
(3) 類名每個單詞首字母大寫,其它小寫 //TarenaStudent
(4) 變量和方法: 第一個單詞小寫,從第二個單詞開始首字母大寫 //tarenaStudent
(5) 常量: 所有字母大寫
8 局部變量:定義在方法里的變量.
(1)必須要先賦值,后使用.用之前要初始化,否則通不過編譯.
(2)作用范圍:定義開始到定義它的代碼塊結束.
(3)重合范圍內,不允許2個局部變量命名沖突.
9 java中的數據類型:基本數據類型和對象類型
基本類型:8種 與整型有關的前4種
(1) byte 1B -128-127
(2) short 2B -32768-32767
(3) int 4B -2147483648-2147483647
(4) long 8B 加后綴L 賦給long類型變量
(5) float 4B 加后綴f
(6) double 8B 加后綴d 或不跟
(7) boolean 1B 字面值 true 和false //整數和boolean值不能相互轉換了.
(8) char 2B 采用unicode編碼方式.全球統一的字符集. // char c='達'; 可以保存漢字
任何國家編碼方式都兼容ASCII編碼, 編碼方式和解碼方式不同才會出現亂碼.
char類型的三種字面值.
char c='a';
char c= 97;
char c='\u0061'; //unicode 碼值是用16進制表示的,一個字節可以用2個16進制表示
byte a=1;
byte b=2;
byte c=a+b; //編譯出錯自動類型提升成int
自動類型提升,把高字節轉成低字節,需要作強制類型轉換. byte c=(byte)a+b;
類型自動提升規則:
a和b作某種運算
a和b中有double,結果就是double
a和b中有float,結果就是float
a和b中有long,結果就是long
除此之外,結果都是int
對象類型: String
java中一個字符串是一個對象.這個對象有字面值,java中內置重載了+號,表示字符串的連接
String s=”abcd” //雙引號引起來
"1"+2+3 結果 "123"
1+2+"3" 結果 "33"
int x=1;
int y=2;
System.out.println(x+"+"+y+"="+(x+y));
10 運算符:
byte a=20;
a+=10; //自加沒有自動類型提升問題
a=a+10;
>> 有符號右移,補符號位
>>> 右移后高位都補0;
a1=1000;
System.out.println(a1>>1); a1=500
System.out.println(a1>>1); a1=500
a2= -1000;
System.out.println(a2>>1); a2= -500;
System.out.println(a2>>1); a2=214553;
5/2=2 //整數除整數是整數
5.0/2=2.5
11 程序流程控制:
if else: 和c++的區別就在條件語句if(true)
switch(byte short int char) //必須是整形兼容的
循環:
for(int i=0;i<=10;i++){語句塊} //知道循環次數時使用
while (條件){語句塊} //不知道循環次數時使用
do{語句塊} while(條件) //至少執行一次
posted on 2007-08-20 20:10 Vince Fu 閱讀(228) 評論(1) 編輯 收藏 所屬分類: Core Java筆記