|
J2SE(Java 2 Platform Standard Edition) J2ME(Java 2 Platform Micro Edtion) J2EE(Java 2 Platform Enterprise Edition)
Java語言特點:開源 跨平臺(JVM) 面向對象等
JRE與JDK JRE(JVM和jJava類庫) JDK包含JDK,以及其他開發(fā)工具
Java源代碼----->javac編譯------>Java字節(jié)碼文件------->java執(zhí)行----->運行結果
path環(huán)境變量里面記錄的是可執(zhí)行性文件,如exe,對可執(zhí)行文件先在當前路徑去找,如果沒有找到就去path環(huán)境變量中配置的路徑去找 classpath環(huán)境變量里記錄的是java類的運行文件所在的目錄 ------------------------------------------------------------------------------------------------------------------------------------------------------------ Java語言基礎 關鍵字:全小寫 在IDE中以不同顏色顯示,goto和const作為保留字存在 標識符:就是給變量,類,接口,方法等起名字 (英文大小寫,數(shù)字,$ 和 _)以及命名法 類或接口:首字母大寫 方法或變量:首字母小寫 常量:全大寫,單詞之間用“_”隔開 注釋:// /* */ /** */ 常量:字面值常量:1.字符串常量 2.整數(shù)常量 3.小數(shù)常量 4.字符常量 5.布爾常量 6. 空常量 進制相關: 1byte = 8bit;1k = 1024byte; 1m = 1024k; 1g = 1024m;1t = 1024g 二進制(以0b開頭),八進制(以0開頭),十進制,十六進制(以0x開頭)的相互轉換 8421BCD碼四位表示一個十進制碼,十進制157 = 0001 0101 0111 原碼,反碼,補碼(計算機都是使用補碼來計算的) 原碼:最高位符號位0正1負,其余為數(shù)值位 反碼:正數(shù)反碼與原碼相同,負數(shù)反碼與符號位相同,數(shù)值位取反 補碼:正數(shù)補碼與原碼相同,負數(shù)補碼為反碼末位加一 變量:數(shù)據(jù)類型 變量名 = 初始化值 數(shù)據(jù)類型: 八種基本數(shù)據(jù)類型: byte:八位,一個字節(jié),有符號,以二進制補碼表示的整數(shù),最小值:-128(-2^7)最大值:127(2^7-1) short:16位,兩個字節(jié),有符號,以二進制補碼表示的整數(shù),最小值:-32768(-2^15)最大值:32767(2^15-1) int: 32位,四個字節(jié),有符號,以二進制補碼表示的整數(shù),最小值:-2^31 最大值:2^31-1 long: 64位,八個字節(jié),有符號,以二進制補碼表示的整數(shù),最小值:-2^63 最大值: 2^63-1 默認值:0L float:單精度 32位 四個字節(jié) 浮點數(shù) 默認值:0.0f double: 雙精度 64位 八個字節(jié) 浮點數(shù) 默認值0.0d 浮點數(shù)的默認類型位double類型 boolean:true/false 一個字節(jié) char:單一的 16 位 Unicode 字符,占兩個字節(jié),最小值是 \u0000(即為0);最大值是 \uffff(即為65,535),char 數(shù)據(jù)類型可以儲存任何字符;(可以儲存漢字) 整數(shù)默認int類型,浮點數(shù)默認double類型 級別從低到高為:byte,char,short(這三個平級)–>int–>float–>long–>double 自動類型轉換(默認轉換):從低級別到高級別,系統(tǒng)自動轉的; 強制類型轉換:什么情況下使用?把一個高級別的數(shù)賦給一個比該數(shù)的級別低的變量;目標數(shù)據(jù)類型 變量 = (目標數(shù)據(jù)類型)(被轉換的數(shù)據(jù)) float雖然占4個字節(jié),long占八個字節(jié),但是float表示范圍比long大(原因:略,可自行Google) //面試題:以下語句會報錯嗎s's's's byte a = 1 , b;fo b = a + a; //會報錯,無法編譯,因為默認轉換a為int,再從int到byte需要強制轉換 //面試題,下列輸出是多少: byte a = (byte) 214; System.out.println(a); //因為強制轉換,只截最后一個字節(jié),并且這個字節(jié)為補碼,所要做的就是把補碼轉為原碼即可 System.out.println('a'+1);
//輸出98,因為'a’為char類型,根據(jù)ACSII表轉為int 97
System.out.println('a'+1); // 98
System.out.println("a"+1); // a1
System.out.println('a'+1+"a"); //98a
//字符串后的+為字符串拼接操作
運算符: 算數(shù)運算符:“/”為除法,整數(shù)相除只能得到整數(shù),如果想要小數(shù),需要加小數(shù)點.0 "%"為取余 ++和--,放在變量前后效果不同,前面是先自增或自減再參與運算,后面是先參運算再自增或自減 注意:算數(shù)運算符的優(yōu)先級 賦值運算符:= += -= *= /= %= short f = 1; f = f+1; //會報錯cannot convert from int to short,因為會先默認轉成int類型 short f = 1; f +=1; //不會報錯,因為擴展運算符包含強制類型轉換,相當于f = (f的數(shù)據(jù)類型)(f+1) 關系運算符:== != > >= < <= 邏輯運算符:&(與) |(或) ^(異或) !(非) &&(短路與) ||(短路或) & :無論左邊結果是什么,右邊都參與運算。 &&:短路與,如果左邊為false,那么右邊不參數(shù)與運算。 |:兩邊都運算。 ||:短路或,如果左邊為true,那么右邊不參與運算。 位運算符: &(與運算) |(或運算) ^(異或運算) ~(按位取反) <<(左移) >>(右移) >>>(無符號右移) int a =1,b =2; //java實現(xiàn)兩個整數(shù)變量的交換: // 方式一:采用一個中間變量 優(yōu)點:最簡單最好理解的方式 // 方式二:可以用兩個數(shù)求和然后相減的方式 缺點:如果 x 和 y 的數(shù)值過大的話,超出 int 的值會損失精度。 a = a + b; b = a - b; a = a - b; // 方式三:利用位運算的方式進行數(shù)據(jù)的交換,思想原理是:一個數(shù)異或同一個數(shù)兩次,結果還是那個數(shù),而且不會超出int范圍(最佳實現(xiàn)) a = a^b; b = a^b; a = a^b; // 方式四:利用反射 最為麻煩,切效率低。完全炫技使用 //最有效的方法算出2乘以8等于幾? // 2<<3; 表示 2向左移 3位:2 * 2^3(2的3次方) = 2 * 8; // 因為一個數(shù)左移 n位,就相當于 2的 n次方,那么一個數(shù)乘以 8只要將其左移 3位即可,而為運算符的效率最高,所以 2乘以 8等于幾的最有效方法是 2<<3。 三目運算符: 比較表達式?表達式1:表達式2; if語句:if(判斷語句){執(zhí)行語句}else if(判斷語句){執(zhí)行語句}else{執(zhí)行語句} switch語句: switch表達式支持的數(shù)據(jù)類型:基本數(shù)據(jù)類型:byte, short, char, int;包裝數(shù)據(jù)類型:Byte, Short, Character, Integer;枚舉類型:Enum;字符串類型:String(Jdk 7+ 開始支持) 注意:case 里面必須跟 break,不然程序會一個個 case 執(zhí)行下去,直到最后一個 break 的 case 或者 default 出現(xiàn)。 case后面的值只能是常量,不能是變量,而且,多個case后面的值不能重復 for循環(huán)語句:for(初始化語句;判斷語句;控制語句){執(zhí)行語句;} while循環(huán)語句:初始化語句 while(判斷語句){執(zhí)行語句;控制語句;} 能用for盡量用for,因為for中初始化語句中的變量可以盡早在內存中消失,使用while循環(huán)可以繼續(xù)使用控制語句中的變量 do...while循環(huán)語句:初始化語句 do{執(zhí)行 語句;控制語句;}while(判斷語句); do...while循環(huán)至少執(zhí)行一次循環(huán)體 控制跳轉語句:break 跳出單層循環(huán);跳出指定循環(huán),使用標簽名(不常用) continue 跳出一次循環(huán),進入下一次 方法:格式: 修飾符 返回值類型 方法名 (參數(shù)類型 參數(shù)名,......){執(zhí)行語句; return 返回值;} 實際參數(shù):實際參與運算的參數(shù);形式參數(shù):方法定義的,用于接收實際參數(shù) 方法重載:方法名相同,參數(shù)個數(shù)以及參數(shù)類型不同;與返回值類型無關,只看方法名和參數(shù)列表;調用時虛擬機通過參數(shù)列表的不同來區(qū)分同方法名 數(shù)組:存儲基本數(shù)據(jù)類型,也可以存儲引用數(shù)據(jù)類型。 格式:數(shù)據(jù)類型[] 數(shù)組名; 數(shù)組類型[][] 數(shù)組名 = new 數(shù)據(jù)類型[m][n]; 數(shù)據(jù)類型[][] 變量名 = new 數(shù)據(jù)類型[m][]; 數(shù)據(jù)類型[][] 變量名 = {{1,2,3},{1},{1,2}}; 初始化:動態(tài)初始化:指定數(shù)組長度,由系統(tǒng)分配初始值:數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型][數(shù)組長度] 靜態(tài)初始化:指定每個元素的初始值,由系統(tǒng)判斷數(shù)組長度:數(shù)組類型[] 數(shù)組名 = {1,2,3}、 遍歷數(shù)組: 獲取最值: 數(shù)組逆序: 查找元素: Java中的參數(shù)傳遞問題: 基本類型:形式參數(shù)的改變對實際參數(shù)沒有影響。 引用類型:形式參數(shù)的改變直接影響實際參數(shù)。因為引用類型做形參,調用的是地址值,對同一塊內存進行修改。 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Java中的內存分配: 棧:存儲局部變量;用完就釋放;棧內存的兩個引用指向同一個堆內存空間,無論哪個棧內存中的變量的操作都是針對堆內的同一個地方 堆:new出來的東西;每個new出來的東西都有地址值;每個變量都有默認值byte,short, int,long 0;float,double 0.0; char '\u0000'; boolean false; 引用類型 null; 使用完畢就成了垃圾,沒有立即回收,等GC空閑時回收 方法區(qū): 本地方法區(qū): 寄存器: |
|
|