欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中構(gòu)造函數(shù),set/get方法和toString方法使用及注意說明

 更新時間:2023年01月09日 10:05:38   作者:望穿秋水見伊人  
這篇文章主要介紹了Java中構(gòu)造函數(shù),set/get方法和toString方法的使用及注意說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

一、構(gòu)造函數(shù)

構(gòu)造函數(shù)的最大作用就是創(chuàng)建對象時完成初始化,當我們在new一個對象并傳入?yún)?shù)的時候,會自動調(diào)用構(gòu)造函數(shù)并完成參數(shù)的初始化。

如下:

public class Test01 {
    private String name;
    //有參構(gòu)造函數(shù)
    public Test01(String name) {
        this.name = name;
    }
    public static void main(String[] args) {
        Test01 t=new Test01("Wade");
        System.out.println(t.name);
    }
}

運行結(jié)果是“Wade”

插一句,插入構(gòu)造函數(shù)快捷鍵:alt+insert,Constructor(構(gòu)造函數(shù))

這就說明在我們創(chuàng)建Test01對象時,會自動調(diào)用構(gòu)造函數(shù)完成初始化,這時程序中的name屬性就成了Wade。

上面說到構(gòu)造函數(shù)是為了在new對象傳入?yún)?shù)后完成屬性的初始化。

但是 ,為什么我程序中不寫構(gòu)造函數(shù)依然可以完成初始化。

1.如果不寫構(gòu)造函數(shù),程序會自動生成一個無參數(shù)無操作的構(gòu)造函數(shù)(默認的,隱藏)。

2.如果寫了構(gòu)造函數(shù),則自定義構(gòu)造函數(shù)會覆蓋無參數(shù)構(gòu)造函數(shù)。

3.如果只寫了有參數(shù)的構(gòu)造函數(shù),且不存在無參數(shù)的構(gòu)造函數(shù),將不能以 new XXX(); 這樣的方式實例化對象,在實例化對象代碼中,new XXX("***"); 括號中的參數(shù)必須與構(gòu)造函數(shù)的參數(shù)保持一致,否則報錯。(當然你也可以生成對象后通過他們的set、get方法進行賦值。)

所以,比較穩(wěn)妥也是較常用的方式是在java類中同時定義無參構(gòu)造函數(shù)和有參構(gòu)造函數(shù),代碼如下:

public class Test01 {
    private String name;
    //有參構(gòu)造函數(shù)
    public Test01(String name) {
        this.name = name;
    }
    //無參構(gòu)造函數(shù)
    public Test01() {
    }
    public static void main(String[] args) {
        //既可以調(diào)用有參構(gòu)造函數(shù)實例化對象
        Test01 t=new Test01("Wade");
        //又可以調(diào)用有參構(gòu)造函數(shù)實例化對象
        Test01 t1=new Test01();
        System.out.println(t.name+","+t1.name);
    }
}

運行結(jié)果是“Wade,null”

這樣在實際使用中會非常方便的。

二、set()/get()方法

我們先來看看set和get這兩個詞的表面意思,set是設(shè)置的意思,而get是獲取的意思,顧名思義,這兩個方法是對數(shù)據(jù)進行設(shè)置和獲取用的。

然后我們來了解一下JAVA面向?qū)ο缶幊讨械姆忾]性和安全性。封閉性即對類中的域變量進行封閉操作,即用private來修飾他們,如此一來其他類則不能對該變量訪問。

這樣我們就將這些變量封閉在了類內(nèi)部,這樣就提高了數(shù)據(jù)的安全性,當我們想要操作這些域變量怎么辦呢?

我們可以通過兩種方法,第一中即通過public方式的構(gòu)造器(或稱構(gòu)造函數(shù)),對象一實例化就對該變量賦值。

第二種就是通過上面提到的set和get方法,這里我舉一個特定的例子,我定義一個Person類,該類中有name、age這兩個私有域變量,然后我定義setname()、getname()、setage()、getage()這四個方法,通過這四個方法來實現(xiàn)對name和age的操作。

這樣一來,我不用直接對Person類中的域變量操作,而是通過set和get方法間接地操作這些變量,這樣就能提高域變量的安全性,同時又保證了域變量的封裝型。

現(xiàn)在以上述代碼為例,添加set/get方法

同樣使用快捷鍵:alt+insert,Getter and Setter

public class Test01 {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    //有參構(gòu)造函數(shù)
    public Test01(String name) {
        this.name = name;
    }
    //無參構(gòu)造函數(shù)
    public Test01() {
    }
    public static void main(String[] args) {
        //既可以調(diào)用有參構(gòu)造函數(shù)實例化對象
        Test01 t=new Test01("Wade");
        //又可以調(diào)用無參構(gòu)造函數(shù)實例化對象
        Test01 t1=new Test01();
	//使用set()方法給屬性賦值
        t.setName("CP3");
	//傳統(tǒng)方式賦值
        t1.name="Rose";
	//使用get()方法獲取屬性值
        System.out.println("t:"+t.getName()+","+"t1:"+t1.name);
	//在同一個類中,t.getName()和t.name效果是一樣的,但如果不是同一個類,屬性是私有的,就只能使用t.getName(),set()方法也是一樣的。
    }
}

運行結(jié)果是“t:CP3,t1:Rose”

這就是java編程語言的封裝思想,希望大家好好理解。

三、toString()方法

Object類具有一個toString()方法,你創(chuàng)建的每個類都會繼承該方法。

它返回對象的一個String表示,并且對于調(diào)試非常有幫助。

然而對于默認的toString()方法往往不能滿足需求,需要覆蓋這個方法。

toString()方法將對象轉(zhuǎn)換為字符串。

將上述代碼最后加上

System.out.println(t.toString());
System.out.println(t1.toString());

運行結(jié)果是

全限定名@地址首地址

Test01@6d6f6e28
Test01@135fbaa4

這是什么呢?是對象的地址值,但這不是我們需要的信息,我們想要對象的各種屬性值,所以需要重寫toString()方法。

同樣使用快捷鍵:alt+insert,toString()

public class Test01 {
    private String name;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
    //有參構(gòu)造函數(shù)
    public Test01(String name) {
        this.name = name;
    }
    //無參構(gòu)造函數(shù)
    public Test01() {
    }
    //重寫toString()方法,可以自定義
    @Override
    public String toString() {
        return "Test01{" +
                "name='" + name + '\'' +
                '}';
    }
 
    public static void main(String[] args) {
        //既可以調(diào)用有參構(gòu)造函數(shù)實例化對象
        Test01 t=new Test01("Wade");
        //又可以調(diào)用無參構(gòu)造函數(shù)實例化對象
        Test01 t1=new Test01();
        //使用set()方法給屬性賦值
        t.setName("CP3");
        //傳統(tǒng)方式賦值
        t1.name="Rose";
        //使用get()方法獲取屬性值
        System.out.println("t:"+t.getName()+","+"t1:"+t1.name);
        //在同一個類中,t.getName()和t.name效果是一樣的,但如果不是同一個類,屬性是私有的,就只能使用t.getName(),set()方法也是一樣的。
        System.out.println(t.toString());
        System.out.println(t1.toString());
    }
}

運行結(jié)果是

t:CP3,t1:Rose

Test01{name='CP3'}

Test01{name='Rose'}

這樣就得到我們想要的信息了,這就是重寫toString()在java類中的基本用法了。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java的Struts2框架中攔截器使用的實例教程

    Java的Struts2框架中攔截器使用的實例教程

    攔截器是Struts框架的重要特性,Struts中每一個Action請求都包裝在一系列的攔截器的內(nèi)部,這里我們就來看一下Java的Struts2框架中攔截器使用的實例教程
    2016-07-07
  • crawler4j抓取頁面使用jsoup解析html時的解決方法

    crawler4j抓取頁面使用jsoup解析html時的解決方法

    crawler4j對response沒有指定編碼的頁面,解析成亂碼,很讓人煩惱,下面給出解決方法,需要的朋友可以參考下
    2014-04-04
  • SpringCloud Feign隔離與降級詳細分析

    SpringCloud Feign隔離與降級詳細分析

    Feign是Netflix公司開發(fā)的一個聲明式的REST調(diào)用客戶端; Ribbon負載均衡、 Hystrⅸ服務(wù)熔斷是我們Spring Cloud中進行微服務(wù)開發(fā)非?;A(chǔ)的組件,在使用的過程中我們也發(fā)現(xiàn)它們一般都是同時出現(xiàn)的,而且配置也都非常相似
    2022-11-11
  • Java實現(xiàn)把文件壓縮成zip文件的示例代碼

    Java實現(xiàn)把文件壓縮成zip文件的示例代碼

    這篇文章主要為大家介紹了如何通過Java語言實現(xiàn)將文件壓縮成zip文件,本文中示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • MyBatis Plus配置日志CRUD的使用詳解

    MyBatis Plus配置日志CRUD的使用詳解

    這篇文章主要介紹了MyBatis Plus配置日志,CRUD的使用,,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Java抽象類和接口使用梳理

    Java抽象類和接口使用梳理

    對于面向?qū)ο缶幊虂碚f,抽象是它的一大特征之一,在?Java?中可以通過兩種形式來體現(xiàn)OOP的抽象:接口和抽象類,下面這篇文章主要給大家介紹了關(guān)于Java入門基礎(chǔ)之抽象類與接口的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • SpringBoot使用Thymeleaf模板引擎訪問靜態(tài)html的過程

    SpringBoot使用Thymeleaf模板引擎訪問靜態(tài)html的過程

    這篇文章主要介紹了SpringBoot使用Thymeleaf模板引擎訪問靜態(tài)html的過程,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • JavaScript base64 與 File 之間的互轉(zhuǎn)(操作方法)

    JavaScript base64 與 File 之間的互轉(zhuǎn)(操作方法)

    在JavaScript 中,可以使用 Blob 對象將 base64 字符串轉(zhuǎn)換為 File 對象,這篇文章主要介紹了JavaScript base64 與 File之間的互轉(zhuǎn),需要的朋友可以參考下
    2024-05-05
  • Intellij Idea插件開發(fā)之創(chuàng)建項目層級的右鍵菜單

    Intellij Idea插件開發(fā)之創(chuàng)建項目層級的右鍵菜單

    這篇文章主要介紹了Intellij Idea插件開發(fā)之創(chuàng)建項目層級的右鍵菜單,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Java設(shè)計模式之迭代模式(Iterator模式)介紹

    Java設(shè)計模式之迭代模式(Iterator模式)介紹

    這篇文章主要介紹了Java設(shè)計模式之迭代模式(Iterator模式)介紹,本文用一個老師點名的現(xiàn)象描述了迭代模式的使用,需要的朋友可以參考下
    2015-03-03

最新評論