果真靠譜,哈哈java
不去見作的好的怎麼作,你就永遠不知道本身還有哪些地方能夠提升正則表達式
關於抽象類和接口敘述正確的是? ( )算法
正確答案: D數組
抽象類和接口都能實例化的函數
抽象類不能實現接口翻譯
抽象類方法的訪問權限默認都是publiccode
接口方法的訪問權限默認都是public對象
抽象類 特色: 1.抽象類中能夠構造方法 2.抽象類中能夠存在普通屬性,方法,靜態屬性和方法。 3.抽象類中能夠存在抽象方法。 4.若是一個類中有一個抽象方法,那麼當前類必定是抽象類;抽象類中不必定有抽象方法。 5.抽象類中的抽象方法,須要有子類實現,若是子類不實現,則子類也須要定義爲抽象的。 6,抽象類不能被實例化,抽象類和抽象方法必須被abstract修飾 關鍵字使用注意: 抽象類中的抽象方法(其前有abstract修飾)不能用private、static、synchronized、native訪問修飾符修飾。 接口 1.在接口中只有方法的聲明,沒有方法體。 2.在接口中只有常量,由於定義的變量,在編譯的時候都會默認加上public static final 3.在接口中的方法,永遠都被public來修飾。 4.接口中沒有構造方法,也不能實例化接口的對象。(因此接口不能繼承類) 5.接口能夠實現多繼承 6.接口中定義的方法都須要有實現類來實現,若是實現類不能實現接口中的全部方法則實現類定義爲抽象類。 7,接口能夠繼承接口,用extends
Math.round(11.5) 等於:()
正確答案: C繼承
11接口
11.5
12
12.5
首先要注意的是它的返回值類型是long,若是 Math.round(11.5f),那它的返回值類型就是int,這一點能夠參考API 其次 Returns the closest long to the argument, with ties rounding to positive infinity 它返回的是一個最接近參數的long 值(例如: Math.round(11.6) = 12; Math.round(-11.6) = -12; Math.round(-0.1) = 0; Math.round(0.1) = 0 ),那若是出現向上向下距離同樣的數值, 好比題目中的11.5,該如何處理呢 ,彆着急,看它的後半句話, with ties rounding to positive infinity( 同時向正無窮方向取捨或者翻譯成取較大的值,英語水平較差,只能翻譯成這樣了; 例子: Math.round(11.5) ,首先與 11.5最接近的有兩個整數 11 和 12,取較大的那結果就是12; Math.round(-11.5), 首先與 -11.5最接近的有兩個整數 -11 和 -12,取較大的那結果就是-11; Math.round(0.5), 首先與 0.5最接近的有兩個整數 0 和 1,取較大的那結果就是1; Math.round(-0.5), 首先與 -0.5最接近的有兩個整數 -1 和 0,取較大的那結果就是0; ) 而後它有三個特例: 1. 若是參數爲 NaN(無窮與非數值) ,那麼結果爲 0。 2.若是參數爲負無窮大或任何小於等於 Long.MIN_VALUE 的值,那麼結果等於Long.MIN_VALUE 的值。 3.若是參數爲正無窮大或任何大於等於 Long.MAX_VALUE 的值,那麼結果等於Long.MAX_VALUE 的值。 最後 最好仍是看一下API或者源碼,不要信了個人邪
round方法,它表示「四捨五入」,算法爲Math.floor(x+0.5),即將原來的數字加上0.5後再向下取整,因此,Math.round(11.5)的結果爲12,Math.round(-11.5)的結果爲-11。 ceil是天花板,向上取整。 floor是地板,向下去整。
下列哪種敘述是正確的()
正確答案: D
abstract修飾符可修飾字段、方法和類
抽象方法的body部分必須用一對大括號{ }包住
聲明抽象方法,大括號無關緊要
聲明抽象方法不可寫出大括號
abstract修飾符可修飾字段、方法和類. × abstract只能用來修飾類、方法,不修飾字段(屬性)。 抽象方法的body部分必須用一對大括號{ }包住. × 抽象方法用「;」結束。 聲明抽象方法,大括號無關緊要. × 抽象方法沒有方法體,也不用大括號。
What results from the following code fragment?
int i = 5;
int j = 10;
System.out.println(i + ~j);
Compilation error because」~」doesn’t operate on integers
-5
-6
15
連接:https://www.nowcoder.com/questionTerminal/a568949ffbfc4a20977a2dab786032dd 來源:牛客網 我認爲應該是: 計算機自己儲存的就是補碼: 那麼10的補碼就是10的原碼:0000 0000 0000 1010——這是補碼,由於如今是計算機在計算 ~10的補碼就是:1111 1111 1111 0101 ~10的反碼就是:1111 1111 1111 0100——補碼減1 ~10的原碼就是:1000 0000 0000 1011——反碼取反:這個纔是正常二進制數,換算爲整數爲-11 原碼才能夠對應爲正常的整數,補碼只有轉換爲原碼才能被正常人類識別
公式-n=~n+1可推出~n=-n-1,因此~10=-11再加5結果爲-6
用命令方式運行如下代碼的運行結果是()
public class f{
public static void main(String[] args){ String foo1 = args[1]; String foo2 = args[2]; String foo3 = args[3]; }
}
命令: java T11 a b c
程序編譯錯誤
c
程序運行錯誤
t11
運行java命令,沒有T11對應的類,會報找不到或者沒法加載主類。
這裏java T11 a b c表示 運行java字節碼文件 T11 參數爲 a b c只輸入了三個參數,且args是數組下標從0開始,而程序中使用到agrs[3]顯然數組越界
命令: java T11 a b c,依次是命令 類名 參數。因爲沒有找到相應的類名所對應的類,因此編譯會報錯。
如下代碼將打印出
public static void main (String[] args) {
String classFile = "com.jd.". replaceAll(".", "/") + "MyClass.class"; System.out.println(classFile);
}
正確答案: C 你的答案: B (錯誤)
com. jd
com/jd/MyClass.class
///////MyClass.class
com.jd.MyClass
C。因爲replaceAll方法的第一個參數是一個正則表達式,而"."在正則表達式中表示任何字符,因此會把前面字符串的全部字符都替換成"/"。若是想替換的只是".",那麼久要寫成"\\.".
下面代碼的輸出是什麼?
public class Base { private String baseName = "base"; public Base() { callName(); } public void callName() { System. out. println(baseName); } static class Sub extends Base { private String baseName = "sub"; public void callName() { System. out. println (baseName) ; } } public static void main(String[] args) { Base b = new Sub(); } }
正確答案: A
null
sub
base
new Sub();在創造派生類的過程當中首先建立基類對象,而後才能建立派生類。 建立基類即默認調用Base()方法,在方法中調用callName()方法,因爲派生類中存在此方法,則被調用的callName()方法是派生類中的方法,此時派生類還未構造,因此變量baseName的值爲null
1.首先,須要明白類的加載順序。 (1) 父類靜態代碼塊(包括靜態初始化塊,靜態屬性,但不包括靜態方法) (2) 子類靜態代碼塊(包括靜態初始化塊,靜態屬性,但不包括靜態方法 ) (3) 父類非靜態代碼塊( 包括非靜態初始化塊,非靜態屬性 ) (4) 父類構造函數 (5) 子類非靜態代碼塊 ( 包括非靜態初始化塊,非靜態屬性 ) (6) 子類構造函數 其中:類中靜態塊按照聲明順序執行,而且(1)和(2)不須要調用new類實例的時候就執行了(意思就是在類加載到方法區的時候執行的) 2.其次,須要理解子類覆蓋父類方法的問題,也就是方法重寫實現多態問題。 Base b = new Sub();它爲多態的一種表現形式,聲明是Base,實現是Sub類, 理解爲 b 編譯時表現爲Base類特性,運行時表現爲Sub類特性。 當子類覆蓋了父類的方法後,意思是父類的方法已經被重寫,題中 父類初始化調用的方法爲子類實現的方法,子類實現的方法中調用的baseName爲子類中的私有屬性。 由1.可知,此時只執行到步驟4.,子類非靜態代碼塊和初始化步驟尚未到,子類中的baseName尚未被初始化。因此此時 baseName爲空。 因此爲null。
public class Base { private String baseName = "base"; public Base() { callName(); } public void callName() { System.out.println(baseName); } public static void main(String[] args) { Base b = new Sub(); } } class Sub extends Base { private String baseName = "sub"; public void callName() { System.out.println(baseName); } } 本題與內部類無關係,去掉內部類後代碼如上, 執行 Base b = new Sub();時因爲多態 b編譯時表現爲Base類特性,運行時表現爲Sub類特性, Base b = new Sub();無論是哪一種狀態都會調用Base構造器執行 callName()方法; 執行方法時,因爲多臺表現爲子類特性,因此會先在子類是否有 callName(); 而此時子類還沒有初始化(執行完父類構造器後纔會開始執行子類), 若是有就執行,沒有再去父類尋找 若是把父類 callName()改成 callName2(),則會輸出base