課堂筆記學習java(初級)第三節課

 

運算符 表達式和語句
因爲大家肯定都學過C或C++的,所以這部分的內容自己可以回憶,都是一樣的,略.


類和對象

1.類:類是組成java程序的基本要素.類封裝了一類對象的狀態和方法.類是用來定義對象的模板.
     類的實現包括兩個部分:類聲明和類體.基本格式爲:

 

程序代碼:

class 類名
{
類體的內容
}
 

 

其中class是關鍵字,用來類定義."class 類名"是類的聲明部分,類名必須是合法的java標識符,{}之間的內容是類

體,由變量的定義和方法(函數)的定義組成.
所謂變量定義,如int x或 intx=10;
但不能出現除聲明以外的變量操作語句,如 int x; x=10;//是錯誤的

(1)變量:成員變量和局部變量
a.成員變量在整個類內都有效,局部變量只在定義它的方體體內有效.例:

 

程序代碼:


class Sun
{ int distance;
  int find()
  {int a=12;
   distance=a;//合法,distance是成員變量在整個類內有效
   return distance;
  }
void g()
{inty;
y=a; //非法,a是局部變量,不在find()中就會失效
}
}

 

注意:成員變量在它在類中書寫的先後位置無關.但不提倡把成員變量的定義分散的寫在方法之間或類體的後面.

b.成員變量又分爲實例成員變量(實例變量)和類成員變量(類變量)
  類變量是指變量類型前加關鍵字 static 的成員變量,也稱爲靜態變量.例:
 

程序代碼:


class Sun
{float x;  //實例變量
static int y;   //類變量
}
 

 

c.當局部變量與成員變量名字相同時,則成員變量被隱藏,即這個成員變量在這個方法內暫時失效,例:

 

程序代碼:


class Tom
{int x=90,y;
void f()
{int x=3;
y=x;  //y得到的值應是3,因爲成員變量x=90與y在此方法體裏失效
}
}
 

 

但如果想在方法體內使用成員變量則通過關鍵字 this 來實現,例:
 

程序代碼:


class 三角形
{float sideA,sideB,sideC,lengthSum;
void setside(float sideA,float sideB,float sideC)
{this.sideA=sideA; //this.sideA表示成員變量sideA
this.sideB=sideB;
this.sideC=sideC;
}
}
 

 


(2)方法
方法即是函數,包括聲明和定義,在類體中是函數的定義,與C或C++中函數的聲明或定義格式是一樣的.

a.類方法和實例方法
實例方法即在方法返回值類型前加上關鍵字static,例:
 

程序代碼:

class A
{int a;
float max(float a,float b)//實例方法
{//...}
static float min()//類方法
{//...}
}
[code]

 

b.方法的重載
方法的重載定義爲多個函數定義時函數名必須相同,參數的類型和個數必須不同.例:

[code]
class Area
{float getArea(float r)
{return 3.14*r*r;}
double getArea(float x,int y)
{return x*y;}
float getArea(float x,float y)
{return x+y;}
double getArea(float x,float y,float z)
{return x*y*z*0.2;}
}
 

 

注意:在函數的重載中方法的返回值類型和參數的名字參加比較.

c.構造方法
構在方法是一種特殊方法,它的名字必須與類名完全相同,而且沒有類型,構造方法也可以重載的.
用法:一般用類創建對象時,使用構在方法,後面會有詳細說明.

 

程序代碼:


class 梯形
{float 上底,下底,高;
梯形()
{上底=60;
下底=100;
高=20}

 

梯形(float x,float y,float z)
{上底=x;
下底=y;
高=z;
}
}

 

 


2.對象
類是創建對象的模板.當使用一個類創建了一個對象時,也就是說給出了這個類的一個實例.
(1)對象的創建:包括對象的聲明和爲對象分配內存空間
聲明格式: 類的名字  對象的名字;

分配內存空間格式; 類的名字 對象的名字=new 類的名字();  例:

 

程序代碼:


class XiyoujiRenwu
{   float height,weight;
    String head, ear,hand,foot, mouth;
    void speak(String s)
{  System.out.println(s);
    }
}
class A
{   public static void main(String args[])
{  XiyoujiRenwu  zhubajie;       //聲明對象
       zhubajie=new  XiyoujiRenwu(); //爲對象分配內存,使用new 運算符和默認的構造方法
    }
}

 

 

 

 

程序代碼:

 

class Point
{  int x,y;
    Point(int a,int b)
{  x=a;
       y=b;
    }
}
public class A
{  public static void main(String args[])
{  Point p1,p2,p3;                 //聲明對象p1和p2
      p1=new Point(10,10);         //爲對象分配內存,使用 new 和類中的構造方法
      p2=new Point(23,35);  //爲對象分配內存,使用 new 和類中的構造方法
      // p3=new Point(); 錯誤語句!當類中定義了一個或多個構造方法,那麼java不提供默認的構造方法
}
}

 

 

(2)對象的內存模型
聲明對象時,內存不分配空間,只存在一個空對象;當用new 分配內存空間時,類中的成員變量就會被分配到相應的空

間中,並通過構造方法(如果有)初始化,函數的入口地址也會被載入內存.但此時局部變量不會被分配內存空間,只有

當對象調用類中的函數時,函數中的局部變量才被分配空間,但函數執行完後,局部變量釋放內存,所以如果在函數中

沒有對局部變量進行初始化,就沒有默認值,因此在使用局部變量之前,要事先爲其賦值.    
創建多個對象之間沒有相互狀態影響,個用個自的內存空間.

(3)對象的使用
對象不僅可以改變自己變量的狀態,而且還擁有了使用創建它的那個類中的方法的能力,對象通過使用這些方法可以產生一定的行爲.通過使用運算符" . "對象可以實現對自己的變量的訪問和方法的調用.具體使用如程序例子:
 

程序代碼:


class XiyoujiRenwu
{   float height,weight;
    String head, ear,hand,foot,mouth;
void speak(String s)
{  head="歪着頭";
       System.out.println(s);
    }
}
class Example4_3
{    public static void main(String args[])
   {  XiyoujiRenwu  zhubajie,sunwukong;//聲明對象
        zhubajie=new  XiyoujiRenwu();  //爲對象分配內存
    sunwukong=new  XiyoujiRenwu();
        zhubajie.height=1.80f;         //對象給自己的變量賦值
        zhubajie.head="大頭";
        zhubajie.ear="一雙大耳朵";
        sunwukong.height=1.62f;        //對象給自己的變量賦值
        sunwukong.weight=1000f;  
        sunwukong.head="繡發飄飄";
        System.out.println("zhubajie的身高:"+zhubajie.height);
        System.out.println("zhubajie的頭:"+zhubajie.head);
        System.out.println("sunwukong的重量:"+sunwukong.weight);
        System.out.println("sunwukong的頭:"+sunwukong.head);
        zhubajie.speak("俺老豬我想娶媳婦");          //對象調用方法
        System.out.println("zhubajie現在的頭:"+zhubajie.head);
        sunwukong.speak("老孫我重1000斤,我想騙八戒揹我");   //對象調用方法
        System.out.println("sunwukong現在的頭:"+sunwukong.head);
   }
}

 

 

 

 

程序代碼:

 

class 梯形
{   float 上底,下底,高,面積;
    梯形(float x,float y,float h)
{  上底=x;
       下底=y;
       高=h;
    }
    float 計算面積()
{  面積=(上底+下底)*高/2.0f;
       return 面積;
    }
    void 修改高(float height)
{  高=height;
    }
    float 獲取高()
{  return 高;
    }
}
public class Example4_4
{  public static void main(String args[])
{  梯形 laderOne=new 梯形(12.0f,3.5f,50),laderTwo=new 梯形(2.67f,3.0f,10);
      System.out.println("laderOne的高是:"+laderOne.獲取高());
      System.out.println("laderTwo的高是:"+laderTwo.獲取高());
      System.out.println("laderOne的面積是:"+laderOne.計算面積());
      System.out.println("laderTwo的面積是:"+laderTwo.計算面積());
      laderOne.修改高(10);
      float h=laderOne.獲取高();
      laderTwo.修改高(h*2);
      System.out.println("laderOne現在的高是:"+laderOne.獲取高());
      System.out.println("laderTwo現在的高是:"+laderTwo.獲取高());
      System.out.println("laderOne現在的面積是:"+laderOne.計算面積());
      System.out.println("laderTwo現在的面積是:"+laderTwo.計算面積());
    }
}

 




總結:介紹了類和對象及通過類體中的變量和方法來實現對對象的應用

發佈了208 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章