java筆記-1

配置java環境變量:重點內容**
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後面一般跟的都是類的構造器
成員:寫在類體括號裏面的

內存空間的分配:
內存分爲:
棧:存放簡單數據類型變量(值和變量名都存在棧中),存放引用數據類型的變量名以及它所指向的實例的首地址
堆:存放引用數據類型的實例

發佈了17 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章