日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中new出来的算是对象吗?

發布時間:2023/12/8 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中new出来的算是对象吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 如題,一直有個問題困惑著我,基本類型中我們可以這樣定義對象(以int為例):

int a;

? ? 而引用類型卻是只能new出來的,比如這樣的:

Human xiaoming=new Human();

? ? 問題來了,這里的xiaoming算是對象嗎?如果說不是,那不是說好的萬物皆對象該怎么解釋,它不是Human類的一個實例嗎?若是對象,為何跟基本類型定義的對象有很大的區別?

? ?歸根到底,我們可以把這個問題轉化成new的對象是值傳遞還是引用傳遞。我們可以做一個實驗進行佐證一下。

Person類:

package UNI;public class Person {public void eat() {System.out.println("睡");}public void sleep() {System.out.println("玩");}public void play() {System.out.println("吃");} }

客戶端:

package UNI; public class newEX {public static void main(String[] args) {Person a=new Person();a.eat();a.sleep();a.play();Person b=a;System.out.println(b);}}

? ? 在這個代碼中,我們可以想象一下,如果僅僅是值傳遞,那b到底該是什么?是eat、sleep還是play呢?運行結果如下:

睡 玩 吃 ddd.Person@10dea4e

? ? 我們可以清晰第看到,最后一行輸出的結果是一個地址,也就是說我們new出來的是引用對象而不是單純的對象。這也是為什么我們在輸入數組的時候需要Arrays.toString,不然打印出來的就是地址。

? ? 通過這個例子我們不僅僅可以驗證我們的想法,而且,我們可以發現,如果說new出來的是引用傳遞,那么,我們要賦值另外一個對象就變得非常簡便。比如說,我們要實現這一一個想法,把一個人的信息復制很多份(假如100份),如果我們按照一般的辦法就只能不斷的new100次,如果能進行傳遞引用,代碼不僅僅變得很簡單,而且簡潔。比如說:

package ddd;public class newEX {public static void main(String[] args) {Information a=new Information("小紅");a.gender("女");a.weigh(47);a.hobby("打麻將");for (int i = 0; i <100; i++) {Person b=a;}}}

很明顯,這樣進行傳遞就回變得非常簡潔。

總結

以上是生活随笔為你收集整理的Java中new出来的算是对象吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。