了解java代碼 Java的代碼

java代碼解析

一樓的說的夠全面了,不過稍有誤解.

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、成都做網(wǎng)站、陽(yáng)朔網(wǎng)絡(luò)推廣、重慶小程序開發(fā)公司、陽(yáng)朔網(wǎng)絡(luò)營(yíng)銷、陽(yáng)朔企業(yè)策劃、陽(yáng)朔品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供陽(yáng)朔建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:muchs.cn

再來表示抱歉,我對(duì)編程語(yǔ)言中的中文名詞非常不了解,所以如果以下的回復(fù)對(duì)你的閱讀或者理解造成困難,請(qǐng)見諒.

1.首先,要明白這個(gè)問題的答案,需要了解call?(pass)?by?value?和?call?(pass)?by?reference?的區(qū)別.簡(jiǎn)單來說:

call?by?value通常是復(fù)制這個(gè)parameter的值去另外一塊內(nèi)存里,然后傳給function,?所以在method/function里邊對(duì)這個(gè)變量的所有變更,實(shí)際上都是對(duì)復(fù)制過來的鏡像進(jìn)行操作,不會(huì)對(duì)原本的variable有任何影響.

call?by?reference是將parameter的reference傳給function,簡(jiǎn)單點(diǎn)理解就是直接把variable傳給function.所以說這個(gè)variable的值是可以被function改變的.這個(gè)用法在c/c++中非常常見,用法是variable_name.

2.再來,在Java里邊,你可以很簡(jiǎn)單的理解為:?Java中只有call?by?value,?也就是說,所以所有傳給function的parameter本身都不會(huì)被改變.?(這是最簡(jiǎn)單直白的理解,當(dāng)然也有另一種常從sun的人那邊聽到的說法:Java是call?by?value?+?call?by?reference?by?value)

3.那么現(xiàn)在的問題就是為什么第二個(gè)結(jié)果是2了.?首先說一下sun官方的解釋:?對(duì)于reference?type在作為parameter/argument的時(shí)候,也是call?by?value,?但是在你擁有足夠權(quán)限時(shí)(比方說那個(gè)變量是public的,?不是final的等等各種符合的情況),可以修改這個(gè)object中fields的值(也就是屬于這個(gè)object(嚴(yán)謹(jǐn)點(diǎn)講是an?instance?of?the?object)?內(nèi)部的變量,?在你的例子中,?ko?里邊的?a?就是一個(gè)field,?所以u(píng)pdate(ko)會(huì)使ko.a變成2).

4.如果你是一個(gè)有過c/c++學(xué)習(xí)經(jīng)驗(yàn)的人或者你以上的解釋很難理解,以下這種說法或許更適合你?(當(dāng)然了,這只是大多包括我在內(nèi)有c經(jīng)驗(yàn)的人的一種理解方式)

這里可以引入一個(gè)新的概念,pointer.?這是一種比較特殊的變量,它內(nèi)部所儲(chǔ)存的東西,其實(shí)只是另外一個(gè)變量的內(nèi)存地址.?如果對(duì)內(nèi)存沒有概念,你可以把它簡(jiǎn)單理解為是風(fēng)箏的線軸,雖然看它本身看不出什么端倪,但是順著摸過去總會(huì)找到風(fēng)箏,看到它是什么樣子.?以pointer方式理解Java的人,通常會(huì)說:?Type?variable?=?new?Type();?這個(gè)過程中,最后生成的這個(gè)variable其實(shí)就是一個(gè)pointer,而不是instance本身.

在Java中,?有c/c++經(jīng)驗(yàn)的人通常認(rèn)為Java是call?by?value.同時(shí),當(dāng)一個(gè)變量用在儲(chǔ)存reference?type的時(shí)候,實(shí)際上儲(chǔ)存的是它的pointer,這也一樣可以解釋為什么ko.a會(huì)有2這個(gè)結(jié)果,因?yàn)殡m然pointer被傳到function里邊時(shí),本身是call?by?value,無法被改變.但這并不影響function本身對(duì)這個(gè)pointer指向的object的內(nèi)容做任何改變.?當(dāng)然,再次聲明,這只是一種幫助有c/c++經(jīng)驗(yàn)的人理解的方法.?Sun本身嚴(yán)正聲明Java里邊沒有pointer這個(gè)東西的存在.

5.?再來解釋一下為什么說樓上所說的(或者說樓上引用的)理解略有偏差.

引用"我們上面剛學(xué)習(xí)了JAVA的數(shù)據(jù)類型,則有:值類型就是按值傳遞的,而引用類型是按引用傳遞的"?這句話很明顯的有兩點(diǎn)錯(cuò)誤.?第一點(diǎn),如果我上面所說的,Java是沒有call?by?reference的.

第二點(diǎn),暫且假設(shè)Java里邊是有call?by?reference的,?這句話依然不成立.

Java中的變量有兩種類型:?primitive?types?和?reference?type.

primitive?type包括byte,?short,?int,?long,?char,?boolean,?float和double.

而這8種之外的所有的,都是reference?type.

下面是一段對(duì)你的貼上來的code的一點(diǎn)延伸,希望可以幫助你更好的理解Java中的argument?/?parameter到底是如何運(yùn)作的.

public?class?Test?{

public?static?void?main(String[]?args)?{

int?a?=?1;

Koo?koo?=?new?Koo();

Object?o?=?new?Integer(1);

Koo?newKoo?=?new?Koo();

update(a);

update(koo);

update(o);

update(newKoo);

newUpdate(newKoo);

System.out.println(a);

System.out.println(koo.a);

System.out.println(o);

System.out.println(newKoo.a);

}

static?void?update(int?a)?{

a++;

}

static?void?update(Koo?koo)?{

koo.a++;

}

static?void?update(Object?o)?{

o?=?(int)?(Integer.parseInt(o.toString())?+?1);

}

static?void?newUpdate(Koo?koo)?{

koo?=?new?Koo();

}

}

class?Koo?{

int?a?=?1;

}

/*

o?=?(int)?(Integer.parseInt(o.toString())?+?1);?這一行中的(int)純粹是多余的,是否有這個(gè)casting對(duì)code本身沒有任何影響.?如果你高興也可以用

o?=?new?Integer(Integer.parseInt(o.toString())?+?1);

或者干脆

o?=?Integer.parseInt(o.toString())?+?1;

*/

以上這些code運(yùn)行之后會(huì)得到1?2?1?2的結(jié)果.?后面兩個(gè)結(jié)果可以很好的說明,?即使對(duì)objects?(reference?type?variables)?來看,?Java所應(yīng)用的也并不是call?by?reference.?否則的話,以上code運(yùn)行結(jié)果應(yīng)該是1?2?2?1

希望你可以真正理解這個(gè)新的例子中,產(chǎn)生1212這個(gè)結(jié)果的原因,從而對(duì)Java中的arguments有一個(gè)系統(tǒng)全面的認(rèn)識(shí).

圖片是相關(guān)資料的鏈接,知道里貌似不能加網(wǎng)址

java代碼理解

public Static Animal get(String choice)//這句是定義一個(gè)靜態(tài)方法get ,static表示該方法是靜態(tài)方法, void表示方法沒有返回值(在方法沒有返回值時(shí)用),而該句的返回值類型是Animal (Animal是一個(gè)用戶自定義的類 類似你熟知的int,string,char等), 例如public viod get(){}這個(gè)方法就沒有返回值且是非靜態(tài)方法 而public static string set(){}這個(gè)方法就是靜態(tài)方法且返回值的string類型。請(qǐng)不要混淆返回值類型與static二者并非一個(gè)概念

靜態(tài)與非靜態(tài):當(dāng)一個(gè)函數(shù)或者一個(gè)變量前面加上static時(shí)表示該方法或變量是靜態(tài)的,否則就是非靜態(tài)的。java和c#一樣是面向?qū)ο蟮恼Z(yǔ)言,創(chuàng)建一個(gè)類后需要實(shí)例類的對(duì)象調(diào)用方法或者變量,當(dāng)聲明的方法或者變量時(shí)靜態(tài)時(shí)就可以直接用類名調(diào)用,因?yàn)殪o態(tài)的是屬于類所有,并非屬于類的某個(gè)對(duì)象

choice是什么意思? choice是get方法的形式參數(shù)(形參)通俗一些就是個(gè)傀儡,只有這個(gè)get方法被調(diào)用的時(shí)候形參就被賦予了實(shí)參的值,才真正有了意義。例如你的例子Animal al=Store.get("dog");中調(diào)用了get方法并傳遞實(shí)參"dog" ,此時(shí)choice的值就是"dog","dog"與"dog"當(dāng)然是倆個(gè)相等的字符串 所以程序最后輸出的肯定和狗有關(guān)。如果get方法被調(diào)用時(shí)傳的實(shí)參不是"dog",Animal al=Store.get("pig");此時(shí)choice值就是"pig","pig"與“dog”不是相同的字符串所以最后結(jié)果肯定和貓又關(guān)(呵呵)

if(choice.equalsIgnoreCase("dog"))是什么意思? 這是判斷當(dāng)get函數(shù)被調(diào)用時(shí)傳遞的實(shí)參是否是“dog”, java中equalsIgnoreCase是判斷兩個(gè)字符串是否相等它不考慮大小寫,如果兩個(gè)字符串的長(zhǎng)度相等,并且兩個(gè)字符串中的相應(yīng)字符都相等(忽略大小寫),則認(rèn)為這兩個(gè)字符串是相等的。(當(dāng)get被調(diào)用時(shí)choice的值就變?yōu)閷?shí)參的值)

正如LS所說main 方法是java程序的入口,當(dāng)程序運(yùn)行時(shí)首先運(yùn)行main方法中的內(nèi)容 ,記住main方法的格式就行,以后你會(huì)慢慢理解main

如果還有不是很清楚的地方 百度hi我……

這回答應(yīng)該通俗易懂不知lz滿意否?怎么樣給分吧……

java代碼解讀

第一個(gè)if是判斷searchkey是不是空的,如果不是空的,就追加到name字段作為查詢條件,like模糊查詢

接著第二個(gè)if判斷如果status的值不為空,就追加到status作為條件

如果status為空,走else分支,從userContext中獲取到employee對(duì)象,接著判斷,如果它的角色不是manager的話

把這個(gè)對(duì)象的id拿出來,作為seller.Id的條件進(jìn)行查詢

怎么看懂java代碼?

想要看到都能java代碼,需要了解編程的基礎(chǔ)知識(shí),變量,表達(dá)式,程序執(zhí)行結(jié)構(gòu),邏輯判斷等等。最重要是要學(xué)會(huì)如何調(diào)試代碼,慢慢練習(xí),熟練了自然就會(huì)了。

文章標(biāo)題:了解java代碼 Java的代碼
URL地址:http://muchs.cn/article0/hjohoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站內(nèi)鏈、全網(wǎng)營(yíng)銷推廣、商城網(wǎng)站面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)