程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺析Java中部分變量與成員變量同名處理技能

淺析Java中部分變量與成員變量同名處理技能

編輯:關於JAVA

淺析Java中部分變量與成員變量同名處理技能。本站提示廣大學習愛好者:(淺析Java中部分變量與成員變量同名處理技能)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析Java中部分變量與成員變量同名處理技能正文


要想辨別這哥倆,起首,我們得曉得它們分離是甚麼。先從成員變量下刀。

成員變量

       我們來研討一個事物:

               屬性:內在特點;例如人的身高,體重

               行動:可以或許做甚麼;例如人有措辭,打球等行動。

       而在Java說話中,最根本的單元是類,類就是用來表現事物的。

       用類class來描寫事物也是如斯:

               屬性:對應類中的成員變量

               行動:對應類中的成員函數

       界說類其實就是在界說類中的成員(成員變量和成員函數)

      拓展:類是一個籠統的概念,而對象就是類的詳細的存在,表現。例如:生涯中的汽車,可以看作一個類,我們稱之為汽車類,每台車都有色彩和輪胎數(可以界說為屬性,即成員變量),每台車都可以跑(即車的行動,對應類總的成員函數),我們把汽車實例化一下,即會發生一個對象,好比奔跑、寶馬(BMW)。

Demo1:

public class Car {
 private String color; // 界說汽車色彩,全局變量
 private int numLuntai; // 界說汽車輪胎數,全局變量
 
 public Car(String color, int numLuntai){
   super();
   this.color = color;
   this.numLuntai = numLuntai;
 }
 public void run() {
   System.out.println(this.numLuntai+ "個輪子的" +this.color + "轎車在馬路下行駛著");
 }
}
public class ClassTest {
 public static void main(String[] args){
   Car bmw = new Car("黑色", 4); // 創立一個轎車對象,名字為bmw
   bmw.run();
 }
}

運轉成果:

4個輪子的黑色轎車在馬路下行駛著

      個中color和numLuntai就稱為Car 類的成員變量,這個屬機能夠用來描寫一個類的屬性,不然,它就應當界說為部分變量。

      例如一個for輪回中的i等於部分變量。

                  for(int i = 0; i < args.length; i++) {
                          ......
                  }

又例如寫在成員辦法中變量是部分變量。

publicclass Car {
 private String color; // 界說汽車色彩,全局變量
 private int numLuntai; // 界說汽車輪胎數,全局變量
 public Car(String color, int numLuntai){
   super();
   this.color = color;
   this.numLuntai = numLuntai;
 }
public void run() {
   String carName=”寶馬牌”; //這個就是部分變量
   System.out.println(this.numLuntai+ "個輪子的" +this.color + carName+"轎車在馬路下行駛著");
 }
}
publicclass ClassTest {
 public static void main(String[] args){
   Car bmw = new Car("黑色", 4); // 創立一個轎車對象,名字為bmw
   bmw.run();
 }
}

成果:

4個輪子的黑色寶馬牌轎車在馬路下行駛著

成員變量和部分變量的差別

       成員變量:

          ①成員變量界說在類中,在全部類中都可以被拜訪。

          ②成員變量跟著對象的樹立而樹立,跟著對象的消逝而消逝,存在於對象地點的堆內存中。

          ③成員變量有默許初始化值。

      部分變量:

          ①部分變量只界說在部分規模內,如:函數內,語句內等,只在所屬的區域有用。

          ②部分變量存在於棧內存中,感化的規模停止,變量空間會主動釋放。

          ③部分變量沒有默許初始化值

      在應用變量時須要遵守的准繩為:就近准繩

      起首在部分規模找,有就應用;接著在成員地位找。

看到這裡能夠有點懵,上面給年夜家整頓個示例,細心想一想其實特殊簡略。

先來看一個簡略的代碼。

起首我界說了一個Person類。

public class Person {
 private int age=1000;//界說成員變量,年紀為1000

 public void setAge(int age) {
 age=age;
 System.out.println("辦法內的年紀"+age);
 }
 public void sayHello() {
 System.out.println("我的年紀是"+age+".");
 }
}

然後在主函數外面創立對象並輸入。

Person p=new Person();
p.setAge(20);
p.sayHello();

輸入成果是甚麼?其實不是我們想象的我的年紀是20,而是上面如許:

//辦法內的年紀20
//我的年紀是1000.

想一下其實就很輕易懂得。

一句話,假如分歧名,那末辦法內的變量名代表成員變量;假如同名,那末辦法內的變量名就只表現部分變量了,和成員變量一毛錢關系都沒有了。

所以,起首當我們創立了一個Person對象p,在創立對象的時刻就曾經完成了成員變量的初始化了。成員變量age的初始值是1000。

當我們p.setAge(20)的時刻,其實這個20只在setAge這個辦法內起感化,所以輸入了辦法內年紀20,履行完這句話後,20就被燒毀了。

然後履行sayHello,它外面的age代表的是成員變量的值,所以照舊是1000。

到這裡假如照樣不克不及懂得,可以本身寫代碼看輸入成果領會下。

那末,當同名的時刻,我們就是要讓這個變量名表現成員變量,有無方法呢?

那就要說到this症結字了。我們把Person類改成如許:

public class Person {
 private int age=1000;

 public void setAge(int age) {
 this.age=age;
 System.out.println("辦法內的年紀"+age);
 }
 public void sayHello() {
 System.out.println("我的年紀是"+age+".");
 }
}


再運轉代碼,發明代碼運轉成果釀成了上面如許:

//辦法內的年紀20
//我的年紀是20.

this表現的是以後對象。

this.age在這裡詳細表現p對象的age(即p對象的成員變量age)的值是20。

雖然二者的實質都是變量,可是應用時卻有相當年夜的差別,略不留心便可能墮入圈套。且先記住:在一個類中,假如一個變量可以或許用來描寫一個類的屬性,那就界說為成員變量,不然,它就應當界說為部分變量。不克不及懂得的話就多寫寫代碼就可以懂得了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved