Java零碎知識(shí)技巧

總概

- 命名規(guī)范

- 數(shù)據(jù)類(lèi)型

- eclipse常用快捷鍵

1篇裁、java開(kāi)發(fā)中的命名規(guī)則

除去一些硬性要求,比如不能用關(guān)鍵字赡若、不能以數(shù)字開(kāi)頭等达布,最好遵循以下的建議寫(xiě)法:

1、類(lèi):

每個(gè)首字母大寫(xiě)逾冬,如 Student黍聂、HelloWorld

2、接口:

同上

3身腻、變量:

第一個(gè)單詞完全小寫(xiě)产还,后續(xù)更多的單詞首字母大寫(xiě),如 age嘀趟、ageOfMyGirlfriend

4雕沉、方法:

與變量一樣,如 show()去件、getAge()

5坡椒、常量:

所有字母大寫(xiě)。如:public static final int MAX_ROW = 100

6尤溜、包(其實(shí)就是文件夾倔叼,用于對(duì)類(lèi)進(jìn)行管理):

全部小寫(xiě),多級(jí)包用點(diǎn)隔開(kāi)宫莱。公司域名的反寫(xiě)丈攒。

如 cn.pandastudio (相當(dāng)于兩級(jí)文件夾:cn\pandastudio);

com.baidu (相當(dāng)于兩級(jí)文件夾 com\baidu)


2、Java數(shù)據(jù)類(lèi)型

基本類(lèi)型:包括8種巡验,整型(byte际插、short、int【默認(rèn)】显设、long)框弛,浮點(diǎn)型(float、double【默認(rèn)】)捕捂,字符型(char)瑟枫,布爾型(boolean)。

引用類(lèi)型:(除了基本類(lèi)型指攒,都算引用類(lèi)型)慷妙,包括數(shù)組、類(lèi)允悦、接口膝擂、lambda等。


2.1java數(shù)據(jù)類(lèi)型

注意事項(xiàng):

1隙弛、定義long型數(shù)據(jù)猿挚,在數(shù)值之后要用L做后綴(大小寫(xiě)均可,推薦大寫(xiě))驶鹉,如520000L绩蜻。

2、定義一個(gè)float型數(shù)據(jù)室埋,在數(shù)值后要加字母F做后綴(同上)

3办绝、eclipse中常用快捷鍵整理


1、快速修正:Ctrl+1

2姚淆、單詞補(bǔ)全:Alt+/

3孕蝉、刪除行:Ctrl+D

4、在當(dāng)前行上插入一行:Ctrl+Shift+Enter

5腌逢、在當(dāng)前行下插入一行: Shift+Enter

6降淮、上下移動(dòng)選中的行:Alt+Up/Down

7、反悔:Ctrl+Z

8搏讶、上下移動(dòng)選中的行:Alt+Up/Down

9佳鳖、保存:Ctrl+S

10、注釋?zhuān)篊trl+/

11媒惕、查找:Ctrl+F

12系吩、排版:Ctrl+Shift+F

13、設(shè)置縮略和展開(kāi):

縮略:Window-->preferences-->key-->Collapse All

展開(kāi):Window-->preferences-->key-->Expand All

14妒蔚、設(shè)置自動(dòng)提示:

Eclipse? -> Window -> Perferences -> Java -> Editor -> Content Assist

15穿挨、shift+enter:快速換行

4月弛、棧的深度

棧的深度與局部變量有關(guān),局部變量越多科盛,棧越淺帽衙。

驗(yàn)證,通過(guò)自己調(diào)用自己贞绵,異常等驗(yàn)證厉萝。

5、i++和++的區(qū)別

1但壮、首先,單獨(dú)拿出來(lái)說(shuō)++i和i++常侣,意思都是一樣的蜡饵,就是i=i+1。

2胳施、如果當(dāng)做運(yùn)算符來(lái)說(shuō)溯祸,就是a=i++或者a=++i這樣的形式。情況就不一樣了舞肆。

先說(shuō)a=i++焦辅,這個(gè)運(yùn)算的意思是先把i的值賦予a,然后在執(zhí)行i=i+1椿胯;

而a=++i筷登,這個(gè)的意思是先執(zhí)行i=i+1,然后在把i的值賦予a哩盲;

舉個(gè)例子來(lái)說(shuō)前方,如果一開(kāi)始i=4。

那么執(zhí)行a=i++這條語(yǔ)句之后廉油,a=4惠险,i=5;

那么執(zhí)行a=++i這條語(yǔ)句之后抒线,i=5班巩,a=5;

同理嘶炭,i--和--i的用法也是一樣的抱慌。

例如:設(shè)x = 1 , y = 2 , z = 3,則表達(dá)式y(tǒng)+=z--/++x?的值是(A )眨猎。

A. 3?? B. 3. 5??? C. 4???D. 5 ? ? ? ? ? ??

解:按從左往右先乘除后加減的順序遥缕。z--除以++x,此時(shí)z為3宵呛,x為2单匣,所以3/2取整為1,y加上后邊的結(jié)果為2+1=3。


6户秤、String創(chuàng)建的對(duì)象個(gè)數(shù)問(wèn)題

String str = "hello";

String str1 = "hello";

Syso(str==str1); ? ? ? ? ?? //比較的是地址值码秉。輸出為T(mén)rue。指向的是同一個(gè)

String str2 = new String("hello"+str); //有兩個(gè)對(duì)象鸡号。"hello"和str為同一個(gè)對(duì)象转砖,str2為另一個(gè)對(duì)象。

String str2 = new String("hell"+str);

str.equals(str1) ? ? ? ?? //String中的equal()重寫(xiě)了鲸伴,相當(dāng)于只比較數(shù)值府蔗。

7、java 內(nèi)部類(lèi)為什么不能用靜態(tài)方法 汞窗?

非static的內(nèi)部類(lèi)姓赤,在外部類(lèi)加載的時(shí)候,并不會(huì)加載它仲吏,所以它里面不能有靜態(tài)變量或者靜態(tài)方法不铆。

static類(lèi)型的屬性和方法,在類(lèi)加載的時(shí)候就會(huì)存在于內(nèi)存中裹唆。

要使用某個(gè)類(lèi)的static屬性或者方法誓斥,那么這個(gè)類(lèi)必須要加載到j(luò)vm中。

基于以上兩點(diǎn)许帐,可以看出劳坑,如果一個(gè)非static的內(nèi)部類(lèi)如果具有static的屬性或者方法,那么就會(huì)出現(xiàn)一種情況:內(nèi)部類(lèi)未加載成畦,但是卻試圖在內(nèi)存中創(chuàng)建static的屬性和方法泡垃,這當(dāng)然是錯(cuò)誤的。原因:類(lèi)還不存在羡鸥,但卻希望操作它的屬性和方法蔑穴。

8、&& 和 &

9惧浴、再談i++和++i(經(jīng)常錯(cuò)4婧汀!衷旅!無(wú)語(yǔ)??)

看個(gè)例子:

```public class Tmp {

public static void main(String[] args) {

int i = 1;

int j = 10;

do {

if (i++ > --j)

continue;

} while (i < 5);

System.out.println("i:? "+i+"? j:? "+j);

}

}```

輸出結(jié)果:

i: 5 j: 6

分析:


下面是轉(zhuǎn)載自知乎的解釋?zhuān)蓞⒖肌?/p>

(1)如果只是看i++和++i捐腿,這兩個(gè)是等價(jià)的,都等同于i=i+1柿顶,都是變量自身加1茄袖。

(2)在一般情況下,它們都是跟賦值聯(lián)系在一起嘁锯。

比如:

int a;

a=i++;//將i的值賦值給a宪祥,即a=i聂薪;然后再執(zhí)行i=i+1;

也就是【a=i++;】與【a=i; i=i+1;】等價(jià)蝗羊。

a=++i;//將i+1的值賦給a,即a=i+1;然后再執(zhí)行i=i+1藏澳;

也就是【a=++i;】與【a=i+1;i=i+1;】等價(jià)。

(3)【總結(jié)一下】

①前置++是將自身加1的值賦值給新變量耀找,同時(shí)自身也加1翔悠;

②后置++是將自身的值賦給新變量,然后才自身加1.

作者:知乎用戶(hù)

鏈接:https://www.zhihu.com/question/19811087/answer/83748442

來(lái)源:知乎

著作權(quán)歸作者所有野芒。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)蓄愁,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

10狞悲、值傳遞撮抓、引用傳遞

CSDN博客:https://blog.csdn.net/zhzhao999/article/details/53449504


11、AutoCloseable接口

從jdk1.7開(kāi)始效诅,引入了資源自動(dòng)關(guān)閉的接口AutoCloseable胀滚。一些資源也實(shí)現(xiàn)了該接口趟济,如preparedStatement乱投、Connection、InputStream顷编、outputStream等等資源接口戚炫。在使用的時(shí)候只需要把資源在try塊中用小括號(hào)括起來(lái)就可以了。

12媳纬、String str="test"和String str=new String("test")區(qū)別

該部分可以再詳細(xì)研究一下java中的特殊類(lèi)String涉及到常量池的設(shè)計(jì)思想很巧妙??

先去看看常量池的概念: http://blog.csdn.net/cquptzg/article/details/72457389

"test"是存放在常量池中的對(duì)象双肤,常量池中不會(huì)存放相同的對(duì)象,

new String("test")是存放在堆中的對(duì)象钮惠,即使內(nèi)容相同也會(huì)創(chuàng)建不同的對(duì)象茅糜。

【例】?

? ? ? ? ?? String str1 = "test";?

? ? ? ? ? ?String str2 = "test";

? ? ? ? ? ?String str3 = new String("test);

? ? ? ? ? ?String str4 = new String("test);

? ? ? ? ? ?str1==str2的值為true;因?yàn)?test"存放在常量池中素挽,所以str1與str2均是"test"的同一個(gè)引用

? ? ? ? ? ?str1==str3的值為false蔑赘;

? ? ? ? ? ?str3==str4的值為false;即使他們內(nèi)容都是"test"预明,但也會(huì)分別創(chuàng)建對(duì)象缩赛。

若用equals()方法,因?yàn)閮?nèi)容都是"test"撰糠,則結(jié)果都是ture酥馍,

【對(duì)于==與equals的疑問(wèn),跳轉(zhuǎn):http://blog.csdn.net/cquptzg/article/details/72158040】

【總結(jié)】 通過(guò)常量池創(chuàng)建的對(duì)象阅酪,若內(nèi)容相同旨袒,則只會(huì)有一個(gè)汁针,而通過(guò)new創(chuàng)建的則不管之前有沒(méi)有創(chuàng)建過(guò)內(nèi)容相同的都會(huì)在堆里新創(chuàng)建一個(gè)對(duì)象


案例分析:

String str1="java";//指向字符串池

??   String str2="blog";//指向字符串池

???? ? String?? s = str1+str2;

  +運(yùn)算符會(huì)在堆中建立起兩個(gè)String對(duì)象,這兩個(gè)對(duì)象的值分別是“java”,"blog",也就是說(shuō)從字符串常量池中復(fù)制這兩個(gè)值峦失,然后再堆中創(chuàng)建兩個(gè)對(duì)象扇丛。然后再建立對(duì)象s,然后將“javablog”的堆地址賦給s.? 這句話(huà)共創(chuàng)建了3個(gè)String對(duì)象。



String str1 = “str1”:

1尉辑、 在棧中創(chuàng)建str1的引用帆精。

2、 去常量池中查看是否有相同Unicode編碼的字符串常量隧魄。如果有將str1指向該常量卓练,如果沒(méi)有則創(chuàng)建一個(gè)內(nèi)容為”str1”的字符串常量,將str1的引用指向該常量购啄。

3襟企、 如果str1進(jìn)行了賦值str1= “123”,則棧中的str1的引用指向新的內(nèi)容為“123”的字符串常量。

4狮含、 String str1 = “str1”; String str2 = “str1”;str2的引用指向常量池中已經(jīng)存在的內(nèi)容為“str1”的常量顽悼,不會(huì)重新創(chuàng)建新的常量,str1和str2的引用指向同一個(gè)常量几迄。

str1 == str2; str1+”a” != str2+”a”;

String str1 = new String(“str1”):

1蔚龙、 在常量池中創(chuàng)建內(nèi)容為“str1”的對(duì)象,在堆中創(chuàng)建內(nèi)容為“str1”的對(duì)象映胁。

2木羹、 String str1 = new String(“str1”); String str2 = new String(“str1”);str2不會(huì)指向之前創(chuàng)建的對(duì)象,而是重新創(chuàng)建一個(gè)對(duì)象解孙。

str1 != str2;

代碼如下:

? ? ? ? String str1 = "str1";

? ? ? ? String str2 = "str1";

? ? ? ? String str3 = new String("str1");

? ? ? ? String str4 = new String("str1");

? ? ? ? System.out.println(str1==str2);//true地址一樣

? ? ? ? System.out.println(str3==str4);//false,但地址不一樣

? ? ? ? System.out.println(str3.equals(str4));//true,值一樣

? ? ? ? System.out.println(str2.equals(str3));//true,值一樣

? ? ? ? System.out.println((str1+"a")==(str2+"a"));//false;進(jìn)行了+連接地址不一樣

? ? ? ? System.out.println((str1+"a").equals((str2+"a")));//true;進(jìn)行了+連接值一樣

13坑填、聲明對(duì)象和聲明對(duì)象并賦值為null的區(qū)別,以及null調(diào)用方法弛姜,運(yùn)行時(shí)出現(xiàn)空指針異常

Object o與Object o=null的區(qū)別

class Test {

? public static void main(String[] args) {

? Object o1;

? o1.toString(); /*這里編譯不能通過(guò)脐瑰,編譯器只認(rèn)定o1是個(gè)引用,沒(méi)指向任何對(duì)象廷臼,所以不能調(diào)用方法苍在。*/

? Object o2 = null;

? o2.toString(); /*這里編譯可以過(guò),但是有空指針異常中剩,編譯器認(rèn)定o2是一個(gè)對(duì)象忌穿,雖然是一個(gè)空對(duì)象。*/

? }

}

null對(duì)象是一個(gè)特殊的對(duì)象结啼,他可以是任何類(lèi)型掠剑。他只是作為一個(gè)標(biāo)記而已,只是為了標(biāo)記不存在而存在的郊愧。也沒(méi)必要去追究他在內(nèi)存是什么樣朴译。null就是一個(gè)標(biāo)記而已井佑。容器可以接受一個(gè)空對(duì)象,但是一個(gè)空引用則是不接受的眠寿。

Object o; //這種寫(xiě)法只是分配一個(gè)引用躬翁,沒(méi)有分配內(nèi)存。

Object o = null; //這么寫(xiě)則是給引用指向了一個(gè)空對(duì)象盯拱。分配了內(nèi)存(空對(duì)象)盒发,所以編譯不會(huì)報(bào)錯(cuò),運(yùn)行時(shí)報(bào)空指針異常狡逢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宁舰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奢浑,更是在濱河造成了極大的恐慌蛮艰,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雀彼,死亡現(xiàn)場(chǎng)離奇詭異壤蚜,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)徊哑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)袜刷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人实柠,你說(shuō)我怎么就攤上這事水泉∩普牵” “怎么了窒盐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)钢拧。 經(jīng)常有香客問(wèn)我蟹漓,道長(zhǎng),這世上最難降的妖魔是什么源内? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任葡粒,我火速辦了婚禮,結(jié)果婚禮上膜钓,老公的妹妹穿的比我還像新娘允睹。我一直安慰自己萨螺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著胰丁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪葫辐。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天梅肤,我揣著相機(jī)與錄音,去河邊找鬼邑茄。 笑死姨蝴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的肺缕。 我是一名探鬼主播左医,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼同木!你這毒婦竟也來(lái)了炒辉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤泉手,失蹤者是張志新(化名)和其女友劉穎黔寇,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體斩萌,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缝裤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颊郎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片憋飞。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖姆吭,靈堂內(nèi)的尸體忽然破棺而出榛做,到底是詐尸還是另有隱情,我是刑警寧澤内狸,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布检眯,位于F島的核電站,受9級(jí)特大地震影響昆淡,放射性物質(zhì)發(fā)生泄漏锰瘸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一昂灵、第九天 我趴在偏房一處隱蔽的房頂上張望避凝。 院中可真熱鬧,春花似錦眨补、人聲如沸管削。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)含思。三九已至,卻和暖如春实蓬,著一層夾襖步出監(jiān)牢的瞬間茸俭,已是汗流浹背吊履。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留调鬓,地道東北人艇炎。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像腾窝,于是被迫代替她去往敵國(guó)和親缀踪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 入門(mén) 一個(gè)簡(jiǎn)單的Java程序 一個(gè)簡(jiǎn)單的Java程序如上虹脯。關(guān)鍵字public稱(chēng)為訪問(wèn)修飾符驴娃,它用于控制程序的其他部...
    染微言閱讀 171評(píng)論 0 0
  • 今天正式開(kāi)始學(xué)習(xí)JAVA,從b站的黑馬程序員的基礎(chǔ)視頻開(kāi)始循集。Java/安卓開(kāi)發(fā)入門(mén)基礎(chǔ)視頻主要學(xué)習(xí)了JAVA的發(fā)展...
    Geg_Wuz閱讀 481評(píng)論 2 7
  • 一唇敞、Java 簡(jiǎn)介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)...
    子非魚(yú)_t_閱讀 4,190評(píng)論 1 44
  • 作者:李相文 (一) 舉起手,心咒彤,跳到了指尖疆柔。 砰。砰镶柱。砰旷档。 門(mén)開(kāi)了。平靜的臉歇拆,坦然的笑鞋屈。他覺(jué)得有一股暖融融的春意...
    相子閱讀 510評(píng)論 0 0
  • 莫因渴望你沒(méi)有的,而錯(cuò)過(guò)你已擁有的故觅,要知道你現(xiàn)在擁有的厂庇,也曾是你渴望的——伊壁鳩魯
    虎笨笨閱讀 135評(píng)論 0 1