Java中set/get和toString的使用方法是什么

這篇文章主要介紹“Java中set/get和toString的使用方法是什么”,在日常操作中,相信很多人在Java中set/get和toString的使用方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”Java中set/get和toString的使用方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)公司是專業(yè)的長泰網(wǎng)站建設(shè)公司,長泰接單;提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行長泰網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

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

構(gòu)造函數(shù)的最大作用就是創(chuàng)建對(duì)象時(shí)完成初始化,當(dāng)我們在new一個(gè)對(duì)象并傳入?yún)?shù)的時(shí)候,會(huì)自動(dòng)調(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);  }}

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

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

這就說明在我們創(chuàng)建Test01對(duì)象時(shí),會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù)完成初始化,這時(shí)程序中的name屬性就成了Wade。上面說到構(gòu)造函數(shù)是為了在new對(duì)象傳入?yún)?shù)后完成屬性的初始化。但是 ,為什么我程序中不寫構(gòu)造函數(shù)依然可以完成初始化。

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

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

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

所以,比較穩(wěn)妥也是較常用的方式是在java類中同時(shí)定義無參構(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ù)實(shí)例化對(duì)象    Test01 t=new Test01("Wade");    //又可以調(diào)用有參構(gòu)造函數(shù)實(shí)例化對(duì)象    Test01 t1=new Test01();    System.out.println(t.name+","+t1.name);  }}

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

這樣在實(shí)際使用中會(huì)非常方便的。

二、set()/get()方法

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

然后我們來了解一下JAVA面向?qū)ο缶幊讨械姆忾]性和安全性。封閉性即對(duì)類中的域變量進(jìn)行封閉操作,即用private來修飾他們,如此一來其他類則不能對(duì)該變量訪問。這樣我們就將這些變量封閉在了類內(nèi)部,這樣就提高了數(shù)據(jù)的安全性,當(dāng)我們想要操作這些域變量怎么辦呢?我們可以通過兩種方法,第一中即通過public方式的構(gòu)造器(或稱構(gòu)造函數(shù)),對(duì)象一實(shí)例化就對(duì)該變量賦值。第二種就是通過上面提到的set和get方法,這里我舉一個(gè)特定的例子,我定義一個(gè)Person類,該類中有name、age這兩個(gè)私有域變量,然后我定義setname()、getname()、setage()、getage()這四個(gè)方法,通過這四個(gè)方法來實(shí)現(xiàn)對(duì)name和age的操作。這樣一來,我不用直接對(duì)Person類中的域變量操作,而是通過set和get方法間接地操作這些變量,這樣就能提高域變量的安全性,同時(shí)又保證了域變量的封裝型。

現(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ù)實(shí)例化對(duì)象    Test01 t=new Test01("Wade");    //又可以調(diào)用無參構(gòu)造函數(shù)實(shí)例化對(duì)象    Test01 t1=new Test01();//使用set()方法給屬性賦值    t.setName("CP3");//傳統(tǒng)方式賦值    t1.name="Rose";//使用get()方法獲取屬性值    System.out.println("t:"+t.getName()+","+"t1:"+t1.name);//在同一個(gè)類中,t.getName()和t.name效果是一樣的,但如果不是同一個(gè)類,屬性是私有的,就只能使用t.getName(),set()方法也是一樣的。  }}

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

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

三、toString()方法

Object類具有一個(gè)toString()方法,你創(chuàng)建的每個(gè)類都會(huì)繼承該方法。它返回對(duì)象的一個(gè)String表示,并且對(duì)于調(diào)試非常有幫助。然而對(duì)于默認(rèn)的toString()方法往往不能滿足需求,需要覆蓋這個(gè)方法。toString()方法將對(duì)象轉(zhuǎn)換為字符串。

將上述代碼最后加上

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

運(yùn)行結(jié)果是

全限定名@地址首地址Test01@6d6f6e28Test01@135fbaa4

這是什么呢?是對(duì)象的地址值,但這不是我們需要的信息,我們想要對(duì)象的各種屬性值,所以需要重寫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ù)實(shí)例化對(duì)象    Test01 t=new Test01("Wade");    //又可以調(diào)用無參構(gòu)造函數(shù)實(shí)例化對(duì)象    Test01 t1=new Test01();    //使用set()方法給屬性賦值    t.setName("CP3");    //傳統(tǒng)方式賦值    t1.name="Rose";    //使用get()方法獲取屬性值    System.out.println("t:"+t.getName()+","+"t1:"+t1.name);    //在同一個(gè)類中,t.getName()和t.name效果是一樣的,但如果不是同一個(gè)類,屬性是私有的,就只能使用t.getName(),set()方法也是一樣的。    System.out.println(t.toString());    System.out.println(t1.toString());  }}

運(yùn)行結(jié)果是

t:CP3,t1:RoseTest01{name='CP3'}Test01{name='Rose'}

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

到此,關(guān)于“Java中set/get和toString的使用方法是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

文章名稱:Java中set/get和toString的使用方法是什么
URL鏈接:http://muchs.cn/article10/jehpgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、Google品牌網(wǎng)站設(shè)計(jì)、自適應(yīng)網(wǎng)站、App設(shè)計(jì)網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)