應(yīng)該是B,
目前創(chuàng)新互聯(lián)已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、嘉魚網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
在java世界中,所有的對象都直接或間接是Object的子類.
選D ,打印結(jié)果為3
public class Test {
static {
int x = 5;//形參x 賦值為5,沒有調(diào)用
}
static int x, y;//本類屬性,x,y默認(rèn)為0
public static void main(String args[]) {
x--;// 本類屬性x-- this.x=-1
myMethod();
System.out.println(x + y + ++x);//x = this.x = 1 ,y = 0, ++x = 2
//打印結(jié)果為 3 x + y + ++x = 1+0+2 = 3
}
public static void myMethod() {
y = x++ + ++x;
// x++ = -1 , this.x = 0
// ++x = 1 , this.x = 1
//y = -1 + 1 = 0
}
}
答案 是 -1。。
例如
5%3=2
5%-3=2
-5%3=-2
-5%-3=-2
可以認(rèn)為被除數(shù)決定了余數(shù)的正負(fù)
程序入口 Stem stem=new Stem(3);執(zhí)行Stem的有參數(shù)構(gòu)造函數(shù);
而Stem繼承了Root,構(gòu)造函數(shù)中有super(1);所以進(jìn)入執(zhí)行Root的有參數(shù)構(gòu)造函數(shù);
執(zhí)行完后返回Stem繼續(xù)執(zhí)行;
所以,最簡單的理解:先執(zhí)行父類構(gòu)造,再執(zhí)行本類構(gòu)造;聲明先于構(gòu)造先執(zhí)行;
運(yùn)行結(jié)果:
Component1 construct
Component2 construct
Component3 construct
Root constructor
Component1 construct
Component2 construct
Component3 construct
Stem constructor
第一行輸出結(jié)果是abc:
原因是:
s.substring(1);
s.replace("bc", "xyz");
這兩句話沒有任何作用 ~因?yàn)镾tring是屬于值傳遞~
第二行 輸出結(jié)果是false:
原因是:
用==比較字符串,是比較兩個(gè)變量本身的值,即兩個(gè)對象在內(nèi)存中的首地址。用equals比較就會(huì)為true,equals比較的是內(nèi)容是否相同。
附:
1、值傳遞、引用傳遞的區(qū)別:
值傳遞:(形式參數(shù)類型是基本數(shù)據(jù)類型):方法調(diào)用時(shí),實(shí)際參數(shù)把它的值傳遞給對應(yīng)的形式參數(shù),形式參數(shù)只是用實(shí)際參數(shù)的值初始化自己的存儲(chǔ)單元內(nèi)容,是兩個(gè)不同的存儲(chǔ)單元,所以方法執(zhí)行中形式參數(shù)值的改變不影響實(shí)際參數(shù)的值。
引用傳遞:(形式參數(shù)類型是引用數(shù)據(jù)類型參數(shù)):也稱為傳地址。方法調(diào)用時(shí),實(shí)際參數(shù)是對象(或數(shù)組),這時(shí)實(shí)際參數(shù)與形式參數(shù)指向同一個(gè)地址,在方法執(zhí)行中,對形式參數(shù)的操作實(shí)際上就是對實(shí)際參數(shù)的操作,這個(gè)結(jié)果在方法結(jié)束后被保留了下來,所以方法執(zhí)行中形式參數(shù)的改變將會(huì)影響實(shí)際參數(shù)
2、用==比較和用equals比較的區(qū)別:
對于字符串變量來說,使用“==”和“equals()”方法比較字符串時(shí),其比較方法不同.
“==”比較兩個(gè)變量本身的值,即兩個(gè)對象在內(nèi)存中的首地址.
“equals()”比較字符串中所包含的內(nèi)容是否相同.
這有啥不理解的
首先注意static int i= 47; 是靜態(tài)的,說明類對象共享
第一步:t2.i=60 輸出是60 這個(gè)好理解
第二步:t1.call() 之后 i的值變成3 輸出就是3
第三步:又調(diào)了一次t2.call() 如果再輸出i的值 還是3
要明白當(dāng)你定義i為static的時(shí)候,不管你是t1還是t2去修改i的值,都是同一個(gè)i,這個(gè)和i歸類所有,所有這個(gè)類的對象都使用這一份,所以不管你輸出t1.i 還是t2.i 都是Test::i