<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qqjianyue代碼工

    砌java代碼
    posts - 62, comments - 9, trackbacks - 0, articles - 10
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Java 常考基礎題

    Posted on 2008-11-09 10:26 Qzi 閱讀(326) 評論(0)  編輯  收藏 所屬分類: java foundation
    基本類型:
    布爾類型:boolean不能夠自動也不能強制轉換成其他類型,但是可以進行&,&&,|,||運算
    字符類型:char(16)其他基本類型不能夠自動轉變為字符類型,但可以強制轉換為char,但是可以有截斷現象
    整形類型:byte(8),short(16),int(32),long(64)初始化的時候都是使用整數字面量直接賦值,但是byte與byte,short與short變量相加,默認都得到int的值,所以必須強制轉換才能夠返回原來類型的值(例如:(byte)(b1+b2))
    浮點類型:float(32),double(64)浮點數的字面量默認都是double類型,所以需要強制轉換成float才能夠初始化float,或者加上f或F后綴。(例如float f1 = 1.4F或者float f1 = (float)1.4

    整形還可以使用八進制(以0開頭的整形數字字面量)、十六進制(以0x開頭的整形字面量)初始化;
    浮點型:字面量不可以是八進制十六進制,但int可以自動轉化為浮點,所以仍然可以使用8進制16進制初始化,但是可以使用浮點計數法初始化,同樣可以加上f或d后綴,例1.23e+33F等
    字符型char可以直接使用

    unicode轉義符:
    \uXXXX 四個16進制的數,在文本里面就是代表著某個字符,所以可以'\uXXXX'初始化一個char,可以\u0022\uXXXX\u0022初始化一個String,因為剛好\u0022代表雙引號。當然\uXXXX不能是雙引號,否則就編譯出錯了。

    自動類型轉換:byte---short---int---long---float---double
    但是short與char不能夠相互自動轉換,但是可以相互強制轉換
    整型字面量可以初始化char,只要不超過65535的范圍,也就是也能夠使用8進制16進制初始化,但是整型變量不能夠賦值給char;
    char可以自動轉換成int及以上

    變量聲明與定義:
    int[] intArray;    //OK
    int intArray[];    //OK
    前面的加上 “= new int[變量or常量]” 都是可以的,但是“= new int(5)”是錯誤的
    int[] intArray[];  //OK,但是代表的是數組的數組
    int[5] intArray;  //False
    int intArray[5];  //False

    三目運算符:
    ?:返回不同類型問題,跟C++稍微不同,無論返回值在第一表達式還是第二表達式,返回值都是根據高階類型返回,例子:
    true ? 'a' : 9          返回結果是字符類型,所以字符類型是高階類型
    true ? 'a' : 9.0       返回結果是浮點類型(對于double和float都是),所以浮點比字符類型高階
    ture ? 9 : 9.0        返回結果是浮點類型,明顯
    true ? "abc" : 9     返回結果是字符串類型,因為字符類型較高階
    true ? 對象1實例 : 對象2實例      返回結果是最大共同父類,所以如果其中一個是另外一個的子類,那么就返回父類,如果互不繼承關系,則返回Object。

    String總結:
    首先聲明,==判斷是判斷對象引用的實例是否相同,即實例是否真正在相同的位置
    Object默認的equals方法與==是一樣的(就是引用相同實例),String類重寫equals方法和hashCode方法,只要內容相同就返回ture(一般自己寫的類也建議重寫equals方法和hashCode方法)。所以這時候==與equals就具有不相同意義了。
    http://www.javaeye.com/topic/122206
    1. 首先String不屬于8種基本數據類型,String是一個對象。
     因為對象的默認值是null,所以String的默認值也是null;但它又是一種特殊的對象,有其它對象沒有的一些特性。
    2. new String()和new String("")都是申明一個新的空字符串,是空串不是null;
    3. String str="string";
    String str1="string";
    String str2=new String ("string");
    String str3="str" + new String("ing");
    關于常量池概念,java虛擬機在常量池中只維持一個字符串的示例,所以str與str1引用都是引用常量池里面的共同實例,關鍵的是只有常量池里面的String才是唯一的,new空間里面的并不是。
    但是str2,str3(而且str2與str3的空間地址也肯定不一樣的,引用的是新建空間堆里的實例,所以str==str1,str!=str2,str1!=str2,str1!=str3,str2!=str3
    但是它們幾個使用equals都是返回true的,因為String類的hashCode函數根據內容返回hashCode碼,這個碼相同,則equals就返回true了,具體的equals與hashCode解釋可以參照《java核心技術 卷1 基礎知識》
    注意:成員函數intern() :
    當一個String實例str調用intern()方法時,Java查找常量池中是否有相同Unicode的字符串常量,如果有,則返回其的引用,如果沒有,則在常量池中增加一個Unicode等于str的字符串并返回它的引用;
    所以:
    String str1="string";
    String str2=new String ("string");
    str1==str2.intern()          返回true
    主站蜘蛛池模板: 亚洲六月丁香婷婷综合| 亚洲精品视频观看| 免费国产高清毛不卡片基地| 在线a级毛片免费视频| 久久久久精品国产亚洲AV无码| 91精品国产免费| 亚洲人成高清在线播放| 亚洲综合免费视频| 国产精品亚洲专区在线观看| 亚欧免费视频一区二区三区 | 日韩一卡2卡3卡4卡新区亚洲| 国产在线观a免费观看| 亚洲国产精品无码专区| 99视频在线精品免费| 亚洲国产成人九九综合| 免费无码成人AV片在线在线播放| 精品亚洲国产成人av| 国产精品V亚洲精品V日韩精品 | 久久国产成人精品国产成人亚洲| 国产黄色片免费看| 亚洲Aⅴ无码专区在线观看q| av大片在线无码免费| 国产成人人综合亚洲欧美丁香花| 免费吃奶摸下激烈视频| 国产免费阿v精品视频网址| 亚洲系列国产精品制服丝袜第| 在线免费视频一区二区| 国产精品99爱免费视频| 亚洲毛片基地日韩毛片基地| 免费无码又爽又刺激高潮| 99久久免费国产精精品| 亚洲精品网站在线观看你懂的| 日韩精品免费一区二区三区| 久久精品免费大片国产大片| 亚洲三级在线视频| 久久久久亚洲av毛片大| 亚洲一区二区三区免费视频| 一边摸一边桶一边脱免费视频| 99久久亚洲精品无码毛片| 国产免费人成视频在线观看| 日韩免费无码一区二区三区 |