Java中new出来的算是对象吗?
生活随笔
收集整理的這篇文章主要介紹了
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出来的算是对象吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vitalik Buterin 《以太坊
- 下一篇: 基于QT技术实现无线点菜系统设计与实现