Java(基礎)的類與變數,java基礎變數
Java的類與成員變數
在我們學習程式設計語言中,需要靈活自用,那麼怎麼來靈活的將所有的函數屬性來調用來實現完整的工程呢?
所以我們需要認識到類和變數的定義
1、類是什嗎?
類是抽象的概念,而對象就是類的具體存在體現。列如:我們的類就像生活中的小汽車,那麼我們就可以將小汽車看作為一個類,我們稱之為小汽車類,每一台小汽車都有輪胎數、顏色等(可以定義為屬性,即成員變數),每一台車都可以跑(即車的行為,對應類總的成員函數),我們把小汽車執行個體一下,即產生一個對象,比如寶馬(BMW)。
列:public class littlecar #定義的小汽車類
2、成員變數
先看一個事物:
屬性:外觀特徵;列如人的身高、體重、(顏值。。。。。 :)
行為:能夠做什麼;列如:能跑、能跳、(能飛。。。。。我會飛! :)
而在Java語言中,最基本單位的就是類,而類就是用來體現事物的。
而class就是來描述事物:
屬性:對應類的成員變數
行為:對應成員的函數
定義類其實就是在定義類的成員(成員變數和成員函數)
來看一下一個執行個體:
列1:
public class LittleCar {
private String color; // 定義汽車顏色,全域變數
private int numLuntai; // 定義汽車輪胎數,全域變數
public LittleCar(String color, int numLuntai){
super();
this.color =color;
this.numLuntai =numLuntai;
}
public void run() {
System.out.println(this.numLuntai+ "個輪子的" +this.color + "轎車在馬路上行駛著");
}
}
public class ClassT {
public static void main(String[] args){
LittleCar BMW= new LittleCar("黑色", 4); // 建立一個轎車對象,名字為BMW
BMW.run();
}
}
運行結果:
4個輪子的黑色轎車在馬路上行駛著
其中color和numLuntai就稱為Car 類的成員變數,這個屬效能夠用來描述一個類的屬性,否則,它就應該定義為局部變數。
3、局部變數
例如一個for迴圈中的i即是局部變數。
for(int i = 0; i < args.length; i++) {
......
}
列2:
publicclass LittleCar {
private String color; // 定義汽車顏色,全域變數
private int numLuntai; // 定義汽車輪胎數,全域變數
public LittleCar(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){
LittleCar BMW= newCar("黑色", 4); // 建立一個轎車對象,名字為BMW
BMW.run();
}
}
結果:
4個輪子的黑色平治牌轎車在馬路上行駛著
4、成員變數和局部變數的區別
成員變數:
①成員變數定義在類中,在整個類中都可以被訪問。
②成員變數隨著對象的建立而建立,隨著對象的消失而消失,存在於對象所在的堆記憶體中。
③成員變數有預設初始化值。
局部變數:
①局部變數只定義在局部範圍內,如:函數內,語句內等,只在所屬的地區有效。
②局部變數存在於棧記憶體中,作用的範圍結束,變數空間會自動釋放。
③局部變數沒有預設初始化值
在使用變數時需要遵循的原則為:就近原則
首先在局部範圍找,有就使用;接著在成員位置找。
5、靜態變數
由static修飾的變數稱為靜態變數,其實質上就是一個全域變數。如果某個內容是被所有對象所共用,那麼該內容就應該用靜態修飾;沒有被靜態修飾的內容,其實是屬於對象的特殊描述。
列3:
class Person{
//成員變數,執行個體變數
String name;
//靜態變數,類變數
//所有對象共用的屬性用static修飾
static String country = "CN";
public void show(){
System. out.println(country +":" + name);
//等效語句:System.out.println(Person.country+ ":"+ this.name);
}
}
class StaticDemo{
public static void main(String[]args){
Personp = new Person();
System. out.println(p.country);
//可以用類名直接調用
System. out.println(Person.country);
}
}
結果:
CN
CN
6、成員變數和靜態變數的區別
1、兩個變數的生命週期不同
成員變數隨著對象的建立而存在,隨著對象被回收而釋放。
靜態變數隨著類的載入而存在,隨著類的消失而消失。
2、調用方式不同
成員變數只能被對象調用。
靜態變數可以被對象調用,還可以被類名調用。
3、別名不同
成員變數也稱為執行個體變數。
靜態變數也稱為類變數。
4、資料存放區位置不同
成員變數儲存在堆記憶體的對象中,所以也叫對象的特有資料。
靜態變數資料存放區在方法區(共用資料區)的靜態區,所以也叫對象的共用資料。
7、成員變數、局部變數、靜態變數列表對比:
成員變數、局部變數、靜態變數的區別
|
|
成員變數 |
局部變數 |
靜態變數 |
|
定義位置 |
在類中,方法外 |
方法中,或者方法的形式參數 |
在類中,方法外 |
|
初始化值 |
有預設初始化值 |
無,先定義,賦值後才能使用 |
有預設初始化值 |
|
調用方式 |
對象調用 |
--- |
對象調用,類名調用 |
|
儲存位置 |
堆中 |
棧中 |
方法區 |
|
生命週期 |
與對象共存亡 |
與方法共存亡 |
與類共存亡 |
|
別名 |
執行個體變數 |
--- |
類變數 |
結束語:(我也是再前輩那裡借鑒的!所以有些說的不是很好,請大家多多包涵!謝謝你們的預覽。還有:)這個符號很好玩的哈()上邊那裡是開玩笑的啦!加油吧程式猿!!!!)