卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

java培訓班學費一般多少 為什么說java里面只有值傳遞?

為什么說java里面只有值傳遞?關于這個問題,不同人對它的理解不盡相同。對初學Java的同學來說,可能簡單的認為Java中參數(shù)傳遞就是分為值傳遞和引用傳遞,至于為什么,因為課本上就是這么說的。對于有些

為什么說java里面只有值傳遞?

關于這個問題,不同人對它的理解不盡相同。對初學Java的同學來說,可能簡單的認為Java中參數(shù)傳遞就是分為值傳遞和引用傳遞,至于為什么,因為課本上就是這么說的。對于有些工作年限的程序員來說,可能認為如果傳遞的參數(shù)類型是普通類型,那么就是值傳遞,如果參數(shù)是對象,那么就是引用傳遞。還有一些人認為Java中只有值傳遞,就是題主問題中的主題。

對Java編程語言來說,前兩種理解是錯誤的,Java中只有值傳遞。對于我來說,剛開始也是理解有值傳遞和引用傳遞一說的,但是隨著自己寫代碼的積累,慢慢發(fā)現(xiàn)并不是那么回事。那為什么只有值傳遞呢?

首先,來了解一下什么是值傳遞,什么是引用傳遞?

值傳遞是說在調用函數(shù)時,將實際參數(shù)值復制一份傳遞到被調用函數(shù)中,在被調函數(shù)中修改參數(shù)值不會影響原實參值。

引用傳遞是說在調用函數(shù)時,將實際參數(shù)的地址直接傳遞到被調用的函數(shù)中,在被調函數(shù)中修改參數(shù)值會影響原實參值。

如果傳遞的參數(shù)類型是普通基本類型,那么一定是復制一份實參值傳遞給形參的,但是當參數(shù)類型是對象的時候,也是復制的一份參數(shù)值傳遞給形參,只不過復制的是對象引用的地址,也就是在內存中分配的存儲地址,不是直接傳遞的引用地址。

此時,可能有人會說那為什么將一個對象傳到另一個方法中,在這個方法中修改了這個對象的屬性值時,原調用方法中的對象屬性值也跟著變了,它不就是引用傳遞嗎?

其實,這是一個很容易迷惑的點。你仔細看看上面的陳述就會發(fā)現(xiàn),不是這么回事。將一個對象傳到另一個方法中,傳遞的是什么?傳遞的是對象引用的地址,這個對象引用的地址在另一個方法中被修改了嗎?原對象引用有受影響嗎?并沒有吧!

所以,Java中并沒有引用傳遞,只有值傳遞,不要再搞錯了!

我是『Java實戰(zhàn)技術』,關注我獲取更多原理分析、實戰(zhàn)技術!

Java中的注解到底是如何工作的?

注解是用來描述Java類的,可以自定義注解,然后通過反射獲取注解執(zhí)行指定的動作。

舉個簡單的例子

這樣就可以通過反射來獲取到一些元信息了,相當于配置和業(yè)務邏輯實現(xiàn)了分離。


當然這個自定義注解還需要依賴一些特定的注解,我們稱為元注解。一共有5種:

@Retention:存活的周期

RetentionPolicy.SOURCE

保留在源碼階段

RetentionPolicy.CLASS

編譯

RetentionPolicy,RUNTIME 運行階段

@Documented 將注解中的元素包含到JavaDoc中

@Target 注解可以用到的地方 有類、方法、屬性等

@Inherited 繼承

@Repeatable 可重復