最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java創(chuàng)建對象(顯式創(chuàng)建和隱含創(chuàng)建)

 更新時間:2021年09月26日 16:30:31   作者:編程幫  
本文詳細(xì)介紹對象的創(chuàng)建,在 Java 語言中創(chuàng)建對象分顯式創(chuàng)建與隱含創(chuàng)建兩種情況,顯式創(chuàng)建和隱含創(chuàng)建,,需要的朋友可以參考下面文章的具體內(nèi)容

對象是對類的實例化。對象具有狀態(tài)和行為,變量用來表明對象的狀態(tài),方法表明對象所具有的行為。Java 對象的生命周期包括創(chuàng)建、使用和清除。

一、顯式創(chuàng)建對象

對象的顯式創(chuàng)建方式有 4 種。

1. 使用 new 關(guān)鍵字創(chuàng)建對象

這是常用的創(chuàng)建對象的方法,語法格式如下:

類名 對象名 = new 類名();

2. 調(diào)用 java.lang.Class

或者 java.lang.reflect.Constuctor 類的 newlnstance() 實例方法

在 Java 中,可以使用 java.lang.Class 或者 java.lang.reflect.Constuctor 類的 newlnstance() 實例方法來創(chuàng)建對象,代碼格式如下:

java.lang.Class Class 類對象名稱 = java.lang.Class.forName(要實例化的類全稱);
類名 對象名 = (類名)Class類對象名稱.newInstance();

調(diào)用 java.lang.Class 類中的 forName() 方法時,需要將要實例化的類的全稱(比如 com.mxl.package.Student)作為參數(shù)傳遞過去,然后再調(diào)用 java.lang.Class 類對象的 newInstance() 方法創(chuàng)建對象。

3. 調(diào)用對象的 clone() 方法

該方法不常用,使用該方法創(chuàng)建對象時,要實例化的類必須繼承 java.lang.Cloneable 接口。 調(diào)用對象的 clone() 方法創(chuàng)建對象的語法格式如下:

類名對象名 = (類名)已創(chuàng)建好的類對象名.clone();

4. 調(diào)用 java.io.ObjectlnputStream 對象的 readObject() 方法

例 1:

下面創(chuàng)建一個示例演示常用的前三種對象創(chuàng)建方法。示例代碼如下:

public class Student implements Cloneable {   
    // 實現(xiàn) Cloneable 接口
    private String Name;    // 學(xué)生名字
    private int age;    // 學(xué)生年齡
    public Student(String name,int age) {    
        // 構(gòu)造方法
        this.Name = name;
        this.age = age;
    }
    public Student() {
        this.Name = "name";
        this.age = 0;
    }
    public String toString() {
        return"學(xué)生名字:"+Name+",年齡:"+age;
    }
    public static void main(String[] args)throws Exception {
        System.out.println("---------使用 new 關(guān)鍵字創(chuàng)建對象---------");
       
        // 使用new關(guān)鍵字創(chuàng)建對象
        Student student1 = new Student("小劉",22);
        System.out.println(student1);
        System.out.println("-----------調(diào)用 java.lang.Class 的 newInstance() 方法創(chuàng)建對象-----------");
       
        // 調(diào)用 java.lang.Class 的 newInstance() 方法創(chuàng)建對象
        Class c1 = Class.forName("Student");
        Student student2 = (Student)c1.newInstance();
        System.out.println(student2);
        System.out.println("-------------------調(diào)用對象的 clone() 方法創(chuàng)建對象----------");
        // 調(diào)用對象的 clone() 方法創(chuàng)建對象
        Student student3 = (Student)student2.clone();
        System.out.println(student3);
    }
}

對上述示例的說明如下:

  • 使用 new 關(guān)鍵字或 Class 對象的 newInstance() 方法創(chuàng)建對象時,都會調(diào)用類的構(gòu)造方法。
  • 使用 Class 類的 newInstance() 方法創(chuàng)建對象時,會調(diào)用類的默認(rèn)構(gòu)造方法,即無參構(gòu)造方法。
  • 使用 Object 類的 clone() 方法創(chuàng)建對象時,不會調(diào)用類的構(gòu)造方法,它會創(chuàng)建一個復(fù)制的對象,這個對象和原來的對象具有不同的內(nèi)存地址,但它們的屬性值相同。
  • 如果類沒有實現(xiàn) Cloneable 接口,則 clone。方法會拋出 java.lang.CloneNotSupportedException 異常,所以應(yīng)該讓類實現(xiàn) Cloneable 接口。

程序執(zhí)行結(jié)果如下:

---------使用 new 關(guān)鍵字創(chuàng)建對象---------
學(xué)生名字:小劉,年齡:22
-----------調(diào)用 java.lang.Class 的 newInstance() 方法創(chuàng)建對象-----------
學(xué)生名字:name,年齡:0
-------------------調(diào)用對象的done()方法創(chuàng)建對象----------
學(xué)生名字:name,年齡:0

二、隱含創(chuàng)建對象

除了顯式創(chuàng)建對象以外,在 Java 程序中還可以隱含地創(chuàng)建對象,例如下面幾種情況。

1)String strName = "strValue",其中的“strValue”就是一個 String 對象,由 Java 虛擬機(jī)隱含地創(chuàng)建。

2)字符串的“+”運(yùn)算符運(yùn)算的結(jié)果為一個新的 String 對象,示例如下:

String str1 = "Hello";
String str2 = "Java";
String str3 = str1+str2;    // str3引用一個新的String對象


3)當(dāng) Java 虛擬機(jī)加載一個類時,會隱含地創(chuàng)建描述這個類的 Class 實例。

提示:類的加載是指把類的 .class 文件中的二進(jìn)制數(shù)據(jù)讀入內(nèi)存中,把它存放在運(yùn)行時數(shù)據(jù)區(qū)的方法區(qū)內(nèi),然后在堆區(qū)創(chuàng)建一個 java.lang.Class 對象,用來封裝類在方法區(qū)內(nèi)的數(shù)據(jù)結(jié)構(gòu)。

無論釆用哪種方式創(chuàng)建對象,Java 虛擬機(jī)在創(chuàng)建一個對象時都包含以下步驟:

  • 給對象分配內(nèi)存。
  • 將對象的實例變量自動初始化為其變量類型的默認(rèn)值。
  • 初始化對象,給實例變量賦予正確的初始值。

注意:每個對象都是相互獨立的,在內(nèi)存中占有獨立的內(nèi)存地址,并且每個對象都具有自己的生命周期,當(dāng)一個對象的生命周期結(jié)束時,對象就變成了垃圾,由 Java 虛擬機(jī)自帶的垃圾回收機(jī)制處理。

到此這篇關(guān)于Java創(chuàng)建對象(顯式創(chuàng)建和隱含創(chuàng)建)的文章就介紹到這了,更多相關(guān)Java創(chuàng)建對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java如何根據(jù)根據(jù)IP地址獲取省市

    Java如何根據(jù)根據(jù)IP地址獲取省市

    這篇文章主要為大家詳細(xì)介紹了兩種在Java中獲取IP地址對應(yīng)地理位置信息的方法,分別是使用ip2region庫和GeoIP庫,感興趣的小伙伴可以了解下
    2025-01-01
  • java RSAUtils 加密工具類操作

    java RSAUtils 加密工具類操作

    這篇文章主要介紹了java RSAUtils 加密工具類操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Springboot集合前端實現(xiàn)進(jìn)度條顯示功能實例

    Springboot集合前端實現(xiàn)進(jìn)度條顯示功能實例

    這篇文章主要介紹了使用進(jìn)度條提升用戶體驗的原因,特別是在處理大文件上傳、下載或長時間運(yùn)行的操作時,進(jìn)度條通過實時反饋任務(wù)進(jìn)度,減少用戶的不確定感,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2024-11-11
  • 詳解Spring Boot 事務(wù)的使用

    詳解Spring Boot 事務(wù)的使用

    spring Boot 使用事務(wù)非常簡單,首先使用注解 @EnableTransactionManagement 開啟事務(wù)支持后,然后在訪問數(shù)據(jù)庫的Service方法上添加注解 @Transactional 便可。接下來通過本文重點給大家介紹spring boot事務(wù)的使用,需要的的朋友參考下吧
    2017-04-04
  • Java使用正則表達(dá)式判斷獨立字符的存在(代碼示例)

    Java使用正則表達(dá)式判斷獨立字符的存在(代碼示例)

    通過使用正則表達(dá)式,我們可以更加靈活地判斷字符串中是否包含特定的字符,并且可以控制匹配的條件,如獨立的字符,這為我們處理字符串提供了更多的選擇和功能,這篇文章主要介紹了Java使用正則表達(dá)式判斷獨立字符的存在,需要的朋友可以參考下
    2023-10-10
  • Java RPC框架熔斷降級機(jī)制原理解析

    Java RPC框架熔斷降級機(jī)制原理解析

    這篇文章主要介紹了Java RPC框架熔斷降級機(jī)制原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Mybatis之動態(tài)SQL使用小結(jié)(全網(wǎng)最新)

    Mybatis之動態(tài)SQL使用小結(jié)(全網(wǎng)最新)

    MyBatis令人喜歡的一大特性就是動態(tài)SQL,?在使用JDBC的過程中,?根據(jù)條件進(jìn)行SQL的拼接是很麻煩且很容易出錯的,MyBatis通過OGNL來進(jìn)行動態(tài)SQL的使用解決了這個麻煩,對Mybatis動態(tài)SQL相關(guān)知識感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Java CompletableFuture 異步超時實現(xiàn)深入研究

    Java CompletableFuture 異步超時實現(xiàn)深入研究

    這篇文章主要為大家介紹了Java CompletableFuture 異步超時實現(xiàn)深入研究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 利用Java實現(xiàn)圖片轉(zhuǎn)化為ASCII圖的示例代碼

    利用Java實現(xiàn)圖片轉(zhuǎn)化為ASCII圖的示例代碼

    本文將詳細(xì)講解如何利用 Java 實現(xiàn)圖片轉(zhuǎn)化為 ASCII 圖,從項目背景與意義、相關(guān)技術(shù)知識,到系統(tǒng)需求與架構(gòu)設(shè)計,再到詳細(xì)實現(xiàn)思路、完整代碼和代碼解讀,最后對項目進(jìn)行總結(jié)與展望,需要的朋友可以參考下
    2025-03-03
  • SpringBoot用JdbcTemplates操作Mysql實例代碼詳解

    SpringBoot用JdbcTemplates操作Mysql實例代碼詳解

    JdbcTemplate是Spring框架自帶的對JDBC操作的封裝,目的是提供統(tǒng)一的模板方法使對數(shù)據(jù)庫的操作更加方便、友好,效率也不錯,這篇文章主要介紹了SpringBoot用JdbcTemplates操作Mysql
    2022-10-10

最新評論

平利县| 浦北县| 大兴区| 太原市| 桑植县| 无棣县| 大宁县| 阳谷县| 乐清市| 华容县| 鄢陵县| 浦城县| 潍坊市| 汝州市| 华安县| 南昌市| 商河县| 招远市| 天镇县| 都匀市| 唐河县| 庐江县| 浦东新区| 汪清县| 华宁县| 吉木萨尔县| 河曲县| 柳河县| 大田县| 谢通门县| 德令哈市| 寿阳县| 克东县| 公安县| 瑞丽市| 文化| 正阳县| 晋宁县| 长春市| 长治县| 家居|