Head First Java 十大遺珠之憾

十大遺珠之憾

10 位操作

  • byte有8位圆恤,short有16位脚曾,int有32位

  • 按位非運(yùn)算符:~
    0變1,1變0
    int x = 10;//位組合00001010
    x = ~x;//位組合11110101

  • 按位與運(yùn)算符:&
    兩個(gè)位都為1园细,結(jié)果才為1
    int x = 10;//位組合00001010
    int y = 6;//位組合00000110
    int a = x & y;//位組合00000010

  • 按位或運(yùn)算符:|
    兩個(gè)位都為0各吨,結(jié)果才為0
    int x = 10;//位組合00001010
    int y = 6;//位組合00000110
    int a = x | y;//位組合00001110

  • 按位異或運(yùn)算符:^
    兩個(gè)位相同為0叛甫,不相同為1
    int x = 10;//位組合00001010
    int y = 6;//位組合00000110
    int a = x ^ y;//位組合00001100

  • 負(fù)數(shù)的二進(jìn)制:
    負(fù)數(shù)的二進(jìn)制位組合等于正數(shù)的二進(jìn)制位組合非運(yùn)算后加1
    int x = 11;//位組合00001011
    int y = -11;//位組合11110101

  • 左移運(yùn)算符:
    各二進(jìn)位全部左移若干位肛真,高位丟棄谐丢,低位補(bǔ)0,正負(fù)號(hào)可能改變
    int x = -11;//位組合11110101
    int y = x << 2;//位組合11010100

  • 算術(shù)右移運(yùn)算符:
    各二進(jìn)位全部右移若干位蚓让,對(duì)無(wú)符號(hào)數(shù)乾忱,高位補(bǔ)0,有符號(hào)數(shù)補(bǔ)符號(hào)位历极,正負(fù)號(hào)不變
    int x = -11;//位組合11110101
    int y = x >> 2;//位組合11111101

  • 邏輯右移運(yùn)算符(無(wú)符號(hào)右移運(yùn)算符):
    各二進(jìn)位全部右移若干位窄瘟,對(duì)無(wú)符號(hào)數(shù),高位補(bǔ)0趟卸,有符號(hào)數(shù)蹄葱,高位也補(bǔ)0
    int x = -11;//位組合11110101
    int y = x >>> 2;//位組合00111101

9 不變性

  • String和包裝類(lèi)有具有不變性,對(duì)象創(chuàng)建后就無(wú)法改變?cè)搶?duì)象的值

8 斷言

  • 斷言用來(lái)幫助你在開(kāi)發(fā)過(guò)程中除錯(cuò)锄列,使用方式和println()差不多
    assert (height > 0);
    // if true, program continues normally
    // if false, throw an AssertionError
    也可以利用斷言加上一點(diǎn)信息:
    assert (height > 0) : “height = “ + height + “ weight = “ + weight;
    帶有斷言的編譯(沒(méi)有什么不一樣):
    javac TestDriveGame.java
    帶有斷言的執(zhí)行:
    java -ea TestDriveGame

7 塊區(qū)域

  • 局部變量的生命周期范圍只限于聲明它的方法還呆在棧上的期間內(nèi)新蟆,但有一種變量比局部變量生命周期更短,那就是在塊區(qū)域{}內(nèi)的塊變量右蕊,例如for琼稻,while,if里的變量饶囚,使用塊變量比使用局部變量更方便除錯(cuò)帕翻,且擴(kuò)充性更好

6 鏈接的調(diào)用

StringBuffer sb = new StringBuffer(“spring”);
sb = sb.delete(3,6).insert(2,”umme”).deleteCharAt(1);
System.out.println(“sb = “ + sb);
// result is sb = summer
等同于:
sb = sb.delete(3,6);
sb = sb.insert(2,”umme”);
sb = sb.deleteCharAt(1);

5 Anonymous和Static Nested Classes

  • 嵌套類(lèi)(nested classes)和內(nèi)部類(lèi)(inner classes)的區(qū)別:任何一個(gè)被定義在另一個(gè)類(lèi)范圍內(nèi)的類(lèi)都稱為嵌套類(lèi),不管它是匿名萝风、靜態(tài)嘀掸、正常或其他類(lèi)型规惰。但非靜態(tài)的嵌套類(lèi)我們一般稱之為內(nèi)部類(lèi)睬塌。所以基本上所有內(nèi)部類(lèi)都是嵌套類(lèi),但不是所有嵌套類(lèi)都是內(nèi)部類(lèi)

  • 靜態(tài)嵌套類(lèi)
    靜態(tài)嵌套很像一般非嵌套,他們沒(méi)有與外層對(duì)象產(chǎn)生任何特殊關(guān)聯(lián)揩晴。但因?yàn)檫€被認(rèn)為是外層的一個(gè)成員勋陪,所以能夠存取任何外層的私用成員,當(dāng)然只限于是靜態(tài)的硫兰,這是因?yàn)殪o態(tài)沒(méi)有實(shí)例

public class FooOuter {
    static class BarInner {
        void sayIt() {
            System.out.println(“method of a static inner class”);
        }
    }
}

class Test {
    public static void main(String[] args) {
        FooOuter.BarInner foo = new FooOuter.BarInner();
        foo.sayIt();
    }
}
  • 匿名內(nèi)部類(lèi)
import java.awt.event.*;
import javax.swing.*;
public class TestAnon {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JButton button = new JButton(“click”);
        frame.getContentPane().add(button);
        // button.addActionListener(quitListener);
        //此處的ActionListener其實(shí)是一個(gè)接口诅愚,而我們不能創(chuàng)建接口的實(shí)例!但這種情況的語(yǔ)法就是這樣
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ev) {
                System.exit(0);
            }
        }) 
    }
}

4 存取權(quán)限和存取修飾符(誰(shuí)可以看到什么)

  • public 代表任何代碼都可以存取劫映。一般用來(lái)修飾類(lèi)违孝、常量(static final variables)、對(duì)外方法(getter泳赋,setter)雌桑、大部分構(gòu)造函數(shù)
  • private 代表只有同一類(lèi)中的代碼才能存取,它是對(duì)類(lèi)而不是對(duì)對(duì)象設(shè)限祖今。一般用來(lái)修飾大部分實(shí)例變量筹燕,以及不想被外部調(diào)用的方法
  • default 只有同一包中的默認(rèn)事物才能存取。如果被default修飾(就是不修飾)就代表只有同一個(gè)包內(nèi)的代碼才能存取被修飾的事物衅鹿,不能存取意味著你連用都不能用到相關(guān)的代碼撒踪。如果一個(gè)類(lèi)被default修飾,那么類(lèi)中的方法即使是被public修飾大渤,它也不能被包外的代碼使用
  • protected 基本等同于default制妄,只有一個(gè)地方不一樣,被default修飾的事物允許包外的子類(lèi)通過(guò)繼承來(lái)獲得它的功能泵三。例如包外有一個(gè)子類(lèi)有對(duì)父類(lèi)的引用耕捞,父類(lèi)里面有一個(gè)被protected修飾的方法,那子類(lèi)是不能直接用父類(lèi)的引用調(diào)用這個(gè)方法的烫幕,唯一的方法就是繼承父類(lèi)從而得到方法

3 String和StringBuilder的方法

  • 常用的類(lèi)是String和StringBuilder(因?yàn)镾tring有不變性俺抽,使用StringBuilder操作String會(huì)更有效率,更省空間)

  • String和StringBuilder都有的方法:
    char charAt(int index);//獲取指定位置的字符
    int length();
    String substring(int start,int end);//取出指定片段的字符串
    String toString();

  • 連接字符串方法:
    String concat(String str);//String的方法
    String append(String str);//Stringbuilder的方法

  • String的方法:
    String replace(char old,char new);//替換所有old字符為new字符
    char[] toCharArray();
    String toLowerCase();//全部小寫(xiě)
    String toUpperCase();
    String trim();//去除首尾空格
    static String valueOf(char[] data);//轉(zhuǎn)化為字符串
    static String valueOf(int i);

  • StringBuilder的方法:
    StringBuilder delete(int start,int end);
    StringBuilder insert(int offset,String str);
    StringBuilder replace(int start, int end, String str);
    StringBuilder reverse();
    void setCharAt (int index,char ch);

2 多維數(shù)組

  • 在Java中如果你創(chuàng)建了一個(gè)4*2的數(shù)組较曼,這個(gè)數(shù)組實(shí)際上由5個(gè)數(shù)組組成磷斧,例如
    int[][] a =new int[][]{{1,2},{3,4},{5,6},{7,8}};

  • 操作多維數(shù)組
    存取第三個(gè)數(shù)組的第二個(gè)元素:int x = a[2][1];
    對(duì)某個(gè)子數(shù)組創(chuàng)建引用:int[] copy = a[1];
    初始化2*3數(shù)組:int[][] x = {{2,3,4},{5,6,7}};
    創(chuàng)建非常規(guī)數(shù)組:int[][]y = new int[2][];
    y[0] = new int[3];
    y[1] = new int[5];

1 枚舉(又稱為枚舉類(lèi)型或Enum)

  • 枚舉是一種特殊的類(lèi),Enum的構(gòu)造函數(shù)會(huì)對(duì)每個(gè)被聲明的Enum值執(zhí)行一次捷犹,每個(gè)Enum都有內(nèi)置的values()方法弛饭,通常會(huì)用在for循環(huán)里
public class HfjEnum {
    enum Names {
        JERRY(“l(fā)ead guitar”) {
            public String sings() {
                return“plaintively”;
            }
        },
        BOBBY(“rhythm guitar”) {
            public String sings() {
                return“hoarsely”;
            }
        },
        PHIL(“bass”);

        private String instrument;

        Names(String instrument) {
            this.instrument = instrument;
        }

        public String getInstrument() {
            return this.instrument;
        }

        public String sings() {
            return“occasionally”;
        }
    }

    public static void main(String[] args) {
        for (Names n : Names.values()) {
            System.out.print(n);
            System.out.print(“, instrument:“+n.getInstrument());
            System.out.println(“, sings:“+n.sings());
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市萍歉,隨后出現(xiàn)的幾起案子侣颂,更是在濱河造成了極大的恐慌,老刑警劉巖枪孩,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件憔晒,死亡現(xiàn)場(chǎng)離奇詭異藻肄,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拒担,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)嘹屯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人澎蛛,你說(shuō)我怎么就攤上這事抚垄⊥闪” “怎么了谋逻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)桐经。 經(jīng)常有香客問(wèn)我毁兆,道長(zhǎng),這世上最難降的妖魔是什么阴挣? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任气堕,我火速辦了婚禮,結(jié)果婚禮上畔咧,老公的妹妹穿的比我還像新娘茎芭。我一直安慰自己,他們只是感情好誓沸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布梅桩。 她就那樣靜靜地躺著,像睡著了一般拜隧。 火紅的嫁衣襯著肌膚如雪宿百。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天洪添,我揣著相機(jī)與錄音垦页,去河邊找鬼。 笑死干奢,一個(gè)胖子當(dāng)著我的面吹牛痊焊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播忿峻,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼宋光,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了炭菌?” 一聲冷哼從身側(cè)響起罪佳,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎黑低,沒(méi)想到半個(gè)月后赘艳,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體酌毡,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蕾管,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了枷踏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掰曾,死狀恐怖旭蠕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旷坦,我是刑警寧澤掏熬,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站秒梅,受9級(jí)特大地震影響旗芬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捆蜀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一疮丛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辆它,春花似錦誊薄、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至洞辣,卻和暖如春咐刨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扬霜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工定鸟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人著瓶。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓联予,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親材原。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沸久,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法余蟹,內(nèi)部類(lèi)的語(yǔ)法卷胯,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法威酒,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,639評(píng)論 18 399
  • Java 語(yǔ)言支持的類(lèi)型分為兩類(lèi):基本類(lèi)型和引用類(lèi)型窑睁。整型(byte 1, short 2, int 4, lon...
    xiaogmail閱讀 1,348評(píng)論 0 10
  • 集合框架: 1)特點(diǎn):存儲(chǔ)對(duì)象挺峡;長(zhǎng)度可變;存儲(chǔ)對(duì)象的類(lèi)型可不同2)Collection(1)List:有序的担钮;元素...
    Demo_Yang閱讀 1,264評(píng)論 0 4
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,529評(píng)論 3 93
  • 身心的累 精神的累箫津,比起肉體的狭姨,物質(zhì)上的,更加折磨人苏遥。 我不知道對(duì)于一段感情饼拍,兩個(gè)人在一起,到底是什么暖眼,究竟是怎樣...
    0fda63c551f9閱讀 282評(píng)論 0 0