1.java跨平臺運行的原理
在須要運行在java的操做系統上,先安裝一個JVM(Java Virtual Machine)便可
由JVM負責java程序的運行,實現跨平臺,使其具備良好的可移植性html
2.怎麼實現讓經常使用的java,javac在任何路徑下均可以被執行
設置環境變量java
系統變量→新建 JAVA_HOME 變量 。變量值填寫jdk的安裝目錄小程序
系統變量→尋找 Path 變量→編輯在變量值最後輸入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意若是是win7系統,則原來Path的變量值末尾有沒有;號,若是沒有,先輸入;號再輸入上面的代碼;若是是win10系統,那麼直接新建就能夠)數組
系統變量→新建 CLASSPATH 變量,變量值填寫 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一點)服務器
注:設置path環境時:%JAVA_HOME%\bin(%%取路徑)oracle
新建:JAVA_HOME (java的bin目錄;是我爲了java相關的軟件使用java,java的服務器軟件)函數
3.JDK包括了JRE,JRE(java運行環境)包括JVM優化
4.JVM只識別字節碼,不能直接識別java源代碼 先編譯後執行.class文件
.class(字節碼文件)
5.若是類名有Public,則文件名必須與類名相同
若是沒有public,則文件名和類名能夠不同編碼
6.標識符:程序中凡是本身起的名字
規則:1.由英文字母,數字,下劃線,$組成
2.不能以數字開頭,不能和關鍵字同名
3.嚴格區分大小寫spa
7.常量類型及舉例
888//整數常量
88.88//小數常量
"hello world"//字符串常量
'K'//字符常量
true,false//布爾值
null//引用類型的常量
8.java的進制
十進制
八進制:二進制每三位轉成一位,二進制三位數最大的是111,等於7,是八進制中最大的數
十六進制:二進制每四位轉成一位,二進制四位數最大的是1111,等於15,是十六進制中最大的數
位權:從0開始,從低位到高位
9.負數的二進制:其正數的二進制按位取反再加1(注:有符號二進制數最小爲10000000,不是11111111,能夠根據含義驗證其正確性)
10.變量:內存中的一個存儲區域
該區域有本身的名稱(變量名)和類型(數據類型)
該區域的數據能夠在同一類型範圍內不斷變化
爲何要定義變量:用來不斷的存放同一類型的常量,並加以重複利用
11.java的變量類型
數據類型的做用:
1.決定變量佔多大的內存
2.內部存儲的數據
數據類型:基本數據類型:數值型(整數類型(byte,short,int,long),浮點類型(float,double))
字符型(char)
布爾型(boolean)
引用數據類型:類(class)
接口(interface)
數組
整型默認:int 浮點型默認:doubles
long型後若是不加L則默認爲int型,浮點型若是不加F則默認爲double型
一個字節表示的範圍(考慮正負):-(2^(8*字節數-1))到2^(8*字節數-1)-1
八大基本數值類型:
整型:
byte:字節型,佔一個字節,-128~127
short:短整型,2個字節,-32768~32767
int:整型,4個字節
long:長整型,8個字節
浮點型:
float:單精度浮點型,精確到小數後第7位,4個字節
double:雙精度浮點型,精確到小數點後16位,8個字節
布爾類型:
boolean(true,false):一個字節
字符串:char,unicode:2個字節
經常使用的unicode編碼:a:97 A:65 0:48
12.類型轉換:
自動類型轉換(隱式類型轉換)
強制類型轉換(顯示類型轉換)
數據類型級別高低:byte,short,char-->int-->long-->float-->double
13.全部的byte、short、char的值將被提高到int型
byte ss=8;//右邊是int,編譯沒報錯,說明內部作了轉換,內部砍掉了前3個字節,高級別到低級別,十分少
14.運算符:用以表示數據的運算、賦值和比較
分爲:算術運算符,賦值運算符,比較運算符,邏輯運算符,位移運算符
15."+"除了字符串相加的功能外,還能把非字符串轉換成字符串
如:"x"+123==>"x123"
若是對負數取模,能夠把模數負號忽略不記,如:5%-2=1
但被模數是負數就另當別論
對於除號"/",它的整數除和小數除是有區別的:整數之間只保留整數部分而捨棄小數部分
16."&"和"&&"的區別:單與時,左邊的不管真假,右邊的都進行運算:
雙與時,若是左邊爲真,右邊參與運算,若是左邊爲假,那麼右邊不會參與運算
17."|"和"||"的區別同理:雙或時,左邊爲真右邊不運算
18."^"異或與"|"或的不一樣之處:當左右都爲true時,結果爲false
19.if語句的第二種格式的簡寫格式。格式是固定的,要求記住。
變量=(條件表示式)?表達式1:表達式2;
注:a,每一種格式都是單條語句。
b,第二種格式與簡寫格式的區別:簡寫格式運算完要有值出現。好處是 能夠寫在其餘表達式中。
c,條件表達式不管寫成什麼樣子,只看最終的結構是不是true 或者 false;
20.switch特色:
注:a,switch語句選擇的類型只有四種:byte,short,int , char。
b,case之間與default沒有順序。先執行第一個case,沒有匹配的case執行default。
c,結束switch語句的兩種狀況:遇到break,執行到switch語句結束。
d,若是匹配的case或者default沒有對應的break,那麼程序會繼續向下執行,運行能夠執行的語句,直到遇到break或者switch結尾結束。
21.什麼是函數?
函數就是程序中一段獨立的小程序。
Java中函數的格式:
返回值類型 函數名(參數類型 形式參數1,參數類型 形式參數2,……)
{
執行語句;
return 返回值;
}
22.函數特色
它是程序中一段獨立的小程序。
它能夠實現獨立的功能。
它只有被調用纔會執行。
它能夠被重複使用。
23.函數的重載
在同一個類中,容許存在一個以上的同名函數,只要它們的參數個數或者參數類型不一樣便可。
存在的緣由:
方便於閱讀,優化了程序設計。
特色:
與返回值類型無關,只看參數列表。
24.開闢不一樣內存空間是爲了對每一片內存中的數據都有不一樣的處理方式,提升效率。
棧內存的特色:
存儲局部變量,空間不用時自動釋放內存。
堆內存的特色:
存儲數組和對象,經過new關鍵字創建的實體都存放在堆內存當中。
實體都有一個內存地址值。
對內存中的變量都有默認初始化值。
垃圾回收機制,Java特有的內存管理機制,在不定時的時間內將垃圾清除釋放空間。
25.引用
強引用(StrongReference)
咱們使用的大部分引用實際上都是強引用,這是使用最廣泛的引用。若是一個對象具備強引用,那就相似於必不可少的生活用品,垃圾回收器毫不會回收它。當內存空 間不足,Java虛擬機寧願拋出OutOfMemoryError錯誤,使程序異常終止,也不會靠隨意回收具備強引用的對象來解決內存不足問題。
軟引用(SoftReference)
若是內存空間足夠,垃圾回收器就不會回收它,若是內存空間不足了,就會回收這些對象的內存。只要垃圾回收器沒有回收它,該對象就能夠被程序使用。
弱引用(WeakReference)
在垃圾回收器線程掃描它 所管轄的內存區域的過程當中,一旦發現了只具備弱引用的對象,無論當前內存空間足夠與否,都會回收它的內存。不過,因爲垃圾回收器是一個優先級很低的線程, 所以不必定會很快發現那些只具備弱引用的對象。
虛引用(PhantomReference)
若是一個對象僅持有虛引用,那麼它就和沒有任何引用同樣,在任什麼時候候均可能被垃圾回收。