?? 01_corejava_basic.txt
字號:
唐亮老師:
課程項目:
網上機票訂票系統.
課程安排
基本語法
面向對象語法
高級編程接口
圖形界面
多線程
I/O流
網絡編程
jdk5.0的新特性
推薦書籍
不同的人的層次不同,所以推薦的書要因人而異.
到書店著本書看20分鐘以上.
到書店發現了那么多的書,就會產生一種學習的緊迫感.然后想自己要多長時間看完什么什么書,最后一般是買回去也不看.
大學教材是大學的教授為了評職稱寫的書.
推薦:
jdk學習筆記 林信良
java面向對象編程 孫衛琴
基礎偏差:
java2全方位學習 朱仲杰
有一定的java基礎:
核心技術卷一卷二 sun為了能夠系統的學習.
java編程思想 希望熟悉java底層的人看的.
Java版本 java Edition
JAVASE
用來作應用程序開發
JAVAEE
用來完成企業級開發,分布式的大型應用
JAVAME
小型應用程序
java早先是應用在嵌入式的應用的.sun也是希望能夠整合所有家電廠商.
微軟:希望能夠在家電上使用的統一的平臺.
這是個發展的趨勢,希望可以給家電來進行編程和控制.
1995年1月發布了java,先今已經占據了50%的編程市場
1972年推出的c語言
80年代中期推出的c++語言
2000年左右就已經在
為什么發展的這么快
1.硬件性能的提升是很重要,
c++和java比,java最大的缺陷是性能.c++由于是面向機器的,它的性能很高的.
java由于有了jvm的作了中間的轉換,所以java性能比較低.但是硬件是在不斷的提升帶來的性能.
java的優勢在他的編程效率.比C++要高的多.
所以java的編程是很簡單的.
語言的終極發展方向:
自然語言來完成編程.
人工知能和語音識別是最熱門的兩個課題.
語音識別很簡單,但現在真正要解決的是語意的識別.
2.web互聯網 applet flash 1995-1999 2000cn
java和c++的對比
sun給java定義的時候下了十一個定語.
1.簡單
和c++相比是簡單的多,java取出了很多讓人迷惑的地方.
2.安全
針對c++,很多c++程序崩潰的原因,指針使用的錯誤.往往把有效的數據做更改.
c++申請的空間,需要自己釋放,這些原因都會導制c++的崩潰.
java中的jvm幫助你回收對象資源,
3.跨平臺
c++,源文件-->編譯-->目標碼(機器碼)-->連接-->可執行文件.
c++編譯的過程已經加入了所在平臺的信息.
在windows平臺和liunx平臺的編譯過程是不同的,所以c++是源碼跨平臺.
c++源碼就涉及到了版權的問題.
java, 源文件-->編譯-->字節碼(不是機器碼)-->裝載JVM-->載jvm支持下運行.
java的編譯過程沒有加入機器平臺的信息,這個字節碼的格式是sun自己定義的.
java同樣一個源碼,不論載那個平臺去編譯得到的字節碼都是一樣的.
java的跨平臺更深入了一個層次.
java在jvm的層次上不跨平臺.如果要運行java語言那么需要一個和底層操作系統相關的jvm來解釋字節碼文件,然后讓操作系統來執行它.
java虛擬機jvm屏蔽掉底層操作系統的差異.
java的概念
JDK
java 開發工具包,提供了api,文檔,等等.
JRE
java 運行環境,只負責去運行.
JVM
java 虛擬機,解釋字節碼文件.它不能單獨下載,它嵌入在JRE里面
這三個都是軟件.
在http://java.sun.com網站上可以找到.java1.5.0_06版本
要根據操作系統平臺來下載.
JDK目錄內容
JAVA_HOME內容:
.../jre/ java的完整的jre
.../bin/ java的一些可執行文件,編譯執行調試要用的命令
.../jre/lib/rt.jar 里面裝有字節碼(字節碼文件)
java開發環境的搭建:
liunx 下環境搭建:
vi .bash_profile
JAVA_HOME = /opt/jdk1.5.0_06
PATH = $PATH:$JAVA_HOME/bin:.
CLASSPATH = .(字節碼文件搜索路徑)
export JAVA_HOME CLASSPATH PATH
source .bash_profile 只在當前shell有效,要注銷一次.
java程序
1.源文件是個普通文本格式文件,擴展名為.java
2.一個Java源文件中可以定義多個class但是最多只能有一個class用public修改,并且該public的class,類名必須和文件名一致.
3.一個可運行的java應用程序,有且只有一個main()方法,并且main方法的簽名是固定的,它是整個程序的入口方法.
java找尋字節碼:
1.
2.
3.
編譯:
javac
編譯完后,我們定義了多少個類就會有多少個字節碼文件.
運行:
java
主方法執行之后的結果.
加載的過程:
jvm在磁盤找.class文件,加載到內存的過程.
查找過程:
1.在當前目路下的同一個包里面找.
2.在jre/lib/xxx.jar文件.rt.jar是java的開發人員給我們建立的.
3.在classpath里面去找.
jvm在查找的過程中會自動的去查找這個
注意:常常我們自己寫的類的類名回合jdk給我們提供的類名相同,這個時候jvm也就無法正確的加載我們想要的類型到jvm,程序也就出現了錯誤.
當然如果我使用全限定名.
package 包
它是用來管理組織我們不同的類的一些結構(目錄),
如果要把所有類放在同一個目錄下,那么就很容易出現同名的問題.
java中的包結構,等同于目錄結構.
編譯好之后,是我們源文件的包結構對應的是字節碼放在那個目錄下.
包的命名是有些約定俗成的規范
包名:開頭com.tarena.Hello//所屬公司
下來 .abs //項目名
數據原型 .model// 模塊名
.submodel//子模塊
做顯示 .view//顯示名
映射到目錄
com/tarena/abs/model
com/tarena/abs/model/submodel
com/tarena/abs/view
如果我們按照這樣的規范來命名包,最終所有不同的java代碼都不會沖突.
加包之后需要注意的地方:
帶有包的編譯:
javac -d .
1.把編譯好的源字節碼文件放在指定的目錄下.
2.如果源文件聲明了包,使用-d選項,系統將會自動的在目標目錄下按照包結構生成子目錄.
帶有包的運行:
如果直接的去運行類名,那么就出現了問題,
一旦你的程序加了包,那么這個類所屬的下面就要加入包名.
java 后面要運行的類,就要指定他所屬的包名.
并且還要保證,在執行運行命令的時候,必須是在com的所在的上一級目錄.
classpath的含義
javac -d d:\corejava 文件名.java
創建一個d:\corejava目錄.
然后在corejava目錄下就有了com目錄.
然后如果在當前目錄下去運行,那么就找不到了.
如果希望我們的java命令在任何地方都能運行剛剛放的程序,那么就應當在classpath里面加上要查找的位置.
重要命令
important java commands
javadoc//自動文檔生成工具
用來生成程序文檔.
利用javadoc把源文件里加的一些注釋生成一個文檔.
以一個文件為例.用/** */這種文檔注釋.可以用javadoc把文檔提取出來.
文檔注釋
可以加在類的前面
可以加在屬性的前面
可以加在方法的前面
javadoc -d d:\doc String.java 把String.java文件中的文檔注釋生成提示文檔.
jar//
操作歸檔文件jar文件的操作.
創建,更新,展開
創建歸檔文件,java程序開發好之后,最終給用戶使用的時候,我們交給用戶的是字節碼,源碼可以不用給,最終都是完成com/....,最終把整個com目錄發送過去.
最好是把所有的內容都打包成一個.jar文件.最后只用傳送一個文件.
以后要使用第三方廠商提供的軟件包的時候,我們怎樣來使用這些提供的類.
jar文件里面可以直接的使用jar文家里面提供的內容.
只要我的classpath能找到這個jar文件,就可以使用里面包含的類了.
創建
jar -cvf //c:create v:visable f:file文件名(創建的jar文件的名字,自己指定)
jar -cvf abc.jar (要壓縮的目錄)//com子目錄.
class ....abc.jar
java Hello
運行jar文件里面有main方法的類.
java -classpath abc.jar Hello
jar文件的名字也算一級目錄.
import
告訴編譯器,使用的類是那個包下的類.
jar import package
string system 是放在java.lang包下面的.
如果要使用String 那么就應該要import java.lang.*;
java.lang包下面所有的類,可以不經到如直接使用.只有一個包是這樣的.就因為這個包下的類太常使用了.
lang == language的縮寫,語言包.
java.awt;javax.swing;圖形開發
java.io;做輸入輸出的.
java.net;做網絡開發的.
java.util;提供了一些工具.
這些包的分類,在以后的學習會一一的講解.
書上的第一章已經完成了.
回憶開發過程.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -