日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Java復(fù)習(xí),Java知識(shí)點(diǎn)以及Java面試題(一)

 路人甲Java 2021-07-18

J2SE(Java 2 Platform Standard Edition)

J2ME(Java 2 Platform Micro Edtion)

J2EE(Java 2 Platform Enterprise Edition)

 

Java語(yǔ)言特點(diǎn):開(kāi)源 跨平臺(tái)(JVM) 面向?qū)ο蟮?/p>

 

JRE與JDK

JRE(JVM和jJava類庫(kù)) 

JDK包含JDK,以及其他開(kāi)發(fā)工具

 

Java源代碼----->javac編譯------>Java字節(jié)碼文件------->java執(zhí)行----->運(yùn)行結(jié)果

 

path環(huán)境變量里面記錄的是可執(zhí)行性文件,如exe,對(duì)可執(zhí)行文件先在當(dāng)前路徑去找,如果沒(méi)有找到就去path環(huán)境變量中配置的路徑去找

classpath環(huán)境變量里記錄的是java類的運(yùn)行文件所在的目錄

------------------------------------------------------------------------------------------------------------------------------------------------------------

Java語(yǔ)言基礎(chǔ)

關(guān)鍵字:全小寫 在IDE中以不同顏色顯示,goto和const作為保留字存在

標(biāo)識(shí)符:就是給變量,類,接口,方法等起名字 (英文大小寫,數(shù)字,$ 和 _)以及命名法

  類或接口:首字母大寫

  方法或變量:首字母小寫

  常量:全大寫,單詞之間用“_”隔開(kāi)

注釋://     /* */      /** */

常量:字面值常量:1.字符串常量 2.整數(shù)常量 3.小數(shù)常量 4.字符常量 5.布爾常量 6. 空常量

進(jìn)制相關(guān):

  1byte = 8bit;1k = 1024byte; 1m = 1024k; 1g = 1024m;1t = 1024g

  二進(jìn)制(以0b開(kāi)頭),八進(jìn)制(以0開(kāi)頭),十進(jìn)制,十六進(jìn)制(以0x開(kāi)頭)的相互轉(zhuǎn)換

  8421BCD碼四位表示一個(gè)十進(jìn)制碼,十進(jìn)制157 = 0001 0101 0111

  原碼,反碼,補(bǔ)碼(計(jì)算機(jī)都是使用補(bǔ)碼來(lái)計(jì)算的)

    原碼:最高位符號(hào)位0正1負(fù),其余為數(shù)值位

    反碼:正數(shù)反碼與原碼相同,負(fù)數(shù)反碼與符號(hào)位相同,數(shù)值位取反

    補(bǔ)碼:正數(shù)補(bǔ)碼與原碼相同,負(fù)數(shù)補(bǔ)碼為反碼末位加一

變量:數(shù)據(jù)類型 變量名 = 初始化值

數(shù)據(jù)類型:

  八種基本數(shù)據(jù)類型:

  byte:八位,一個(gè)字節(jié),有符號(hào),以二進(jìn)制補(bǔ)碼表示的整數(shù),最小值:-128(-2^7)最大值:127(2^7-1)

  short:16位,兩個(gè)字節(jié),有符號(hào),以二進(jìn)制補(bǔ)碼表示的整數(shù),最小值:-32768(-2^15)最大值:32767(2^15-1)

  int:  32位,四個(gè)字節(jié),有符號(hào),以二進(jìn)制補(bǔ)碼表示的整數(shù),最小值:-2^31  最大值:2^31-1

  long:  64位,八個(gè)字節(jié),有符號(hào),以二進(jìn)制補(bǔ)碼表示的整數(shù),最小值:-2^63  最大值: 2^63-1 默認(rèn)值:0L

  float:?jiǎn)尉?32位 四個(gè)字節(jié) 浮點(diǎn)數(shù) 默認(rèn)值:0.0f

  double: 雙精度 64位 八個(gè)字節(jié) 浮點(diǎn)數(shù)  默認(rèn)值0.0d 浮點(diǎn)數(shù)的默認(rèn)類型位double類型

  boolean:true/false 一個(gè)字節(jié)

  char:?jiǎn)我坏?16 位 Unicode 字符,占兩個(gè)字節(jié),最小值是 \u0000(即為0);最大值是 \uffff(即為65,535),char 數(shù)據(jù)類型可以儲(chǔ)存任何字符;(可以儲(chǔ)存漢字)

  整數(shù)默認(rèn)int類型,浮點(diǎn)數(shù)默認(rèn)double類型

  級(jí)別從低到高為:byte,char,short(這三個(gè)平級(jí))–>int–>float–>long–>double

  自動(dòng)類型轉(zhuǎn)換(默認(rèn)轉(zhuǎn)換):從低級(jí)別到高級(jí)別,系統(tǒng)自動(dòng)轉(zhuǎn)的;

  強(qiáng)制類型轉(zhuǎn)換:什么情況下使用?把一個(gè)高級(jí)別的數(shù)賦給一個(gè)比該數(shù)的級(jí)別低的變量;目標(biāo)數(shù)據(jù)類型 變量 = (目標(biāo)數(shù)據(jù)類型)(被轉(zhuǎn)換的數(shù)據(jù))

  float雖然占4個(gè)字節(jié),long占八個(gè)字節(jié),但是float表示范圍比long大(原因:略,可自行Google)

//面試題:以下語(yǔ)句會(huì)報(bào)錯(cuò)嗎s's's's
byte a = 1 , b;fo
b = a + a;     //會(huì)報(bào)錯(cuò),無(wú)法編譯,因?yàn)槟J(rèn)轉(zhuǎn)換a為int,再?gòu)膇nt到byte需要強(qiáng)制轉(zhuǎn)換
//面試題,下列輸出是多少:
byte a = (byte) 214;
System.out.println(a);
//因?yàn)閺?qiáng)制轉(zhuǎn)換,只截最后一個(gè)字節(jié),并且這個(gè)字節(jié)為補(bǔ)碼,所要做的就是把補(bǔ)碼轉(zhuǎn)為原碼即可
System.out.println('a'+1);
//輸出98,因?yàn)?a’為char類型,根據(jù)ACSII表轉(zhuǎn)為int 97
System.out.println('a'+1);   // 98
System.out.println("a"+1);  // a1
System.out.println('a'+1+"a"); //98a
//字符串后的+為字符串拼接操作

運(yùn)算符:

  算數(shù)運(yùn)算符:“/”為除法,整數(shù)相除只能得到整數(shù),如果想要小數(shù),需要加小數(shù)點(diǎn).0

        "%"為取余

        ++和--,放在變量前后效果不同,前面是先自增或自減再參與運(yùn)算,后面是先參運(yùn)算再自增或自減

        注意:算數(shù)運(yùn)算符的優(yōu)先級(jí)

  賦值運(yùn)算符:= += -= *= /= %=

short f = 1;
f = f+1;
//會(huì)報(bào)錯(cuò)cannot convert from int to short,因?yàn)闀?huì)先默認(rèn)轉(zhuǎn)成int類型
short f = 1;
f +=1;
//不會(huì)報(bào)錯(cuò),因?yàn)閿U(kuò)展運(yùn)算符包含強(qiáng)制類型轉(zhuǎn)換,相當(dāng)于f = (f的數(shù)據(jù)類型)(f+1)

  關(guān)系運(yùn)算符:==  != > >= < <=

  邏輯運(yùn)算符:&(與) |(或) ^(異或) !(非) &&(短路與) ||(短路或)

      & :無(wú)論左邊結(jié)果是什么,右邊都參與運(yùn)算。 &&:短路與,如果左邊為false,那么右邊不參數(shù)與運(yùn)算。

      |:兩邊都運(yùn)算。 ||:短路或,如果左邊為true,那么右邊不參與運(yùn)算。

  位運(yùn)算符: &(與運(yùn)算) |(或運(yùn)算) ^(異或運(yùn)算) ~(按位取反)  <<(左移) >>(右移) >>>(無(wú)符號(hào)右移)

int a =1,b =2;
//java實(shí)現(xiàn)兩個(gè)整數(shù)變量的交換:
//  方式一:采用一個(gè)中間變量 優(yōu)點(diǎn):最簡(jiǎn)單最好理解的方式
//  方式二:可以用兩個(gè)數(shù)求和然后相減的方式 缺點(diǎn):如果 x 和 y 的數(shù)值過(guò)大的話,超出 int 的值會(huì)損失精度。
a = a + b;
b = a - b;
a = a - b;
//  方式三:利用位運(yùn)算的方式進(jìn)行數(shù)據(jù)的交換,思想原理是:一個(gè)數(shù)異或同一個(gè)數(shù)兩次,結(jié)果還是那個(gè)數(shù),而且不會(huì)超出int范圍(最佳實(shí)現(xiàn))
a = a^b;
b = a^b;
a = a^b;
//  方式四:利用反射 最為麻煩,切效率低。完全炫技使用
//最有效的方法算出2乘以8等于幾?
//  2<<3; 表示 2向左移 3位:2 * 2^3(2的3次方) = 2 * 8;
//  因?yàn)橐粋€(gè)數(shù)左移 n位,就相當(dāng)于 2的 n次方,那么一個(gè)數(shù)乘以 8只要將其左移 3位即可,而為運(yùn)算符的效率最高,所以 2乘以 8等于幾的最有效方法是 2<<3。

  三目運(yùn)算符:  比較表達(dá)式?表達(dá)式1:表達(dá)式2;

if語(yǔ)句:if(判斷語(yǔ)句){執(zhí)行語(yǔ)句}else if(判斷語(yǔ)句){執(zhí)行語(yǔ)句}else{執(zhí)行語(yǔ)句}

switch語(yǔ)句: switch表達(dá)式支持的數(shù)據(jù)類型:基本數(shù)據(jù)類型:byte, short, char, int;包裝數(shù)據(jù)類型:Byte, Short, Character, Integer;枚舉類型:Enum;字符串類型:String(Jdk 7+ 開(kāi)始支持)

      注意:case 里面必須跟 break,不然程序會(huì)一個(gè)個(gè) case 執(zhí)行下去,直到最后一個(gè) break 的 case 或者 default 出現(xiàn)。

         case后面的值只能是常量,不能是變量,而且,多個(gè)case后面的值不能重復(fù)

for循環(huán)語(yǔ)句:for(初始化語(yǔ)句;判斷語(yǔ)句;控制語(yǔ)句){執(zhí)行語(yǔ)句;}

while循環(huán)語(yǔ)句:初始化語(yǔ)句 while(判斷語(yǔ)句){執(zhí)行語(yǔ)句;控制語(yǔ)句;}   

    能用for盡量用for,因?yàn)閒or中初始化語(yǔ)句中的變量可以盡早在內(nèi)存中消失,使用while循環(huán)可以繼續(xù)使用控制語(yǔ)句中的變量

do...while循環(huán)語(yǔ)句:初始化語(yǔ)句 do{執(zhí)行 語(yǔ)句;控制語(yǔ)句;}while(判斷語(yǔ)句); do...while循環(huán)至少執(zhí)行一次循環(huán)體

控制跳轉(zhuǎn)語(yǔ)句:break  跳出單層循環(huán);跳出指定循環(huán),使用標(biāo)簽名(不常用)

       continue 跳出一次循環(huán),進(jìn)入下一次

方法:格式: 修飾符 返回值類型 方法名 (參數(shù)類型 參數(shù)名,......){執(zhí)行語(yǔ)句; return 返回值;}

      實(shí)際參數(shù):實(shí)際參與運(yùn)算的參數(shù);形式參數(shù):方法定義的,用于接收實(shí)際參數(shù)

   方法重載:方法名相同,參數(shù)個(gè)數(shù)以及參數(shù)類型不同;與返回值類型無(wú)關(guān),只看方法名和參數(shù)列表;調(diào)用時(shí)虛擬機(jī)通過(guò)參數(shù)列表的不同來(lái)區(qū)分同方法名

數(shù)組:存儲(chǔ)基本數(shù)據(jù)類型,也可以存儲(chǔ)引用數(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}};

   初始化:動(dòng)態(tài)初始化:指定數(shù)組長(zhǎng)度,由系統(tǒng)分配初始值:數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型][數(shù)組長(zhǎng)度]

       靜態(tài)初始化:指定每個(gè)元素的初始值,由系統(tǒng)判斷數(shù)組長(zhǎng)度:數(shù)組類型[] 數(shù)組名 = {1,2,3}、

   遍歷數(shù)組:

   獲取最值:

   數(shù)組逆序:

   查找元素:

Java中的參數(shù)傳遞問(wèn)題:

  基本類型:形式參數(shù)的改變對(duì)實(shí)際參數(shù)沒(méi)有影響。

  引用類型:形式參數(shù)的改變直接影響實(shí)際參數(shù)。因?yàn)橐妙愋妥鲂螀?,調(diào)用的是地址值,對(duì)同一塊內(nèi)存進(jìn)行修改。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Java中的內(nèi)存分配:

棧:存儲(chǔ)局部變量;用完就釋放;棧內(nèi)存的兩個(gè)引用指向同一個(gè)堆內(nèi)存空間,無(wú)論哪個(gè)棧內(nèi)存中的變量的操作都是針對(duì)堆內(nèi)的同一個(gè)地方

堆:new出來(lái)的東西;每個(gè)new出來(lái)的東西都有地址值;每個(gè)變量都有默認(rèn)值byte,short, int,long 0;float,double 0.0; char '\u0000'; boolean false; 引用類型 null; 使用完畢就成了垃圾,沒(méi)有立即回收,等GC空閑時(shí)回收

方法區(qū):

本地方法區(qū):

寄存器:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多