Java中,一切皆是对象——java中的对象类型与基本数据类型的区别
起因:取一個list給另一個list賦值,然后在另一個list中取出進行修改。list其中類型為對象時,String時,基本數據類型時。
【java中的對象類型與基本數據類型的區別】
#聲明和實例化
聲明:ArrayList a, 僅僅只是聲明了一個list變量,其未來作用相當于C++中的引用變量,亦或者相當于一個對象塊的索引,但并未為其分配具體的完整的對象所需要的內存空間,其所分配的空間僅僅只是"a"變量所需空間;
實例化:實例化的過程是為對象分配完整的所需內存空間。此時,對象a才是該list的一個實例,然后將分配的內存地址返回給定義的變量“a”;
#Java的實例化
1. 使用new關鍵詞創建對象(c++)。
2.通過jdk中提供的工廠方法返回對象。如String str = String.vlaueOf("test");
3.通過反射機制。最經常使用的則是JDBC: String driver = "com.MySQL.jdbc.Driver";Class.forName(driver);
4.通過類的clone()方法。
5.通過反序列化手段。
問題:?https://zhidao.baidu.com/question/304278653164386644.html
Java中,一切皆是對象!為何數據類型中還分為:基本類型和對象?不應該只有一個類型——對象嗎?
1.首先,這問題問得很好!說明認真思考了。Java中一切皆是對象!這句話沒錯,因為八種基本類型都有對應的包裝類(int的包裝類是Integer),包裝類自然就是對象了。 基本類型一直都是Java語言的一部分,這主要是基于程序性能的考量,基本類型定義定義的變量是存放在棧中,比如int i = 5;而Integer j = new Integer(10);j則只是一個對象的引用,存放在棧中,而實際的數值10則是放在堆里,堆的讀寫速度遠不及棧了。再有就是基本類型定義的變量創建和銷毀很快,而類定義的變量還需要JVM去銷毀。
2.其實java不是100%的面向對象編程,比如基本數據類型如int,boolean等等都不是對象,也就是不能用new的方式獲取,但是java對這些基本數據類型都有解決辦法,就是對著一個封裝類型,但是他們的封裝類是對象。比如int對應著Integer,boolean對應著Boolean,他們都是為了既決基本數據類型面向對象用的。
對象與基本數據類型的區別
基本數據類型在棧中進行分配,而對象類型在堆中進行分配。
?所有方法的參數都是在傳遞引用而非本身的值(基本類型例外)。
對象之間的賦值只是傳遞引用,基本類型之間的賦值是創建新的拷貝。
對于基本類型,“==”和“!=”是在比較值。而對于對象來說,“==”和“!=”是在比較兩個引用是否相同。
使用equals()方法有一點需要注意:equals()方法的默認行為是比較引用。如果是你自己寫的類,你應該為它重寫equals()來比較對象的內容。大多數Java類庫都實現了比較對象內容的equals()方法。
基本類型存儲了實際的數值,而并非只想一個對象的引用,所以在為其賦值的時候,是直接將一個地方的內容復制到了另一個地方。例如,對基本數據類型使用a=b,那么b的內容就復制給a.若接著又修改了a,而b根本不會受這種修改的影響。
?
對一個對象賦值時,真正操作的是這個對象的引用。所以倘若“將一個對象賦值給另一個對象”,實際是將“引用”從一個地方復制到另一個地方。這意味著假若對對象使用c=d,那么c和d都指向原本只有d指向的那個對象
///
JAVA的基本數據類型和引用數據類型的區別:
淺【談一下JAVA對象,對象引用以及對象賦值】 url:
http://blog.csdn.net/z69183787/article/details/21123605
只有理解了對象和引用的關系,才能理解參數傳遞。
????一般面試題中都會考Java傳參的問題,并且它的標準答案是Java只有一種參數傳遞方式:那就是按值傳遞,即Java中傳遞任何東西都是傳值。如果傳入方法的是基本類型的東西,你就得到此基本類型的一份拷貝。如果是傳遞引用,就得到引用的拷貝。
————————————————
版權聲明:本文為CSDN博主「jiuyan9939」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hdkjdhdj/article/details/53336116
總結
以上是生活随笔為你收集整理的Java中,一切皆是对象——java中的对象类型与基本数据类型的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中银消费金融有限公司是什么贷款
- 下一篇: Java中,一切皆是对象,为何数据类型中