static關鍵字
做用:沒有static在類中定義的【數據和功能】(成員變量和成員方法),
都是屬於對象的,若是【數據和功能】只是跟類有關係,那麼咱們能夠經過
staic關鍵字修飾,變爲(靜態變量和靜態方法)-屬於類。java
靜態變量
語法:static +成員變量數組
靜態方法
語法:static +成員方法
使用靜態變量和靜態方法
1)類名.靜態變量或方法(推薦)----》本類中使用能夠省略->類名.
2)對象引用.靜態變量或方法this
注意點:
1)成員變量跟對象相關,每一個對象存儲一份數組,靜態變量跟類相關,靜態變量只存儲一份。
2)成員方法屬於對象,須要對象調用成員方法,成員方法能夠使用this,靜態方法是類去調用,沒有對象。
靜態方法不能使用this。spa
java內存區域
棧:局部變量
堆:new 的對象
方法區:類的信息(class字節碼數據),靜態變量線程
gc垃圾回收
做用:回收java堆裏的垃圾(沒有引用指向的對象)翻譯
局部變量的回收--》編譯器自動回收,當局部變量做用域結束則自動回收。
對象的回收--》對象是經過引用操做,沒有引用指向的對象,沒有用,就能夠回收---》gc回收對象
gc---》是一個後臺的線程
線程:一個線程就是一個工做者,一個執行翻譯代碼的人。
運行java程序有兩個線程(同時工做)
1)main線程---》負責把main的代碼執行完成
2)gc線程---》負責回收垃圾內存
gc回收垃圾的注意點
1)回收的垃圾是沒有引用指向的對象
2)默認狀況是內存不足才啓動進行回收。
3)通知gc進行回收System.gc()
4)對象被回收的時候gc會調用對象的finallize方法
5)內存滿了,而且沒有垃圾對象,就會內存溢出錯誤作用域
pakcage包cmd
做用:組織管理類,把一些有相同功能的類放到一個包下,經過包名就管理。
打包:把類放入指定包裏
語法:package 一級包名.二級包名...;
位置:java文件的第一行代碼
做用:把當前java文件的全部類打到某一個包下。
打包以後類的使用
1)不須要(完整類路徑和import導入)直接經過類名使用
a)java.lang包的全部類
b)同一個包的類
2)完整類路徑:包名.類名
3)import導入:
位置:pakcgae語句以後,類定義以前
a)import 包名.類名;導入指定包的指定類,導入以後能夠直接經過類名訪問指定類。
b)import 包名.*;導入指定包的全部類,導入以後能夠直接經過類名訪問該包全部類。
注意,不包含子包的類。
例如:import java.util.*;導入不能使用java.util.jar裏的全部類。
classpath類的路徑
classpath:存儲的是咱們項目使用不少第三方的jar文件的路徑。
jar文件:壓縮文件,壓縮了不少的class文件(不少的功能)。
配置能classpath就能夠使用其路徑包含的jar文件的class的功能。
cmd編譯運行1)環境變量配置classpath2)javac或java的-cp配置classpath