1. 程式人生 > >JAVA----關鍵字用法

JAVA----關鍵字用法

this

使用注意:

1.代表所屬函式的呼叫者物件。
2.如果存在同名的成員變數和區域性變數時,在方法內部預設是訪問區域性變數(java編譯器採用“就近原則”),但可以用this訪問成員變數。
3.在一個建構函式中可以訪問另一個建構函式,但是呼叫語句必須在該建構函式的第一個語句,另外這兩個函式之間不能互相呼叫。
4.如果在一個方法中訪問一個變數時,該變數只有成員變數時,java編譯器會在該變數前加this。

程式碼:

class People
{
    int id;
    String name;
    int age;

    public People
(int id,String name, int age) { this(age); this.id = id; this.name = name; } public People(int age) { this.age = age; } public void compara(People p1){ if(this.age > p1.age) System.out.println(this.name + " big"); else
if(this.age < p1.age) System.out.println(p1.name + " big"); else System.out.println( "equals"); } } class Demo1 { public static void main(String[] args) { People a = new People(11,"Tom",48); People b = new People(12
,"Marry",30); a.compara(b); } }

static

static修飾成員變數:

訪問方式:

   物件.屬性名  或   類名.屬性名((比較常用))
   物件.函式名()  或   類名.函式名()((比較常用))

使用注意:

 1.static 修飾成員變數時,該成員變數的資料屬於共享資料。
 2.非靜態成員變數只能用物件訪問。
 3.靜態函式能直接訪問靜態的成員,不能直接訪問非靜態成員,但如果靜態函式中存在物件,則可以訪問非靜態成員。
 4.靜態函式不能含有this和super關鍵詞。
 5.非靜態函式既能呼叫靜態成也能呼叫非靜態成員。
    **靜態成員變數的資料優先於物件存在**。
 class ArrayTool
 {
     public static String  ToString(int[] arr)
     {
         String aa="";
        for(int i=0; i<arr.length; i++)
         {
            if(i==0)  aa+="["+arr[i];
            else if(i==arr.length-1)
                 aa+= arr[i] +"]";
            else 
                aa +=" "+ arr[i] + " ";
         }
         return aa;
     }

     public static void Sort(int[] arr)
     {
         int len=arr.length;
         for(int i=0; i<len; i++)
         {
             for(int j= i+1; j<len-1; j++)
             {
                 if(arr[i]>arr[j])
                 {
                     int temp;
                     temp= arr[i];
                     arr[i]= arr[j];
                     arr[j]=temp;
                 }
             }
         }
     }
 }

 class Demo2
 {
     public static void main(String[] args)
     {
        int[] arr = {1, 6, 9, 3, 5};
        ArrayTool.Sort(arr);
        System.out.println("Array" +  ArrayTool.ToString(arr)) ;
     }
 }

super

定義:

  代表父類空間的引用;

作用:

 1.子父類存在同名的成員時,在子類中預設是訪問子類的成員,但可以通過super訪問父類成員。
 2. 建立子類物件時,預設會呼叫父類無參的構造方法,可以用super指向父類的構造方法。

注意事項:

 1. 如果在子類的構造方法上沒有指定呼叫父類的構造方法時,java編譯器會在子類的構造方法上加上super。
 2. super關鍵字呼叫父類的建構函式時,該語句必須是子類建構函式的第一個語句。
 3. super 和 this 不能出現在同一個建構函式中。

final

作用:

final 關鍵字修飾一個基本型別變數時,該變數不能重新賦值,第一次的值為最終的。
fianl 關鍵字修飾一個引用型別變數時,該變數不能重新指向新的物件。
final 關鍵字修飾一個函式時,該函式不能被重寫。
fianl 關鍵字修飾一個類時,該類不能被繼承。

常量的修飾符一般為: public static final
常量一般全部用大寫字母表示,單詞之間用下劃線隔開

程式碼:

class Circle 
{
    double r;
    final double pi = 4.0;
    public Circle(double r)
    {
        this.r = r;
    }
    public void getArea()
    {
        System.out.println("圓形的面積" + r*r*pi);
    }
}

class  Demo1  
{

    public static void main(String[] args) 
    {
        Circle c = new Circle(4.0);
        c = new Circle(5.0);
          c.getArea();
          //test(c);
    }

}

abstract

使用注意:

1.如果一個函式沒有方法體,該函式必須用abstract修飾。
2.如果一個類有抽象函式,那麼該類必須用abstract修飾。
3.如果一個非抽象的類繼承了抽象的類,那麼必須把抽象的方法全部實現。
4.抽象類不能建立物件。
5.抽象類可以存在非抽象方法和建構函式。
6.abstract不能與final ,static , private 一起修飾一個方法。

程式碼:

//用抽象類求矩形,圓形的面積和周長
abstract class MyShape
{

    public abstract void getArea();

    public abstract void getLength();
}

class Rect extends MyShape
{
    double x,y;
    public Rect(double x,double y)
    {
        this.x = x ;
        this.y = y ;

    }
    public void getArea()
    {
         System.out.println("Rect " + x*y);
    }
    public void getLength()
    {
         System.out.println("Rect " + 2*(x+y));
    }
}

class Circle extends MyShape
{
    double r;
    public static final double PI = 3.14;
    public Circle(double r)
    {
        this.r = r;
    }
    public void  getArea()
    {
        System.out.println("Circle " + r*r*PI);
    }
    public void getLength()
    {
        System.out.println("Circle " + 2*r*PI);

    }

}


class Demo3
{
    public static void main(String[] args)
    {
        Circle ss = new Circle(4.0);
        ss.getArea();
        ss.getLength();
        Rect aa = new Rect(2,4);
        aa.getArea();
        aa.getLength();

    }
}

instanceof

定義:

  判斷一個物件是否屬於指定的型別

使用格式:

 物件  instanceof 類別

使用前提:

 判斷的物件於指定的型別必須要存在繼承或實現的關係

程式碼:

class Animal
 {
     String name;

     public Animal(String name)
     {
         this.name = name;
     }
 }

 class Dog extends Animal
 {
     public Dog(String  name)
     {
         super(name);
     }
     public void bite()
     {
         System.out.println(name + "咬人");
     }
 }

 class Mouse extends Animal
 {
     public Mouse(String name)
     {
         super(name);
     }
     public void dig()
     {
            System.out.println(name + "挖洞");
     }
 }

 class Demo2
 {
     public static void main(String[] args)
     {
         Dog ss = new Dog("dddddd"); 
         System.out.println("狗是狗類嗎"+ (ss instanceof Dog));  //true
         Animal dd = new Animal("ffff");
         System.out.println("動物是狗類嗎"+ (dd instanceof Dog)); //false 
     }
 }