1. 程式人生 > >由一段程式引發關於物件的思考

由一段程式引發關於物件的思考

import java.util.Date;

public class Student{
  private int id;

  private String name;

  public static Date date;

  public Student(){

    this(0001);

  }

  public Student(int a){

    this.id=a;

  }

  public setname(String s){
    this.name=s;

  }

 public getname(){

    return this.name;

  }

  public static void setgrade(Date date1){

    Student.date=date1;

  }

}

類抽象是指將類的實現和使用分離,類的使用者不需要知道類時如何實現的;實現的細節經過封裝,對使用者隱藏起來,這稱為類的封裝

類的成員(資料和方法)修飾符有public,private,protected和包內私有(啥都不加);public是所有的類都允許訪問,private是隻允許本類訪問,離開該類訪問將導致錯誤;protected是類的子類訪問和而包內私有是同一個包內的類可以訪問;

通常情況下,我們將類的資料成員定義為private,使得類更易於維護;如果想讓資料變得可讀,只需提供get方法;如果想讓資料可更新,應該提供set方法,例如

Student中的name

注意,不要從構造方法中傳入引數來初始化靜態資料,最好使用set方法改變靜態資料,如Student中的date

上文中的關鍵字this是指向呼叫物件本身的引用名;一種常見的做法是引用類的隱藏資料域;隱藏的靜態變數可以通過“類名.靜態變數”的方式引用,隱藏的例項變數就需要使用關鍵字this來引用,例如Student中的dateid

如果一個區域性變數和一個類變數具有相同的名字,那麼區域性變數優先,而同名的類變數將被隱藏;

//java中如何用一個更大的陣列替換原陣列中的內容,但是名字不變呢?程式碼如下:

int [] temp=new int [elements.length*2);

System.arraycopy(elements,0,temp,0,elements.length);

elements=temp;

//以下程式碼是求一字串是否是另一字串的子串?(自己寫的,你應該能看懂)

import java.util.Scanner;
public class SubString {
    public static void main(String []args){
        System.out.println("Please enter two strings:");
Scanner input=new Scanner(System.in);
String s1=input.nextLine();  //輸入子串
String s2=input.nextLine();  //輸入父串
boolean b1;
b1=judge(s2,s1);
        if(b1)
            System.out.println("Yes");
        else    System.out.println("No");
s2.indexOf(s1);
}
   public static boolean judge(String s2,String s1) {
        int l2 = s2.length();
        int l1 = s1.length();
        if (l1 > l2 || l1 <1) return false;
        char[] v2 = s2.toCharArray();
        char[] v1 = s1.toCharArray();
        int i,j;
        for(j=0;j<l1;j++) {  //子串的長度
for (i = 0; i < l2; i++)  //父串的長度
{
                if (v1[j] == v2[i]) {
                    int k=j,t=i;
                    if (v1[++k] == v2[++t]) ;
                   if(k==l1-1 && t<l2) return true;
                   else continue;
}
            }
        }
        return false;
}
}