由一段程式引發關於物件的思考
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方法,例如
注意,不要從構造方法中傳入引數來初始化靜態資料,最好使用set方法改變靜態資料,如Student中的date;
上文中的關鍵字this是指向呼叫物件本身的引用名;一種常見的做法是引用類的隱藏資料域;隱藏的靜態變數可以通過“類名.靜態變數”的方式引用,隱藏的例項變數就需要使用關鍵字this來引用,例如Student中的date和id;
如果一個區域性變數和一個類變數具有相同的名字,那麼區域性變數優先,而同名的類變數將被隱藏;
//在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;
}
}