JAVA_HOME:配置JDK的目錄
CLASSPATH:指定到哪里去找運(yùn)行時需要用到的類代碼(字節(jié)碼)
PATH:指定可執(zhí)行程序的位置
LINUX系統(tǒng)(在" .bash_profile "下的環(huán)境變量設(shè)置)
JAVA_HOME=/opt/jdk1.5.0_06
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$PATH:$JAVA_HOME/bin:.
export JAVA_HOME CLASSPATH PATH (將指定的環(huán)境變量聲明為全局的)
windows系統(tǒng):
右擊我的電腦-->屬性-->高級-->環(huán)境變量
Java的運(yùn)行過程:
編譯:生成可執(zhí)行文件,如C++中利用g++生成a.out,效率高,但不跨平臺
解釋:解釋器把源文件逐行解釋,跨平臺但效率不高
在java中:先編譯后解釋,把.java文件編譯成.class字節(jié)碼文件
Java源代碼文件(.java文件)--->
Java編譯器(javac)--->
Java字節(jié)碼文件(.class文件,平臺無關(guān)的)--->
Java解釋器(java),執(zhí)行Java字節(jié)碼
Java的垃圾回收:
由一個后臺線程gc進(jìn)行垃圾回收
虛擬機(jī)判定內(nèi)存不夠的時候會中斷代碼的運(yùn)行,這時候gc才進(jìn)行垃圾回收
缺點(diǎn):不能夠精確的去回收內(nèi)存
java.lang.System.gc(); 建議回收內(nèi)存,但系統(tǒng)不一定回應(yīng),他會先去看內(nèi)存是否夠用,夠用則不予理睬,不夠用才會去進(jìn)行垃圾回收
內(nèi)存中什么算是垃圾:
不在被引用的對象(局部變量,沒有指針指向的)
java的安全性:
沙箱機(jī)制:只能做沙箱允許的操作
通過下面環(huán)節(jié),實現(xiàn)安全
加載有用的類文件,不需要的不加載
校驗字節(jié)碼,查看允許的操作
查看代碼和虛擬機(jī)的特性是否相符
查看代碼是否有破壞性
查看是否有違規(guī)操作,如越界
查看類型是否匹配,類型轉(zhuǎn)換是否能正確執(zhí)行
源程序:
package mypack; //相當(dāng)于一個目錄
public class HelloWorld{
public static void main(String[] args){
System.out.println(“Hello World”);
}
}
注:
1、文件名必須和public修飾的類名一致,以.java作為文件后綴,如果定義的類不是public的,則文件名與類名可以不同。
2、一個.java文件中可以有多個class,但是只有一個public修飾的類。
3、java源代碼文件編譯后,一個類對應(yīng)生成一個.class文件
4、一個java應(yīng)用程序應(yīng)該包含一個main()方法,而且其簽名是固定的,它是應(yīng)用程序的入口方法,可以定義在任意一個類中,不一定是public修飾的類
編譯:javac -d . HelloWorld.java
含有包的類,在編譯的時候最好用上面的格式,-d指的是讓該類生成的時候按照包結(jié)構(gòu)去生成," . "指的是在當(dāng)前路徑下生成
如果不用上面的格式,也可以用javac HelloWorld.java,但是需要注意的是包結(jié)構(gòu)就要由自己去建立,然后將生成的.class文件放到該目錄下
執(zhí)行:java mypack.HelloWorld
將字節(jié)碼文件交給Java虛擬機(jī)去解釋執(zhí)行
需要注意的事,必須使用包名.類名去解釋執(zhí)行
包(package):把源文件放在目錄下
由于工程的需要,將不同的源文件放在不同的目錄下,從而引入了包。
包可以看作就是一個存放java源文件的目錄。
在源碼中聲明一個包名:package p;(只能放在第一行,且最多只能是一行)
如果指定多層包,那么在包名之間我們可以用.作為分隔符:package p1.p2.p3.p4;
用“javac HelloWorld.java –d 絕對路徑”,編譯后生成的字節(jié)碼文件就會放在指定的包結(jié)構(gòu)下
執(zhí)行該程序需要用" java 包名.類名 "
引進(jìn)包中的某個類:import 包名.類名;
引進(jìn)包中的所有類:import 包名.*;
注釋:
// 單行注釋, 到本行結(jié)束的所有字符會被編譯器忽略
/* */ 多行注釋, 在/* */之間的所有字符會被編譯器忽略
/** */ 文檔注釋, java特有的,在/** */之間的所有字符會被編譯器忽略
可以用javadoc把java源程序中這種注釋抽取出來形成html頁面(只有寫在包,類,屬性,方法,構(gòu)造器,引入之前的注釋才可以進(jìn)行抽取)
標(biāo)識符:
命名規(guī)則:
(1) 由字母、數(shù)字、下劃線、$組成,不能以數(shù)字開頭
(2) 大小寫敏感
(3) 不得使用java中的關(guān)鍵字和保留字
關(guān)鍵字:都是小寫的,jdk1.2多了strictfp(經(jīng)準(zhǔn)浮點(diǎn)型),關(guān)鍵字 jdk1.4多了assert(斷言)關(guān)鍵字, jdk1.5多了enum(枚舉) 關(guān)鍵字
隨著學(xué)習(xí)進(jìn)度,會慢慢接觸到的
true、false、null嚴(yán)格說不應(yīng)該算關(guān)鍵字,應(yīng)稱其為保留字更合適
習(xí)慣:
(1) 標(biāo)識符要符合語義信息
(2) 包名所有字母小寫
(3) 類名每個單詞首字母大寫,其它小寫 //TarenaStudent
(4) 變量和方法:第一個單詞小寫,從第二個單詞開始首字母大寫 //tarenaStudent
(5) 常量:所有字母大寫,每個單詞之間用" _ "連接
基本數(shù)據(jù)類型:8種
1) 整型
byte 1B 8位 -128到127
short 2B 16位 -2^15到(2^15)-1
int 4B 32位 -2^31到(2^31)-1
long 8B 64位 -2^63到(2^63)-1
2) 浮點(diǎn)類型
float 4B 32位
double 8B 64位
3) 字符類型
char 2B 16位
4) 布爾型 1B
boolean false/true
注:
1、Java中的自動類型提升問題。
1)、正向過程:從低字節(jié)到高字節(jié)可以自動轉(zhuǎn)換。
byte->short->int->long->float->double
2)、逆向過程:從高字節(jié)到低字節(jié)用強(qiáng)制類型轉(zhuǎn)換。
例:int a = (int)4.562;
注:逆向轉(zhuǎn)換將丟失精度。
2、boolean:只有true和false。
3、char:Java中用" \u四位十六進(jìn)制的數(shù)字 (即使在注釋中出現(xiàn)\u,后面如果跟的不是4個數(shù)字,也會報錯)"表示將字符轉(zhuǎn)換成對應(yīng)的unicode編碼,字符類型要用單引號括起來。
4、黙認(rèn)浮點(diǎn)類型為double,float數(shù)據(jù)類型有一個后綴為" f "或" F "。
5、long類型有一個后綴,為" l " 或者" L "
引用數(shù)據(jù)類型:
類、接口、數(shù)組
引用類型 變量名 = new 引用類型名(參數(shù)); //new后面一般跟的都是類的構(gòu)造器
成員:寫在類體括號里面的
內(nèi)存空間的分配:
內(nèi)存分為:
棧:存放簡單數(shù)據(jù)類型變量(值和變量名都存在棧中),存放引用數(shù)據(jù)類型的變量名以及它所指向的實例的首地址
堆:存放引用數(shù)據(jù)類型的實例
posted on 2008-10-14 19:44
礦礦 閱讀(429)
評論(0) 編輯 收藏