1. 程式人生 > >一些java基礎錯題總結

一些java基礎錯題總結

1. x = 1 , y = 2 , z = 3,則表示式y+=z--/++x 的值是( 3 )。

如果沒有標明,1 預設為整形 ,所以答案不是3.5 (好像說服我了0.0 )

2.設有語句int a=3;,則執行了語句a+=a-=a*a;後,表示式的值為( -3  )。

結果是編譯器相關的:

 java: 3*3 = 9  , 3-9 = -6, 3+(-6) = -3  結果為-3,

還有就是a =3;執行a=a++ ,結果a還是=3(0-0);

C: +=運算出結果後後會有一次返回?

=>a-=a*a
a-=9,a=3//注意這裡的A是3
=>
a=3-9=-6;return a;//注意這裡的A發生變化,不再是3了,而是-6
=>
a+=a=-6-6=-12//所以結果會是-12。  

3.    1例->   s1=s1+1;                   2例->    s1+=1;
1例 使用簡單賦值運算,  2例 使用複合賦值運算,
而簡單賦值運算和複合賦值運算的最大差別就在於:複合賦值運算子會自動地將運算結果轉型為其左運算元的型別! 
這就是1例編譯不通過,2例編譯卻能通過的原因。
精度取決於他們相加的結果是否超過short所能表達的最大值,超過就丟精度  反之不丟~~

4、String 和StringBuffer的區別
JAVA平臺提供了兩個類:String和StringBuffer,它們可以儲存和操作字串,即包含多個字元的字元資料。

這個String類提供了數值不可改變的字串。而這個StringBuffer類提供的字串進行修改

當你知道字元資料要改變的時候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers來動態構造字元資料。

大量的字串操作就用StringBuffer.append(),效率高 ,少量的字串拼接操作就String+= ,方便 ;

List和Set的區別,Vector和ArrayList的區別,以及 HashMap和Hashtable的區別。

list是線性的,根據加入的順序有下標對應,HashSet按元素的hash值排序,TreeSet按自然順序排序

自定義的類想加入set中需實現comparator介面完成元素的儲存(或則在定義TreeSet時以匿名內部類的方式new comparator 重寫compare方法,

否則報錯 cannot be cast to java.lang.Comparable!!!)

ArrayList 和Vector都是使用陣列方式儲存資料,此陣列元素數大於實際儲存的資料以便增加和插入元素,
它們都允許直接按序號索引元素,但是插入元素要涉及陣列元素移動等記憶體操作,

所以索引資料快而插入資料慢,Vector由於使用了synchronized方法(執行緒安全),通常效能上較ArrayList差

 HashMap是Hashtable的輕量級實現(非執行緒安全的實現),他們都完成了Map介面,

主要區別在於HashMap允許空(null)鍵值(key),由於非執行緒安全,效率上可能高於Hashtable。
HashMap允許將null作為一個entry的key或者value,而Hashtable不允許。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因為contains方法容易讓人引起誤解。 
Hashtable繼承自Dictionary類,而HashMap是Java1.2引進的Map interface的一個實現。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多個執行緒訪問Hashtable時,

不需要自己為它的方法實現同步,而HashMap 就必須為之提供外同步。 
Hashtable和HashMap採用的hash/rehash演算法都大概一樣,所以效能不會有很大的差異。


20abstract classinterface有什麼區別?
宣告方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要建立一個體現某些基本行為的類,

併為該類宣告方法,但不能在該類中實現該類的情況。不能建立abstract 類的例項。然而可以建立一個變數,

其型別是一個抽象類,並讓它指向具體子類的一個例項。不能有抽象建構函式或抽象靜態方法

Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。

知道其行為的其它類可以在類中實現這些方法。
 介面(interface)是抽象類的變體。在介面中,所有方法都是抽象的。多繼承性可通過實現這樣的介面而獲得。

介面中的所有方法都是抽象的,沒有一個有程式體。介面只可以定義static final成員變數。介面的實現與子類相似,

除了該實現類不能從介面定義中繼承行為。當類實現特殊介面時,它定義(即將程式體給予)所有這種介面的方法。

然後,它可以在實現了該介面的類的任何物件上呼叫介面的方法。由於有抽象類,它允許使用介面名作為引用變數的型別。

通常的動態聯編將生效。引用可以轉換到介面型別或從介面型別轉換,instanceof 運算子可以用來決定某物件的類是否實現了介面。





相關推薦

一些java基礎總結

1.設 x = 1 , y = 2 , z = 3,則表示式y+=z--/++x 的值是( 3 )。 如果沒有標明,1 預設為整形 ,所以答案不是3.5 (好像說服我了0.0 ) 2.設有語句int a=3;,則執行了語句a+=a-=a*a;後,表示式的值為( -3  

Java總結-SE部分基礎

1.下面有關java的一些細節問題,描述錯誤的是? A:構造方法不需要同步化 構造方法每次都構造新的 物件,不存在多個執行緒同時訪問同一物件的問題,所以不需要同步 B:一個子類不可以覆蓋掉父類的同步方法 父類中的方法使用了synchronized關

總結Java

分享 英語 總結 als 對象 圖像 返回 索引 一個 1.把autosize自動設置大小調為false,即換為手動設置大小 2.本題主要考查TextBox 控件的MaxLength屬性的作用。 其作用是在用戶手動輸入內容的時候控制可輸入字符串的長度用的,若是通過代碼

一些Java基礎方面問題的總結

not href 整理 正常 無法 過去式 最有 java基礎 防攻擊 最近做面試題,遇到一些問題,整理一下! 1、Overloaded的方法是否可以改變返回值的類型? 答案:可以。 overload是重載,overloaded是什麽?重載的過去式?我還以為是我沒見過

總結--黑馬程式設計師之基礎班入班考試

8、下列關於變數和常量的說法正確的是(AD   ) A. 常量表示不能被改變的值,例如1、2、“abc”都是常量 B. 常量表示常見的變數 C. int x = 0;程式碼中,x表示常量,0表示變數 D. 在同一個大括號{}內,定義的變數不能夠重名 此題答案為A,而我選擇

JAVA基礎50

個數字 remove rand equal throw 約瑟夫環 [] 根據 輸入 package package0530;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter

總結08.12

sco student lis spa i+1 clu main esp h+ 今天講了sort函數的使用方式,雖然之前知道一點,但卻只懂一些皮毛,再加上今天的結構體,弄的我現在還有點小懵逼。 #include<bits/stdc++.h>using nam

java基礎知識積累總結

發生 數據 相互轉換 移動智能終端 產生 包含 dep while 順序 參考:http://www.importnew.com/22083.html 參考:http://www.importnew.com/22087.html 十分感謝原作者的匯總,我在這個基礎上,有所改

Java基礎零碎知識點總結(持續補充)

多態 java基礎 引用類型 ram object 轉換 安全 特性 翻譯 1.重載:同名不同參 重寫:同名同參同返回類型(方法體與父類一致),只存在於繼承關系中(多態),需要父類原有方法可用super(),子類函數訪問修飾權限不能少於父類。 2.OOP(Object

java基礎學習_day01總結

ase 運行程序 ctrl direct pat 建議 流程 lips 文件夾 =================================================================================================

Java基礎學習內容總結

byw999Java基礎內容; 1)Java中的關鍵字:以後常見的關鍵字:class,public,static(面向對象部分講),流程控制語句中關鍵字:if,else..基本數據類型:int,byte,short…synchronized(多線程中的)2)標識符:給類,接口,變量,方法起名字的字符序列3)

Java(1)

輸出 col 順序執行 執行 AR new rgs oid hello 檢查程序,是否存在問題,如果存在指出問題所在,如果不存在,說明輸出結果。 public class HelloB extends HelloA { public HelloB() { } {

關於一些Java基礎數據類型的常用方法的應用場景的小思考

get light || 成了 一半 ava 類型 這樣的 style 昨天遇到一個問題,按照我的一半解決方法是傳一個參數,然後通過參數來控制邏輯處理;但是領導發現String的一個方法也可以完全完成該問題!而我完全沒有get到這個點! so,我認識到了自己的知識盲區;基礎

史綱總結/1000一刷

決定 三元 領導 錯題 主主 思想 失敗 孫中山 之前 舊民主主義革命 中國民族資產階級登上政治舞臺的第一次表演是戊戌變法,發生在十九世紀90年代。 近代以來的歷史表明,要爭得民族獨立和人民解放,必須首先進行反帝反封建的民主革命。 近代歷史上,中國不戰而敗的對外戰

關於Java基礎的複習總結(四)初識面向物件

縱碼仗鍵行天下 1、類和物件 萬物皆為物件 類:是物件的抽象描述 物件:是類的例項化 類的組成: 屬性(成員變數) 方法(成員方法) 2、方法 無返回值型別:void 有返回值型別:int double String return:返回結果 跳出方法(可用於跳出多重迴圈) 無參方法

關於Java基礎的複習總結(三)陣列基礎知識

苟利程式碼生死已,豈因Bug避趨之 1、陣列: 用來存放相同型別的一組資料 2、初始化陣列: int nums[] ={3,4,5,6} int[] nums = new int[]{3,4,5,6} int[]nums=new int[5]; nums

關於Java基礎的複習總結(二)運算子與控制結構&程式設計師節的留影

大夢誰先覺,平生我自知。 每次醒來之後,說一句,感覺自己要去拯救蒼生,哈哈。 末尾放上程式設計師節的照片,帶人的就不放了,醜(* ̄rǒ ̄)。 1、變數的宣告和賦值 資料型別 變數名=值; 2、型別轉換 自動型別轉換 強制型別轉換 byte short int long float

關於Java基礎的複習總結(一)入門篇

千里之堤,毀於雙十一。 主題內容源於當初學Java的幾個筆記本。週末整理換季衣物的時候找到的。重新整理一遍,上傳儲存下來,也是對基礎的複習總結。同時紀念當年初學Java的日子。 1、java發展史 1995誕生於sun公司,被oracle公司收購 開源,免費的 1996年,推出jdk1

第一模組:開發基礎

1、 假設,現在有一個GBK編碼的檔案,需要轉碼成UTF-8編碼的檔案,下列操作流程正確的是(C)。 A.encode('gbk')--->decode('utf-8') B.encode('utf-8')--->decode('gbk') C.decode('gbk')---&g

第一模塊:開發基礎

none 錯題 是什麽 lec 字符替換 rom 字典 pla 字符串 1、 假設,現在有一個GBK編碼的文件,需要轉碼成UTF-8編碼的文件,下列操作流程正確的是(C)。 A.encode(‘gbk‘)--->decode(‘utf-8‘) B.encode(‘ut