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